JFace数据绑定映射属性到SWT文本字段

时间:2015-07-22 10:07:55

标签: java dictionary data-binding swt jface

我正在尝试将map属性绑定到一个简单的SWT Text小部件。

这是一些伪代码:

value = new WritableValue();
WritableMap map = new WritableMap();
map.put("test", "test");
value.setValue(map);

IObservableValue target = WidgetProperties.text().observe(part.getTxt());
IObservableValue model = BeanProperties.value("test").observeDetail(value); 
dbc.bindValue(target, model);

这确实不起作用。如果我使用BeanProperties.map(...),则会返回IObservableMap dbc.bindValue(...),我无法在/script使用。

如果有人能解释如何正确地解释,我会很高兴。

2 个答案:

答案 0 :(得分:2)

终于找到了......可以通过

观察地图条目
IObservableValue o = Observables.observeMapEntry(map, "test")

答案 1 :(得分:1)

如果你找不到合适的方式(TM),你也可以写自己的IObservableValue,这并不难:

public class MapObservableValue extends AbstractObservableValue {

private final Map map;

public MapObservableValue(Map map) {
    this.map = map;
}

@Override
public Object getValueType() {
    return Object.class;
}

@Override
protected Object doGetValue() {
    return map.get("test");
}

@Override
protected void doSetValue(Object value) {
    map.put("test", value);
}
}