2011-08-09 45 views
1

我正在開發使用GWT和GWTP的小型應用程序,但我對這些技術完全陌生,需要一些幫助。在首頁訪問中揭示GWTP中的nester主講人

我嘗試使用嵌套的演示者功能。但我有疑問,如果我理解它的意圖正確...

所以,我的應用程序應該有兩種框架中的項目列表。將它們視爲文件夾和文件。

我開發了MainPage視圖和主持人,它只有幾個佈局面板。我想實現我的項目列表(以自定義小部件表示)作爲單獨的演示者。例如,如果他們被稱爲ItemsListPresenter

我在MainPagePresenter中創建了插槽,實施了ItemsListPresenter.revealInParent()方法在該插槽中插入了演示者。

但是,我應該如何透露ItemsListPresenter?這是onBind()甚至沒有叫。

我知道,我必須爲此調用PlaceManager的方法。我的問題是,應如何實際執行此調用以符合最佳做法?

是不是可以將PlaceManager注入我的MainPagePresenter,並直接在onBind()方法中調用它的方法?

在此先感謝。

回答

3

您也可以實現您的MainPageView的setInSlot()方法,像這樣:

@Override 
public void setInSlot(Object slot, Widget content) { 
    if (slot == MainPagePresenter.TYPE_SetMainContent) { 
     mainContentPanel.clear(); 
     if (content != null) { 
      mainContentPanel.add(content); 
     } 

    } else { 
     super.setInSlot(slot, content); 
    } 
} 

其中MainPagePresenter.TYPE_SetMainContent是你的內容插槽,mainContentPanel是要揭示的面板的MainView嵌套主持人。此外,您的主要演示者不應該是一個地方,只有您的嵌套演示者是地方。

您可以使用PlaceManager中的方法以編程方式切換當前顯示的嵌套式演示文稿(一次只能顯示一個演示文稿)。您可以使用杜松子酒將PlaceManager注入到需要的地方。或者你可以在這樣的菜單使用超鏈接切換:

<g:InlineHyperlink targetHistoryToken="{nameTokens.getFistItemsListPage}"> 
    First items list 
</g:InlineHyperlink> 
<g:InlineHyperlink targetHistoryToken="{nameTokens.getSecondItemsListPage}"> 
    Second items list 
</g:InlineHyperlink> 

如果你想顯示一次幾個子主持人,你必須使用presenter widgets代替嵌套的主持人。

+0

謝謝!它的解釋比我預期的要多。 – edio