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