/** * @param itemsThatNeedLabels */ public ListeningLabelProvider ( final IObservableSet itemsThatNeedLabels ) { addSource ( itemsThatNeedLabels ); }
@Override public void handleSetChange ( final SetChangeEvent event ) { for ( final Iterator<?> it = event.diff.getAdditions ().iterator (); it.hasNext (); ) { addListenerTo ( it.next () ); } for ( final Iterator<?> it = event.diff.getRemovals ().iterator (); it.hasNext (); ) { removeListenerFrom ( it.next () ); } } };
protected void removeSource ( final IObservableSet observableSet ) { if ( observableSet == null ) { return; } for ( final Iterator<?> it = observableSet.iterator (); it.hasNext (); ) { removeListenerFrom ( it.next () ); } observableSet.removeSetChangeListener ( this.listener ); if ( !this.disposed ) { this.sources.remove ( observableSet ); } }
protected void addSource ( final IObservableSet observableSet ) { if ( observableSet == null ) { return; } this.sources.add ( observableSet ); observableSet.addSetChangeListener ( this.listener ); for ( final Iterator<?> it = observableSet.iterator (); it.hasNext (); ) { addListenerTo ( it.next () ); } }
@Override public void dispose () { if ( this.disposed ) { return; } this.disposed = true; for ( final IObservableSet set : this.sources ) { if ( !set.isDisposed () ) { for ( final Iterator<?> iter = set.iterator (); iter.hasNext (); ) { removeListenerFrom ( iter.next () ); } } set.removeSetChangeListener ( this.listener ); } super.dispose (); }