JFace 数据绑定映射 属性 到 SWT 文本字段
JFace Databinding Map Property to SWT Text Field
我正在尝试将地图 属性 绑定到简单的 SWT 文本小部件。
这是一些伪代码:
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(...)
那么它 returns 一个 IObservableMap
我不能在 dbc.bindValue(...)
.
使用
如果有人能解释如何正确地做,我会很高兴。
如果找不到合适的方法(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);
}
}
终于找到了...可以通过
观察地图条目
IObservableValue o = Observables.observeMapEntry(map, "test")
我正在尝试将地图 属性 绑定到简单的 SWT 文本小部件。
这是一些伪代码:
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(...)
那么它 returns 一个 IObservableMap
我不能在 dbc.bindValue(...)
.
如果有人能解释如何正确地做,我会很高兴。
如果找不到合适的方法(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);
}
}
终于找到了...可以通过
观察地图条目IObservableValue o = Observables.observeMapEntry(map, "test")