0

これが私の問題です。ヘッダー プレゼンターに多くのリンクがあります。

Link1 - Link2 - Link3 - GuideDialogLink

ユーザーが Link1 または Link2 または Link3 をクリックすると、新しいブラウザが開きます。

ただし、ユーザーが GuideDialogLink をクリックすると、現在のリンクの上に DialogBox がポップアップ表示されます。

GuideDialog は、ユーザーが滞在しているリンクに応じて異なる GUI を表示するように設計されています。そのコードは次のようになります。

 class GuideDialog extends DialogBox{
    public GuideDialog(int whichLink){
       if(whichLink==0){
           //show Gui 1 
       }
       else if(whichLink==2){
           //show Gui 2 
       }
       else if(whichLink==3){
           //show Gui 3 
       }
    }
 }

たとえば、ユーザーが Link3 にとどまっているときに GuideDialogLink をクリックすると、ユーザーが Link1 または Link2 にとどまっている場合、Gui1 または Gui2 とは異なる Gui3 を持つ DialogBox が表示されます。

だから、私の質問は:

現在のプレゼンターを取得する方法はありますか?

どのプレゼンターが現在のプレゼンターであるかがわかっている場合は、それに応じて GuideDialog を呼び出すことができます。例:GuideDialog myGD=new GuideDialog(0);

-他の解決策はpublic static int currentLinkUtilityクラス内に保存することです。また、ユーザーが link1 または link2 または link3 をクリックすると、EventBus を使用して、public static currentLinkそれに応じて最終的に設定するように設定できますGuideDialog myGD=new GuideDialog(Utility.currentLink);

しかし、Googleには現在どのページにいるのかを知らせる機能が必要なので、このソリューションはエレガントではないと思います.

では、どうすれば問題をエレガントに解決できますか?

編集

わかりました、それを明確にさせてください。GWTP を使用して webapp を作成しています。

-1 つ目は、Eclipse を使用して HeaderPresenter を生成しました。日食は (HeaderPresenter.java、HeaderView.java & HeaderView.ui.xml) を作成します。HeaderPresenter には、link1、link2、link3、GuideDialogLink の 4 つのハイパーリンクがあります。

-2番目に、Link1Presenter (Link1Presenter.java、Link1View.java、Link1View.ui.xml) を作成しました。次に、Link2Presenter (Link2Presenter.java、Link2View.java、Link2View.ui.xml) を作成しました。次に、Link3Presenter (Link3Presenter.java、Link3View.java、Link3View.ui.xml) を作成しました。

-3setInSlot番目に、Link1Presenter、Link2Presenter、Link3Presenter を HeaderPresenter 内に埋め込んだり入れ子にしたりしていました。これは、ユーザーが link1 (例: abc.com#link1) にアクセスすると、4 つのハイパーリンク (link1、link2、link3、GuideDialogLink) が表示されることを意味します。リンク 2 (例: abc.com#link2) またはリンク 3 にアクセスすると、4 つのハイパーリンクも表示されます。

-4番目に、GuideDialog.javaを作成してDialogBoxを拡張し、HeaderPresenterで拡張します。guideDialogLink.addClickHandler(new ClickHandler(){ GuideDialog myGD=new GuideDialog (int whichLink); });

ユーザーが link1、2、または 3 のいずれかにいる場合、GuideDialogLink が表示されますよね? & 彼らが GuideDialog をクリックすると、DialogBox がポップアップしますか?

私の要件は、ユーザーが Link1 にいて、GuideDialogLink をクリックすると、ダイアログがポップアップして、Gui (2 つのテキストボックス) が表示されることです。ユーザーが Link2 にいて、GuideDialogLink をクリックすると、ダイアログがポップアップし、別の GUI (2 つのラベル) が表示されます。ユーザーがLink3にいて、GuideDialogLinkをクリックすると、ダイアログがポップアップして別のGuiが表示されます(2つのチェックボックスが表示されます)

4

3 に答える 3

0

答えはとてもシンプルでした。

まず、新しいリンクを開くときに、 whichLink のようなパラメーターを追加できます。元my.com#link1;whichLink=link1

次に、HeaderPresenter で、GuideDialog を呼び出すときに、これを行います。

GuideDialogBox gDialogBox=new GuideDialogBox(placeManager.getCurrentPlaceRequest().getParameter("whichLink", "home"));
于 2013-10-25T17:46:45.357 に答える