私はGWTPを使用しています。ネストされたプレゼンターのチュートリアルを行いました。ただし、SAMPLE TAB アプリケーション (管理者モードに切り替えると管理者タブが表示されるアプリケーション) のチュートリアルはありません。このアプリケーションの主な概念を説明してもらえますか? Tkx。
2 に答える
更新: 更新: ここから実行可能なサンプル 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 プレゼンターを使い始めるのに役立つことを願っています。問題があればお知らせください。回答を徐々に編集して完成させ、より多くの人が使い始めるのに役立つようにします。
ところで、これについてより多くの人を助けるために、これをブログにも投稿しました。
ありがとう、
ジクアン
コンパイルさえしません。ネストされたプレゼンターを介して複数のプレゼンターをトリガーする唯一の方法 - これはあまりにも複雑です。簡単な GWT History メカニズムを使用して、痛みを伴うことなく複数のプレゼンター アプリを作成しました。このフレームワークは、GWT の歴史 (simple メカニズム) を非常に難解なものにしました。