001/* 002 * #%L 003 * GwtMaterial 004 * %% 005 * Copyright (C) 2015 - 2017 GwtMaterialDesign 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package gwt.material.design.addins.client.combobox.events; 021 022import com.google.gwt.event.shared.EventHandler; 023import com.google.gwt.event.shared.GwtEvent; 024import gwt.material.design.addins.client.combobox.base.HasUnselectItemHandler; 025 026import java.util.List; 027 028/** 029 * Combobox event fired once user removes an item from multiple list selection. 030 * 031 * @author kevzlou7979 032 */ 033public class UnselectItemEvent<T> extends GwtEvent<UnselectItemEvent.UnselectComboHandler<T>> { 034 035 private static Type<UnselectItemEvent.UnselectComboHandler<?>> TYPE; 036 037 public interface UnselectComboHandler<T> extends EventHandler { 038 void onUnselectItem(UnselectItemEvent<T> event); 039 } 040 041 public static <T> void fire(HasUnselectItemHandler<T> source, List<T> values) { 042 if (TYPE != null) { 043 source.fireEvent(new UnselectItemEvent<>(values)); 044 } 045 } 046 047 public static Type<UnselectItemEvent.UnselectComboHandler<?>> getType() { 048 return TYPE != null ? TYPE : (TYPE = new Type<>()); 049 } 050 051 private final List<T> values; 052 053 protected UnselectItemEvent(List<T> values) { 054 this.values = values; 055 } 056 057 @Override 058 public final Type<UnselectItemEvent.UnselectComboHandler<T>> getAssociatedType() { 059 return (Type) TYPE; 060 } 061 062 public List<T> getSelectedValues() { 063 return values; 064 } 065 066 @Override 067 protected void dispatch(UnselectItemEvent.UnselectComboHandler<T> handler) { 068 handler.onUnselectItem(this); 069 } 070}