3

私はGWTPを使用しています。ネストされたプレゼンターのチュートリアルを行いました。ただし、SAMPLE TAB アプリケーション (管理者モードに切り替えると管理者タブが表示されるアプリケーション) のチュートリアルはありません。このアプリケーションの主な概念を説明してもらえますか? Tkx。

4

2 に答える 2

4

更新: 更新: ここから実行可能なサンプル Maven プロジェクトをダウンロードできるようになりました: gwtp-sample-tab.zip

プロジェクトでタブ付きプレゼンター機能をうまく使用できました (サンプル コードもコンパイルされていないことがわかりました)。最初にそれを機能させてから、それを学び、徐々にメリットを感じることだと思います:)

私が行った手順は次のとおりです。

1) 以下のファイルをコピーします

BaseTab.java
BaseTabPanel.java
SimpleTab.java
SimpleTabPanel.java
SimpleTab.ui.xml
SimpleTabPanel.ui.xml
UiModule.java

サンプル コードからプロジェクトへ。たとえば、次のパッケージにコピーしました: com.widenhome.web.client.ui. また、ClientGinjector クラスで UiModule を構成することを忘れないでください。

2) GWTP Eclipse プラグインを介して通常のプレゼンター (MyPresenter) を作成する

3) プレゼンターで EventBus インポート this を変更します

import com.google.web.bindery.event.shared.EventBus;

4) MyPresenterView.ui.xml に次のコードなどがあることを確認します。

<g:HTMLPanel>
  <npui:SimpleTabPanel ui:field="tabPanel" />
  <g:SimplePanel ui:field="contentPanel" />
</g:HTMLPanel>

5) プレゼンターを変更して、Presenter の代わりに TabContainerPresenter を拡張します。

public class MyPresenter extends
    TabContainerPresenter<MyPresenter.MyView, MyPresenter.MyProxy>

6) MyPresenter でいくつかの変数を定義するか、次のコードをコピーして貼り付けます。

/**
 * This will be the event sent to our "unknown" child presenters, in order
 * for them to register their tabs.
 */
@RequestTabs
public static final Type<RequestTabsHandler> TYPE_RequestTabs = new Type<RequestTabsHandler>();

/**
 * Fired by child proxie's when their tab content is changed.
 */
@ChangeTab
public static final Type<ChangeTabHandler> TYPE_ChangeTab = new Type<ChangeTabHandler>();

/**
 * Use this in leaf presenters, inside their {@link #revealInParent} method.
 */
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_SetTabContent = new Type<RevealContentHandler<?>>();

7) 変数を使用するように MyPresenter のコンストラクターを変更します。

@Inject
public MyPresenter(final EventBus eventBus, final MyView view, final MyProxy proxy) {
    super(eventBus, view, proxy, TYPE_SetTabContent, TYPE_RequestTabs, TYPE_ChangeTab);
}

8) これで、タブ プレゼンター (MyFirstTabPresenter など) の作成を開始できます。GWTP Eclipse プラグインを介して通常のプレゼンターを再度作成するだけです

9) MyFirstTabPresenter で、MyProxy を変更して、ProxyPlace の代わりに TabContentProxyPlace を「拡張」できるようにします。

10) @TabInfo メソッドを作成します。@TabInfo アノテーションの javadoc を参照してください。ここで他の方法を使用することもできます。たとえば、私はこれをしました:

@TabInfo(container = MyPresenter.class)
static TabData getTabLabel(ClientGinjector ginjector) {
    return new TabDataBasic("My First Tab", 0);
}

11) MyFirstTabPresenter クラスの RevealInParent() メソッドで、次のコードなどがあることを確認してください。

@Override
protected void revealInParent() {
    RevealContentEvent.fire(this, MyPresenter.TYPE_SetTabContent, this);
}

これはすべて、タブ付きプレゼンターの構成に関連しています。これで、MyFirstPresenter のビューに表示するデータをロードするロジックを追加できます。

これが GWTP Tabbed プレゼンターを使い始めるのに役立つことを願っています。問題があればお知らせください。回答を徐々に編集して完成させ、より多くの人が使い始めるのに役立つようにします。

ところで、これについてより多くの人を助けるために、これをブログにも投稿しました。

ありがとう、
ジクアン

于 2012-03-22T02:52:28.280 に答える
1

コンパイルさえしません。ネストされたプレゼンターを介して複数のプレゼンターをトリガーする唯一の方法 - これはあまりにも複雑です。簡単な GWT History メカニズムを使用して、痛みを伴うことなく複数のプレゼンター アプリを作成しました。このフレームワークは、GWT の歴史 (simple メカニズム) を非常に難解なものにしました。

于 2011-12-22T15:44:54.007 に答える