Gwt 是否有更好的模式仅在值非空时显示OptionalFieldEditor?
我已经创建了一个由很多很多子编辑器组成的大型编辑器。其中一些需要处理可选的子结构,我将它们包装在Gwt 是否有更好的模式仅在值非空时显示OptionalFieldEditor?,gwt,design-patterns,gwt-editors,Gwt,Design Patterns,Gwt Editors,我已经创建了一个由很多很多子编辑器组成的大型编辑器。其中一些需要处理可选的子结构,我将它们包装在OptionalFieldEditor中 现在的问题是,我只想显示那个些子结构,若有这样的结构,若并没有,我想显示一个创建按钮 到目前为止,没有问题:如果我没有这个结构,只要用户单击create按钮,我就会隐藏编辑器面板,并使其可见 如果编辑器从一开始就已经填充了结构,则会出现问题。OptionalFieldEditor将不允许我获得通知或读取值以采用初始状态的显示。因此,无论值是多少,编辑器都保持不
OptionalFieldEditor
中
现在的问题是,我只想显示那个些子结构,若有这样的结构,若并没有,我想显示一个创建按钮
到目前为止,没有问题:如果我没有这个结构,只要用户单击create按钮,我就会隐藏编辑器面板,并使其可见
如果编辑器从一开始就已经填充了结构,则会出现问题。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);
}
}
}
公共类MyOptionalFieldEditor
扩展OptionalFieldEditor
{
公共接口ValueHandler{
无效接收值(HWR定义值);
}
ValueHandler;
受保护的MyOptionalFieldEditor(HwrDefinitionEditorView子编辑器,
ValueHandler(处理器)
{
超级(副编辑);
this.handler=handler;
}
@凌驾
公共无效设置值(HwrDefinition值){
super.setValue(值);
if(处理程序!=null){
handler.receivedValue(值);
}
}
}
谢谢
Thomas我们尝试了OptionalFieldEditor的各种功能,最终得到了与您类似的功能,尽管我们将UI部分和编辑器框架封装到了一个可重用的类中。最重要的是,我们有不同的变化-添加/删除按钮或隐式按钮,在字段中填充将添加/删除封面下的对象 我知道你所说的“它应该做得更多”是什么意思,但我认为它非常符合GWT的理念,即提供基本的构建块,而不是尝试进入不太确定的领域。OptionalFieldEditor本身似乎非常有用 也许你可以在某个地方共享你的代码,以避免别人不得不发明它