2

私は GWT の初心者で、Activity、Place、EventBus、および UIbinder の使用方法について疑問に思っています。私のアプリのレイアウトは次のようになります。

ウィジェット 1:

<g:DockLayoutPanel ui:field="myPanel" unit='PX'>
    <g:north size='60'>
        <m:HeaderPanelImpl styleName='{res.style.panelBorder}' ui:field='headerPanel' />
    </g:north>
    <g:south size='60'>
        <g:HTMLPanel styleName='{res.style.panelBorder}' ui:field='footerPanel' />
    </g:south>
    <g:center>
        <g:SimpleLayoutPanel styleName='{res.style.panelBorder}' ui:field='centerPanel' />
    </g:center>
</g:DockLayoutPanel>

ここで「widget1.headerPanel」には、「widget1.centerPanel」に表示されるウィジェットを制御するナビゲーションがあります。「widget1.centerPanel」に表示する必要があるウィジェットは、「widget2.0」と「widget2.1」です。

ウィジェット2.0

<g:DockLayoutPanel unit='PX'>
    <g:north size='100'>
        <g:HTMLPanel styleName='{res.style.panelBorder}'>
            <g:Label>TopPanel</g:Label>
        </g:HTMLPanel>
    </g:north>
    <g:west size='200'>
        <g:HTMLPanel styleName='{res.style.panelBorder}'>
            <g:Label>LeftPanel</g:Label>
        </g:HTMLPanel>
    </g:west>
    <g:east size='200'>
        <g:HTMLPanel styleName='{res.style.panelBorder}'>
            <g:Label>RightPanel</g:Label>
        </g:HTMLPanel>
    </g:east>
    <g:center>
        <g:SimpleLayoutPanel styleName='{res.style.panelBorder}' ui:field='centerPanel' />
    </g:center>
</g:DockLayoutPanel>

ウィジェット2.1

<g:HTMLPanel>
    <g:Label>Settings</g:Label>
</g:HTMLPanel>

「widget2.0.topPanel」には、「widget2.0.centerPanel」に表示されるウィジェットを制御するナビゲーションがあります「widget2.centerPanel」に表示する必要があるウィジェットは「widget3.0」と「widget3.1」です」。

Widget3.0

<g:HTMLPanel>
    <g:Label>Content 1</g:Label>
</g:HTMLPanel>

ウィジェット3.1

<g:HTMLPanel>
    <g:Label>Content 2</g:Label>
</g:HTMLPanel>

私の質問は、「onPlaceChangeEvent」を処理する方法ですか?

たとえば、url が mydomain.com/myapp.html#home:content1
の場合、アプリはウィジェット 1、ウィジェット 2.0、およびウィジェット 3.0 を表示する必要があります。

URL が mydomain.com/myapp.html#home:content2
の場合、アプリは widget1、widget 2.0、widget 3.1 を表示する必要があります。

URL が mydomain.com/myapp.html#settings
の場合、アプリは widget1 と widget 2.1 を表示する必要があります

私は2つのバリアントの間で疑問に思っています:

  1. 2 つの ActivityManager を作成します。1 つは widget1.navigation のアクティビティ用で、もう 1 つは widget2.navigation のアクティビティ用です。しかし、widget2 が wi​​dget1 の前に作成された場合はどうなるでしょうか?
  2. カップル ビューを作成する 1 つのアクティビティを作成します。

コード:例

public class MonthlyViewActivity extends AbstractActivity implements MonthlyView.Presenter {

    private Widget2_0 widget2_0;
    private Widget3_0 widget3_0;

    ......
    public void start(AcceptsOneWidget panel, EventBus eventBus) {
        widget2_0 = new Widget2_0();
        widget3_0 = new Widget3_0();
    ..........
    }
    .... 
}

この場合のベストプラクティスは何ですか?

4

1 に答える 1

0

Eclipse を使用している場合、プロジェクトで MVP アーキテクチャを作成すると、アクティビティ、場所、1 つのインターフェイス、1 つの実装クラス、および対応する ui xml クラスなどの多くのファイルが作成されます。アクティビティ マッパーとアクティビティ履歴マネージャー クラスを作成する必要があります。on lode モジュールで、アプリケーションのデフォルトの場所を設定します。イベント呼び出しの単語の後、任意の場所のメソッドに移動し、ページのリンクを提供し、その値に基づいてトークン amd の値を取得して、表示したいウィジェットを表示することを確認します。

于 2012-11-08T04:00:57.697 に答える