public synchronized void addValueChangingListener( IValueChangingListener listener) { addListener(ValueChangingEvent.TYPE, listener); }
/** * Notifies listeners about a pending change, and returns true if no * listener vetoed the change. * * @param diff * @return false if the change was vetoed, true otherwise */ protected boolean fireValueChanging(ValueDiff diff) { checkRealm(); ValueChangingEvent event = new ValueChangingEvent(this, diff); fireEvent(event); return !event.veto; } }
public synchronized void removeValueChangingListener( IValueChangingListener listener) { removeListener(ValueChangingEvent.TYPE, listener); }
public void setValue(Object value) { checkRealm(); Object currentValue = getValue(); ValueDiff diff = Diffs.createValueDiff(currentValue, value); boolean okToProceed = fireValueChanging(diff); if (!okToProceed) { throw new ChangeVetoException("Change not permitted"); //$NON-NLS-1$ } super.setValue(value); }
@Override protected void firstListenerAdded() { super.firstListenerAdded(); WidgetListenerUtil.asyncAddListener(widget, SWT.Verify, verifyListener); }
@Override protected void lastListenerRemoved() { WidgetListenerUtil.asyncRemoveListener(widget, SWT.Verify, verifyListener); super.lastListenerRemoved(); }
@Override public synchronized void dispose() { WidgetListenerUtil.asyncRemoveListener(widget, SWT.Verify, verifyListener); WidgetListenerUtil.asyncRemoveListener(widget, SWT.Dispose, disposeListener); this.widget = null; super.dispose(); }