我有約6種形式用UIBinder設計,看起來差不多,差別是兩三個字段。我正在考慮建立一個包含所有可能字段的表單,並根據具體情況隱藏或顯示字段。如何用幾乎相似的外觀設計幾種形式?
您對這種方法有什麼看法?
我有約6種形式用UIBinder設計,看起來差不多,差別是兩三個字段。我正在考慮建立一個包含所有可能字段的表單,並根據具體情況隱藏或顯示字段。如何用幾乎相似的外觀設計幾種形式?
您對這種方法有什麼看法?
它可以很好地工作。您可以定義一個BaseForm
類UiBinder的實現HasWidgets
,然後用一些定義SpecificForm1.ui.xml像
<custom:BaseForm>
<g:TextBox ui:field="componentSpecificToThisForm" />
<g:Button>A button!</g:button>
</custom:BaseForm>
和SpecificForm2.ui.xml喜歡的東西
<custom:BaseForm>
<g:Label>Something totally different</g:Label>
<g:Button>A button!</g:button>
</custom:BaseForm>
它的偉大工程!
我試過類似的東西,建立一個窗體,我隱藏/顯示適當的字段是最簡單的解決方案。另一個想法是創建一個工廠,然後根據您的需求構建您的表單。因此,您基本上創建了您的表單所組成的組件,並且工廠通過構造函數依賴注入將它們連接在一起。對我來說工作得非常好,而且還有一個額外的好處,就是很容易擴展你的表單。
(我稍後會添加一個示例)。
使用'HasWidgets'而不是構造函數增加了使用UiBinder文件配置特定版本的好處,如果您的設計者不知道Java,這將特別好! –
因此,如果我理解您的解決方案,在BaseForm類中,我可以將SpecificForm1.ui.xml中的textBox和SpecificForm2.ui.xml中的Label組合起來? – outellou
當然 - 添加你喜歡的任何小部件。當你從'HasWidgets'實現'add(IsWidget)'時,你可以確定你會接受多少個小部件,以及如何處理它們。你也可以實現'HasOneWidget',只接受一個HTMLPanel或其他東西。 –