这是我的问题。我的标题演示器中有很多链接。
Link1 - Link2 - Link3 - GuideDialogLink
当用户点击 Link1 或 Link2 或 Link3 时,它将打开一个新的浏览器。
但是,当用户单击 GuideDialogLink 时,它将在当前链接的顶部弹出一个对话框。
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 的对话框。
所以,我的问题是:
有没有办法检索当前演示者?
如果我们知道哪个 Presenter 是当前的,那么我们可以相应地调用 GuideDialog,例如:GuideDialog myGD=new GuideDialog(0);
public static int currentLink
- 其他解决方案是在Utility
课堂上存储一个。当用户点击链接 1 或链接 2 或链接 3 时,我们可以使用 EventBus 进行public static currentLink
相应设置和最终设置GuideDialog myGD=new GuideDialog(Utility.currentLink);
。
但我不认为这个解决方案很优雅,因为谷歌必须有一些功能让我们知道我们在哪个当前页面。
那么我怎样才能优雅地解决我的问题呢?
编辑
好的,让我澄清一下。我正在使用 GWTP 创建我的 web 应用程序。
-1st,我使用eclipse生成HeaderPresenter。Eclipse 将创建(HeaderPresenter.java、HeaderView.java 和 HeaderView.ui.xml)。HeaderPresenter 有 4 个超链接:link1、link2、link3、GuideDialogLink。
-2nd,我创建了 Link1Presenter(Link1Presenter.java,Link1View.java,Link1View.ui.xml)。然后我创建了 Link2Presenter(Link2Presenter.java、Link2View.java、Link2View.ui.xml)。然后我创建了 Link3Presenter (Link3Presenter.java, Link3View.java, Link3View.ui.xml)
-3rd,我曾经setInSlot
将 Link1Presenter、Link2Presenter、Link3Presenter 嵌入或嵌套在 HeaderPresenter 中。这意味着当用户转到链接 1(例如:abc.com#link1)时,他们将看到 4 个超链接(链接 1、链接 2、链接 3、GuideDialogLink)。如果他们转到链接 2(例如:abc.com#link2)或链接 3,他们还会看到 4 个超链接。
-4,我在 HeaderPresenter 中创建 GuideDialog.java extends DialogBox &,我有guideDialogLink.addClickHandler(new ClickHandler(){ GuideDialog myGD=new GuideDialog (int whichLink); });
因此,当用户位于链接 1、2 或 3 时,他们会看到 GuideDialogLink 对吗?& 当他们点击 GuideDialog 时会弹出一个对话框,对吗?
现在我的要求是,当用户在 Link1 中并且如果他们单击 GuideDialogLink 时,将弹出一个对话框并显示一个 Gui(上面有 2 个文本框)。当用户在 Link2 中并且如果他们单击 GuideDialogLink,将弹出一个对话框并显示另一个 Gui(上面有 2 个标签)。当用户在 Link3 中并且如果他们单击 GuideDialogLink,将弹出一个对话框并显示另一个不同的 Gui(上面有 2 个复选框)