これが私の問題です。ヘッダー プレゼンターに多くのリンクがあります。
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 currentLink
、Utility
クラス内に保存することです。また、ユーザーが 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つのチェックボックスが表示されます)