/** * @param target * @param validationStatus */ public ValidatedObservableList(final IObservableList<E> target, final IObservableValue<IStatus> validationStatus) { super(target.getRealm(), new ArrayList<>(target), target.getElementType()); Assert.isNotNull(validationStatus, "Validation status observable cannot be null"); //$NON-NLS-1$ Assert.isTrue(target.getRealm().equals(validationStatus.getRealm()), "Target and validation status observables must be on the same realm"); //$NON-NLS-1$ this.target = target; this.validationStatus = validationStatus; target.addListChangeListener(targetChangeListener); target.addStaleListener(targetStaleListener); validationStatus.addValueChangeListener(validationStatusChangeListener); }
protected void lastListenerRemoved() { if (listChangeListener != null) { for (int i = 0; i < lists.length; i++) { lists[i].removeListChangeListener(listChangeListener); } listChangeListener = null; } if (staleListener != null) { for (int i = 0; i < lists.length; i++) { lists[i].removeStaleListener(staleListener); } staleListener = null; } stale = null; }
@SuppressWarnings("unchecked") @Override public Iterator<E> iterator() { return this.list.iterator(); }
protected void lastListenerRemoved() { target.removeChangeListener(privateInterface); target.removeStaleListener(privateInterface); }
private void updateInnerObservableList() { if (innerObservableList != null) { innerObservableList.removeListChangeListener(innerChangeListener); innerObservableList.dispose(); } currentOuterValue = outerObservableValue.getValue(); if (currentOuterValue == null) { innerObservableList = null; wrappedList = Collections.EMPTY_LIST; } else { ObservableTracker.setIgnore(true); try { innerObservableList = (IObservableList) factory .createObservable(currentOuterValue); } finally { ObservableTracker.setIgnore(false); } DetailObservableHelper.warnIfDifferentRealms(getRealm(), innerObservableList.getRealm()); wrappedList = innerObservableList; if (detailType != null) { Object innerValueType = innerObservableList.getElementType(); Assert.isTrue(getElementType().equals(innerValueType), "Cannot change value type in a nested observable list"); //$NON-NLS-1$ } innerObservableList.addListChangeListener(innerChangeListener); } }
@Override public void handleListChange(ListChangeEvent event) { ListDiff diff = event.diff; for (ListDiffEntry listDiffEntry : diff.getDifferences()) { ValidationStatusProvider validationStatusProvider = (ValidationStatusProvider) listDiffEntry .getElement(); IObservableList targets = validationStatusProvider.getTargets(); if (listDiffEntry.isAddition()) { targets.addListChangeListener(validationStatusProviderTargetsListener); for (Iterator it = targets.iterator(); it.hasNext();) { ((IObservable) it.next()).addChangeListener(uiChangeListener); } } else { targets.removeListChangeListener(validationStatusProviderTargetsListener); for (Iterator it = targets.iterator(); it.hasNext();) { ((IObservable) it.next()).removeChangeListener(uiChangeListener); } } } } };
@Override protected void removeCollectionChangeListener( IObservableCollection collection, IObservablesListener listener) { IObservableList list = (IObservableList) collection; IListChangeListener listListener = (IListChangeListener) listener; list.removeListChangeListener(listListener); } }
/** * * @param masterList * @param detailFactory * @param detailType */ public ListDetailValueObservableList(IObservableList masterList, IObservableFactory detailFactory, Object detailType) { super(masterList.getRealm()); this.masterList = masterList; this.detailFactory = detailFactory; this.detailType = detailType; this.detailList = new ArrayList(); // Add change/stale/dispose listeners on the master list. masterList.addListChangeListener(masterListListener); masterList.addStaleListener(masterStaleListener); masterList.addDisposeListener(new IDisposeListener() { public void handleDispose(DisposeEvent event) { ListDetailValueObservableList.this.dispose(); } }); ListDiff initMasterDiff = Diffs.computeListDiff(Collections.EMPTY_LIST, masterList); handleMasterListChange(initMasterDiff); }
/** * @param masterList * @param valueProperty */ public ListDelegatingValueObservableList(IObservableList<T> masterList, DelegatingValueProperty<S, E> valueProperty) { super(masterList.getRealm()); this.masterList = masterList; this.detailProperty = valueProperty; this.cache = new DelegatingCache<S, T, E>(getRealm(), valueProperty) { @Override void handleValueChange(T masterElement, E oldValue, E newValue) { fireListChange(indicesOf(masterElement), oldValue, newValue); } }; cache.addAll(masterList); masterList.addListChangeListener(masterListener); masterList.addStaleListener(staleListener); }
/** * Returns a List with the current contents of the source's list property * * @param source * the property source * @return a List with the current contents of the source's list property * @noreference This method is not intended to be referenced by clients. * @since 1.6 */ protected List<E> doGetList(S source) { IObservableList<E> observable = observe(source); try { return new ArrayList<>(observable); } finally { observable.dispose(); } }
/** * @param list */ public ListToSetAdapter(IObservableList list) { super(list.getRealm(), new HashSet(), list.getElementType()); this.list = list; wrappedSet.addAll(list); this.list.addListChangeListener(listener); }
private void handleUIChanged() { uiChanged = true; if (currentStatus != null) { handleStatusChanged(); } dbc.getValidationStatusProviders().removeListChangeListener( validationStatusProvidersListener); for (Iterator it = dbc.getValidationStatusProviders().iterator(); it .hasNext();) { ValidationStatusProvider validationStatusProvider = (ValidationStatusProvider) it .next(); IObservableList targets = validationStatusProvider.getTargets(); targets .removeListChangeListener(validationStatusProviderTargetsListener); for (Iterator iter = targets.iterator(); iter.hasNext();) { ((IObservable) iter.next()) .removeChangeListener(uiChangeListener); } } }
@Override public void run() { knownMasterElements.addAll(masterList); masterList.addListChangeListener(masterListener); masterList.addStaleListener(staleListener); } });
public synchronized void dispose() { super.dispose(); if (outerObservableValue != null) { outerObservableValue.removeValueChangeListener(outerChangeListener); } if (innerObservableList != null) { innerObservableList.removeListChangeListener(innerChangeListener); innerObservableList.dispose(); } outerObservableValue = null; outerChangeListener = null; currentOuterValue = null; factory = null; innerObservableList = null; innerChangeListener = null; }
/** * @param target * @param valueType */ public DuplexingObservableValue(IObservableList target, Object valueType) { super(target.getRealm()); this.target = target; this.valueType = valueType; }
@Override protected void addCollectionChangeListener( IObservableCollection collection, IObservablesListener listener) { IObservableList list = (IObservableList) collection; IListChangeListener listListener = (IListChangeListener) listener; list.addListChangeListener(listListener); }
private boolean computeStaleness() { boolean stale = false; for (int i = 0; i < lists.length; i++) { if (lists[i].isStale()) { stale = true; break; } } return stale; }
/** * Creates an updater for the given control and list. For each element of * the list, a child widget of the composite will be created using * {@link #createWidget(int)}. * * @param toUpdate * composite to update * @param model * an observable list to track */ public CompositeUpdater(Composite toUpdate, IObservableList model) { this.theComposite = toUpdate; this.model = model; model.addListChangeListener(privateInterface); theComposite.addDisposeListener(privateInterface); ObservableTracker.setIgnore(true); try { int index = 0; for (Iterator it = CompositeUpdater.this.model.iterator(); it .hasNext();) { Object element = it.next(); createChild(element, index++); } } finally { ObservableTracker.setIgnore(false); } }
/** * Creates an updator for the given control. * * @param table * table to update * @param list * @since 1.2 */ public TableUpdater(Table table, IObservableList list) { this.table = table; this.list = list; Assert.isLegal((table.getStyle() & SWT.VIRTUAL) != 0, "TableUpdater requires virtual table"); //$NON-NLS-1$ table.setItemCount(list.size()); list.addListChangeListener(listChangeListener); table.addDisposeListener(privateInterface); table.addListener(SWT.SetData, privateInterface); }