仅当值为非null时,是否有更好的模式来显示OptionalFieldEditor?

时间:2014-11-28 20:23:19

标签: gwt design-patterns gwt-editors

我创建了一个由许多子编辑器组成的大型编辑器。其中一些需要处理可选的子结构,我将它们包装在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);
        }
    }
}

谢谢,

托马斯

1 个答案:

答案 0 :(得分:0)

我们使用OptionalFieldEditor尝试了各种各样的东西,最后得到了类似于你的东西,尽管我们封装了UI部分并将编辑器框架管理成一个可重用的类。除此之外,我们有不同的变化 - 使用添加/删除按钮或隐含的按钮,填充字段将添加/删除封面下的对象。

我知道你的意思&#34;它应该做得更多&#34;但我认为它很适合GWT提供基本构建模块的理念,而不是试图冒险进入不太确定的领域。 OptionalFieldEditor本身似乎非常有用。

也许你可以在某个地方分享你的代码以节省别人不得不发明它?