/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.v7.event; import java.io.Serializable; import java.util.Collection; import java.util.Collections; import java.util.EventObject; import java.util.LinkedHashSet; import java.util.Set; /** * An event that specifies what in a selection has changed, and where the * selection took place. * * @since 7.4 * @author Vaadin Ltd */ @Deprecated public class SelectionEvent extends EventObject { private LinkedHashSet<Object> oldSelection; private LinkedHashSet<Object> newSelection; public SelectionEvent(Object source, Collection<Object> oldSelection, Collection<Object> newSelection) { super(source); this.oldSelection = new LinkedHashSet<Object>(oldSelection); this.newSelection = new LinkedHashSet<Object>(newSelection); } /** * A {@link Collection} of all the itemIds that became selected. * <p> * <em>Note:</em> this excludes all itemIds that might have been previously * selected. * * @return a Collection of the itemIds that became selected */ public Set<Object> getAdded() { return setDifference(newSelection, oldSelection); } /** * A {@link Collection} of all the itemIds that became deselected. * <p> * <em>Note:</em> this excludes all itemIds that might have been previously * deselected. * * @return a Collection of the itemIds that became deselected */ public Set<Object> getRemoved() { return setDifference(oldSelection, newSelection); } /** * Slightly optimized set difference that can return the original set or a * modified one. * * @param set1 * original set * @param set2 * the set to subtract * @return the difference set */ private static <T> Set<T> setDifference(Set<T> set1, Set<T> set2) { if (set2.isEmpty()) { return set1; } else { LinkedHashSet<T> set = new LinkedHashSet<T>(set1); set.removeAll(set2); return set; } } /** * A {@link Collection} of all the itemIds that are currently selected. * * @return a Collection of the itemIds that are currently selected */ public Set<Object> getSelected() { return Collections.unmodifiableSet(newSelection); } /** * The listener interface for receiving {@link SelectionEvent * SelectionEvents}. */ @Deprecated public interface SelectionListener extends Serializable { /** * Notifies the listener that the selection state has changed. * * @param event * the selection change event */ void select(SelectionEvent event); } /** * The interface for adding and removing listeners for {@link SelectionEvent * SelectionEvents}. */ @Deprecated public interface SelectionNotifier extends Serializable { /** * Registers a new selection listener * * @param listener * the listener to register */ void addSelectionListener(SelectionListener listener); /** * Removes a previously registered selection change listener * * @param listener * the listener to remove */ void removeSelectionListener(SelectionListener listener); } }