@Override public void run() { knownMasterElements.addAll(masterList); masterList.addListChangeListener(masterListener); masterList.addStaleListener(staleListener); } });
protected void firstListenerAdded() { if (privateInterface == null) privateInterface = new PrivateInterface(); target.addChangeListener(privateInterface); target.addStaleListener(privateInterface); }
lists[i].addStaleListener(staleListener);
/** * @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); }
/** * @param target * @param validationStatus */ public ValidatedObservableList(final IObservableList target, final IObservableValue 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); }
/** * @param target * @param validationStatus */ public ValidatedObservableList(final IObservableList target, final IObservableValue 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); }
/** * @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); }
/** * @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); }
/** * * @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); }
@Override protected void firstListenerAdded() { ObservableTracker.setIgnore(true); try { knownMasterElements = new IdentityObservableSet<M>(getRealm(), null); } finally { ObservableTracker.setIgnore(false); } cachedValues = new IdentityMap<>(); staleElements = new IdentitySet<>(); knownMasterElements.addSetChangeListener(event -> { for (M key1 : event.diff.getRemovals()) { if (detailListener != null) detailListener.removeFrom(key1); cachedValues.remove(key1); staleElements.remove(key1); } for (M key2 : event.diff.getAdditions()) { cachedValues.put(key2, detailProperty.getValue(key2)); if (detailListener != null) detailListener.addTo(key2); } }); getRealm().exec(() -> { knownMasterElements.addAll(masterList); masterList.addListChangeListener(masterListener); masterList.addStaleListener(staleListener); }); }