GWT的编辑器框架非常方便,它不仅可用于编辑POJO,而且还可用于只读显示。GWT只读和编辑模式的编辑器
但是我不完全确定内联编辑的最佳做法是什么。
我们假设我有一个PersonProxy
,并且我有一个Presenter-View
对用于显示和编辑PersonProxy
。此Presenter-View应该默认以只读模式显示PersonProxy
,并且如果用户按下编辑按钮,它应该允许用户编辑PersonProxy
对象。
我想出了解决的办法是创建两个编辑器(PersonEditEditor
和PersonDisplayEditor
),无论通过UiBinder
加入View
。 PersonEditEditor
包含 ValueBoxEditorDecorator
s和PersonDisplayEditor
包含正常Labels
。
最初我显示PersonDisplayEditor
并隐藏PersonEditEditor
。
在View
中,我为每个编辑器创建了两个RequestFactoryEditorDriver
,并通过View
接口使其可从Presenter
访问。我还在View
界面中定义了一个setState()
方法。
当第一次显示Presenter
时,我会拨打PersonDisplayDriver.display()
和setState(DISPLAYING)
。
当用户点击编辑按钮,我叫PersonEditDriver.edit()
和setState(EDITING)
从我Presenter
。
setState(EDITING)
将隐藏PersonDisplayEditor
并使PersonEditEditor
可见。
我不确定这是否是最好的方法。如果不是推荐的内嵌编辑方法是什么?对编辑进行单元测试的最佳方式是什么?
如果我不理解问题错误,那么你想编辑/查看PersonProxy对象的功能。为什么要为一个对象创建两个Presenter-View?如果假设GUI除了小部件可见性以外还有相同的编辑/查看,那么你可以通过make方法实现,它将设置控制属性,如control.setEnabled(false);仅供查看(显示)。 – iMBMT
我有两个单独的编辑器用于编辑/查看。一种是使用标签和其他文本框。 我想避免使用两个Presenter-View对,因为代码大部分是冗余的或者是多余的(用于显示它只是在只读驱动程序上调用display()并且为了编辑而调用edit())。 Presenter-View par更像是一个工作流程的东西。 –
@Ümit我采用完全相同的方法... – koma