2011-02-02 11 views
6

既存のプロジェクトではMVPを手作業で使っています。それは理解されており、主に私たちに必要なものです。新しいプロジェクトでは、GWT 2.1(Activities and Places)に組み込まれたMVPフレームワークを使用しています。GWT 2.1 MVP(Activities/Places)とタブ付きディスプレイ

私たちのアプリケーションはほとんどタブ付きのディスプレイで、各タブは1つのビューウィジェットにバインドされています。

このタイプのディスプレイでは、成功していないアクティビティとプレイスを使用しようとしました。問題の一部は、Hello Worldの例の記事が私の尾を追いかけることになってしまったこと、私の脳が消化するにはあまりにも多くの新しい概念が残っていることです。

Hello WorldサンプルのIMOは十分な紹介ではなく、実際の使用例の多くを扱っていません。私は誰かが、タブ付きのディスプレイにMVPを使用するサンプルアプリケーションの方向性を指摘してくれることを期待していました。 Thomas Broyer氏はブログで優れた記事を掲載していますが、まだまだ私には少し難解なものが残っています。

以前は、AppControllerを使用して各タブのタブの変更と単一のプレゼンターを処理しました。 GWT 2.1の新しいアーキテクチャでは、私はそれをもっと混乱させてしまいます。

答えて

1

私は使用していたTabLayoutPanelウィジェットを放棄して、自分のnavbar(タブのように見える)を作成することにしました。これは、タブ表示にgwt Activities/Placesフレームワークを使用しています。コンテンツペイン。効果は同じです - 同じに見えますが、実装ははるかにクリーンです。

ナビゲーションの別のアイデアを持っているTabPanelで、ナビゲーションの独自のアイデアを持つActivities/Placesを混在させようとするのが問題だと思います。最初は、それらをまとめて投げて、Tabボタンの動作を無効にしてPlaceControllerをトリガーして、タブを切り替えましたが、面倒でした。独立したnavbar/contentペインを使って、PlaceControllerは望むようにすべてを行うことができます。あなたはTabPanelにあなたのためにそれをさせるのではなく、手動でビューを切り替えなければなりません。

1

私もこの問題に直面しましたが、タブごとに1つのアクティビティを使用し、タブのコンポーネントを表示するためにプレゼンタ(またはそれ以上)を使用して各アクティビティを使用するように管理しました。

Riley Larkが見つけた解決策については、私は代わりにDecoratorパターンを使用して、元のTabbedPanelを保持しました。どうやって ?各アクティビティは、TabbedPanelのデコレータを含むプレゼンタを注入(GIN)します。

したがって、たとえば:

  • Tab1Activityは(このパネルが上に表示されるすべてのウィジェットが含まれていTab1ContentPanelでTabbedPanelを飾る順番に、Tab1Decoratorを注入します、Tab1Presenter、を注入しますTAB1タブ)

  • Tab2Activityは順番に、

  • (このパネルは、TAB2]タブに表示されるすべてのウィジェットが含まれています)Tab2ContentPanelと同じTabbedPanelを飾るどのTab2Decoratorを注入します、Tab2Presenter、を注入します

最初のデコレータを作成した後、それは本当に完済しました。私はTabbedPanelを保持し、フレームワークで暗黙のURL履歴管理を利用することができました。

+0

GWTにTabbedPanelはありません。Quarkモードでのみ動作するTabPanelと、ActivityManagerで受け入れられないTabLayoutPanelがあります。私はこのアプローチを試したが、うまくいきません。コードを表示したり、さらに詳しく説明してください。 – Saad

関連する問題