我创建了一个由许多子编辑器组成的大型编辑器。其中一些需要处理可选的子结构,我将它们包装在一个OptionalFieldEditor
.
现在的问题是,如果有这样的结构,我只想显示那些子结构,如果没有,我想显示一个创建按钮。
到目前为止,没问题:如果我开始时没有该结构,我将简单地隐藏编辑器面板,并使其可见,只要用户单击创建按钮。
如果编辑器从一开始就已经填充了结构,则会出现问题。OptionalFieldEditor 不允许我收到通知或读取值以将显示显示为初始状态。因此,尽管有值,编辑器仍保持不可见,或者编辑器可见,但未设置任何值。
为了解决这个问题,我实现了一个派生编辑器,如果它的方法被调用OptionalField
,它将通知回调。setValue()
但我想,这应该是 的经典用例,那OptionalFieldEditor
我为什么要发明这个呢?也许我只是愚蠢地理解正确的方法,所以我在这里问。这是一个有效的模式,还是在编辑器框架中有一个工具可以让这变得简单?
这是代码:
public class MyOptionalFieldEditor
extends OptionalFieldEditor<HwrDefinition, HwrDefinitionEditorView>
{
public interface ValueHandler {
void receivedValue(HwrDefinition value);
}
ValueHandler handler;
protected MyOptionalFieldEditor( HwrDefinitionEditorView subEditor,
ValueHandler handler )
{
super( subEditor );
this.handler = handler;
}
@Override
public void setValue(HwrDefinition value) {
super.setValue( value );
if( handler != null ) {
handler.receivedValue(value);
}
}
}
谢谢,
托马斯