【问题标题】:Eclipse DatabindingContext valuechange Listener => dirtyEclipse DatabindingContext valuechange 监听器 => 脏
【发布时间】:2015-07-15 09:39:31
【问题描述】:

我有一个对话框来显示一些值。现在我需要知道用户是否更改了某些内容。

所有字段都包装在 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);

任何想法如何实现这一目标?

最好的问候

【问题讨论】:

    标签: java eclipse listener dirty-data


    【解决方案1】:

    我用:

    IObservableValue setError = PojoProperties.value("error").observe(new SetError());
    
    bindingContext.bindValue(setError, new AggregateValidationStatus(bindingContext.getBindings(), AggregateValidationStatus.MAX_SEVERITY));
    
    
    private class SetError
    {
      public IStatus getError()
      { 
        return ValidationStatus.ok();
      }
    
      public void setError(final IStatus status)
      {
        final String msg = status.isOK() ? null : status.getMessage();
    
        // TODO deal with message / status
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多