我创建了一个由许多子编辑器组成的大型编辑器。其中一些需要处理可选的子结构,我将它们包装在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);
}
}
}
谢谢,
托马斯
答案 0 :(得分:0)
我们使用OptionalFieldEditor尝试了各种各样的东西,最后得到了类似于你的东西,尽管我们封装了UI部分并将编辑器框架管理成一个可重用的类。除此之外,我们有不同的变化 - 使用添加/删除按钮或隐含的按钮,填充字段将添加/删除封面下的对象。
我知道你的意思&#34;它应该做得更多&#34;但我认为它很适合GWT提供基本构建模块的理念,而不是试图冒险进入不太确定的领域。 OptionalFieldEditor本身似乎非常有用。
也许你可以在某个地方分享你的代码以节省别人不得不发明它?