0

いくつかの値を表示するダイアログがあります。ここで、ユーザーが何かを変更したかどうかを知る必要があります。

すべてのフィールドは、Eclipse の DatabindingContext にラップされます。

...
bindingContext.bindValue(process_observable_milage, process_bean_mileage, new UpdateValueStrategy(), null);
...

一部のフィールドを変更すると、モデル内の propertyChangeSupport リスナーが起動します。(プロパティのセッターが呼び出されます)。

this.firePropertyChange(SignalEntity.SIGNALNAME, this.signalname, this.signalname = name);

ここで、値が変更されたかどうかを検出するグローバル リスナーが必要です。

私は成功せずに次のように試しました:

    IObservableValue globalValidity = new WritableValue();
    globalValidity.addChangeListener(new IChangeListener() {
        @Override
        public void handleChange(ChangeEvent event) {
             dirty = true;
        }
    });
    bindingContext.bindValue(globalValidity, new AggregateValidationStatus(bindingContext.getBindings(), AggregateValidationStatus.MAX_SEVERITY), null, null);

これは、いくつかの afterConvertValidators が追加された別のクラスからのものです。そのため、代わりに「addValueChangeListener」を使用する必要があると考えましたが、これでも機能しません。

    IObservableValue globalValidity = new WritableValue();
    globalValidity.addValueChangeListener(new IValueChangeListener() {
        @Override
        public void handleValueChange(ValueChangeEvent event) {
            dirty = true;
        }
    });
    bindingContext.bindValue(globalValidity, new AggregateValidationStatus(bindingContext.getBindings(), AggregateValidationStatus.MAX_SEVERITY), null, null);

これを達成する方法はありますか?

よろしくお願いします

4

1 に答える 1