本,TabContainerPresenter只適用於每個標籤都是位置的情況。至於你的問題,你只需要在每個標籤中設置相同的演示者小部件。您可能希望演示者小部件不要成爲單身人士,如果您將它們注入多個選項卡中。這是在主演示者在槽設置演示窗口小部件的一個示例:
@Override
protected void onBind() {
super.onBind();
setInSlot(TYPE_PermitContent, permitPresenter);
setInSlot(TYPE_ErpMessageContent, orgErpMessagePresenter);
setInSlot(TYPE_ContractDetailContent, contractDetailPresenter);
}
然後在視圖中,我的樣品許可證和ERP是在TabLayoutPanel選項卡:
@Override
public void setInSlot(Object slot, Widget content) {
if (content == null) return;
if (slot == ContractPopupWithTabPresenter.TYPE_PermitContent) {
permit.clear();
permit.add(content);
} else if (slot == ContractPopupWithTabPresenter.TYPE_ErpMessageContent) {
erp.clear();
erp.add(content);
} else if (slot == ContractPopupWithTabPresenter.TYPE_ContractDetailContent) {
contractDetail.clear();
contractDetail.add(content);
} else {
super.setInSlot(slot, content);
}
}
然後添加一個beforeSelection您的TabLayoutPanel上它可能看起來像這樣的處理程序:
tabPanel.addBeforeSelectionHandler(new BeforeSelectionHandler<Integer>() {
@Override
public void onBeforeSelection(BeforeSelectionEvent<Integer> event) {
//TODO: Set your presenter widget here with whatever argument it needs to populate itself
}
});
希望這會有所幫助。
你是對的 - 但我有相同的主持人的實例數量未知 - 在幾個選項卡中打開。所以它必須是一個PresenterWidget。至於URL的持久性 - 我認爲有父節選器(持有標籤容器,並有一個位置)來實現perpareFromRequest(),檢查一些tabId參數,並切換到相關的選項卡。 所以我仍然不明白如何在TabLayoutPanel的某些常規小部件(如TabContainerPresenter JavaDoc中編寫的)中託管PresenterWidget,並且仍然支持演示者生命週期。 –