2011-10-28 52 views
2

對複雜視圖使用mvp有疑問。 假設,我們有一些像這樣的小部件樣板設計(ListWidget):
GWT中的MVP。複雜視圖

控制按鈕的ContentPanel(只需定期CellTable數據)和DetailsPanel(在這裏我們可以編輯特定條目之間切換的功能,這是沒有模態對話框)

DetailsPanel,反過來,有這樣的結構

出Button1,Button2將Button3只應處理DetailsPanel和改變ActionPanel(ActionPanel某種精靈的,因此它的內容應該是TOTT點擊按鈕1,按鈕2或按鈕3後會改變),但按鈕保存並取消應該導航回到ListWidget。

  1. 我應該用什麼方法來實現所描述的功能?
  2. 我應該在主環境中使用2個不同的ActivityManagers嗎?
  3. 如何管理和廣播消息到ListWidget上的從屬面板? (可以將處理程序放在視圖中,並在某些操作中將事件推入內部事件總線? 例如,當我將項目保存在DetailsPanel中時,PreviewPanel應該更改並且此項目應該集中在CellTable中;等等)
  4. 如果我應該與兩個不同的ActivityManagers一起使用模式,我應該如何處理活動更改行爲?

謝謝,希望有人幫助我。

+0

https://groups.google.com/group/google-web-toolkit/browse_thread/thread/2812e1b15a2a98a6?hl=de 也許這將幫助別人 – Denis

+0

如果你想回答你自己的問題,請隨時這樣做!但是,請至少解釋鏈接文本的要點(如果鏈接斷開,除非提供上下文,否則答案也會中斷)。 –

回答

1

我在回答你的問題,先簡要說明,然後逐點提出你的問題。

在框架層面,你可以有一個實現ValueChangeHandler一類和使用History.addValueChangeHandler(controller);假設控制器設置在歷史正在實施價值變動處理

任何的newitem你乾脆把歷史與History.newItem("NameOfAction")將調用執行ValueChangeHandler這在這種情況下將controller 現在執行的ValueChangeHandler內可以

String token = event.getValue(); 
if (token.equals("NameOfAction")) { 
    Call Appropriate presenter 
} 

現在讓我們來談談FRAM的第二部分ework,主持人和視圖實現。我假設RootPanel是所有UI小部件的容器。您可以爲每個動作創建單獨的主持人

presenter = new ActionPresenter(rpc, eventbus, new ActionView())

請注意,我創建一個視圖,並傳遞到主持人,主持人獲取數據,並建立與數據的視圖。稍後您可以將容器傳遞給演示者,以在UI上顯示整個事件。

現在關於你的具體問題

  1. MVP會在這裏你最好的選擇上MVP here文章很不錯
  2. 我沒有看到一個理由使用2個活動管理者,只要你的容器這些小部件是相同的
  3. EventBus將是理想的。如果你必須通過與事件相關的數據,會話變量像在主類的靜態場將服務器的目的
  4. 我需要你希望把它經理

希望這有助於正是更多詳情!