1 /******************************************************************************* 2 * Copyright (c) 2006, 2015 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 * Matthew Hall - bug 237718 14 * Stefan Xenos <sxenos@gmail.com> - Bug 335792 15 *******************************************************************************/ 16 17 package org.eclipse.core.databinding.observable.set; 18 19 import java.util.Collection; 20 import java.util.Iterator; 21 import java.util.Set; 22 23 import org.eclipse.core.databinding.observable.IObservableCollection; 24 25 /** 26 * A set whose changes can be tracked by set change listeners. 27 * 28 * @param <E> 29 * the type of the elements in this set 30 * 31 * @noimplement This interface is not intended to be implemented by clients. 32 * Clients should instead subclass one of the classes that 33 * implement this interface. 34 * <p> 35 * Authors of extensions to the databinding framework may extend 36 * this interface and indirectly implement it, but if doing so must 37 * also extend one of the framework classes. (Use an API problem 38 * filter to suppress the resulting warning.) 39 * <p> 40 * Direct implementers of this interface outside of the framework 41 * will be broken in future releases when methods are added to this 42 * interface. 43 * 44 * @see AbstractObservableSet 45 * @see ObservableSet 46 * 47 * @since 1.0 48 * 49 */ 50 public interface IObservableSet<E> extends Set<E>, IObservableCollection<E> { 51 52 /** 53 * @param listener the change listener to add; not <code>null</code> 54 */ addSetChangeListener(ISetChangeListener<? super E> listener)55 public void addSetChangeListener(ISetChangeListener<? super E> listener); 56 57 /** 58 * @param listener the change listener to remove; not <code>null</code> 59 */ removeSetChangeListener(ISetChangeListener<? super E> listener)60 public void removeSetChangeListener(ISetChangeListener<? super E> listener); 61 62 /** 63 * @return the element type or <code>null</code> if untyped 64 */ 65 @Override getElementType()66 public Object getElementType(); 67 68 /** 69 * @TrackedGetter 70 */ 71 @Override size()72 int size(); 73 74 /** 75 * @TrackedGetter 76 */ 77 @Override isEmpty()78 boolean isEmpty(); 79 80 /** 81 * @TrackedGetter 82 */ 83 @Override contains(Object o)84 boolean contains(Object o); 85 86 /** 87 * @TrackedGetter 88 */ 89 @Override iterator()90 Iterator<E> iterator(); 91 92 /** 93 * @TrackedGetter 94 */ 95 @Override toArray()96 Object[] toArray(); 97 98 /** 99 * @TrackedGetter 100 */ 101 @Override toArray(T a[])102 <T> T[] toArray(T a[]); 103 104 // Modification Operations 105 106 /** 107 * @TrackedGetter 108 */ 109 @Override add(E o)110 boolean add(E o); 111 112 /** 113 * @TrackedGetter 114 */ 115 @Override remove(Object o)116 boolean remove(Object o); 117 118 // Bulk Operations 119 120 /** 121 * @TrackedGetter 122 */ 123 @Override containsAll(Collection<?> c)124 boolean containsAll(Collection<?> c); 125 126 /** 127 * @TrackedGetter 128 */ 129 @Override addAll(Collection<? extends E> c)130 boolean addAll(Collection<? extends E> c); 131 132 /** 133 * @TrackedGetter 134 */ 135 @Override retainAll(Collection<?> c)136 boolean retainAll(Collection<?> c); 137 138 /** 139 * @TrackedGetter 140 */ 141 @Override removeAll(Collection<?> c)142 boolean removeAll(Collection<?> c); 143 144 // Comparison and hashing 145 146 /** 147 * @TrackedGetter 148 */ 149 @Override equals(Object o)150 boolean equals(Object o); 151 152 /** 153 * @TrackedGetter 154 */ 155 @Override hashCode()156 int hashCode(); 157 158 } 159