【发布时间】:2012-11-10 17:45:18
【问题描述】:
我正在尝试编写一个 GWT 应用程序,它为每个“页面”(位置)重用相同的模板。该应用程序有 4 个主要“页面”:
- 仪表板页面 (
http://www.mywebapp.com/#dashboard) - 计算器页面 (
http://www.mywebapp.com/#calc) - 配置器页面 (
http://www.mywebapp.com/#config) - 登录页面 (
http://www.mywebapp.com/#login)
每个“页面”都具有相同的模板外观:(1) 包含徽标和导航菜单的标题部分,(2) 包含“页面”特定内容的内容部分(即#dashboard 地点、#login 地点等不同),以及 (3) 包含一些链接的页脚部分。所以你看,从页面到页面的唯一变化是内容部分。就像一个普通的模板网站。
问题是,每个“页面”(位置)实际上是一个相当复杂的 UI,其中包含许多不同的面板,其中包含许多小部件。当用户与应用程序交互时,这些面板会出现和消失,并且显示会一直在变化。例如,在#calc 页面上,用户可以选择显示计算器的“模式”:Basic 或Advanced。当用户选择高级时,会显示几个附加面板(除了基本面板)。
如果能够将此类操作保留在历史记录中会很不错,这样用户就可以在 Basic 或 Advanced 模式下为应用添加书签,例如:
-
http://www.mywebapp.com/#calc/basic;或 http://www.mywebapp.com/#calc/advanced
问题出在这里:
我们已经在这里进行了几个“级别”的活动/地点。在“app”级别,我们有当MyWebAppModule implements EntryPoint 下载时需要向用户显示的模板。这个TemplatePlace 是在调用之前向 HistoryHandler 注册的默认/初始位置:
public class MyWebAppModule implements EntryPoint {
@Override
public void onModuleLoad() {
// ...
// The first place we go to when this module downloads.
TemplatePlace templatePlace = getSomehow();
historyHandler.register(placeController, eventBus, templatePlace);
historyHandler.handleCurrentHistory();
}
}
接下来,我们有所有不同的“页面”:DashboardPlace、CalculatorPlace 等,它们都有自己独特的视图/显示。例如,当用户单击 Calculator 链接转到 CalculatorPlace 时,它应该呈现与他们想要在基本或高级模式下使用计算器时不同的视图。
最后,我们在每个页面/位置内都有不同的显示区域、面板等,例如BasicCalculatorPlace 和AdvancedCalculatorPlace。这就是我所说的不同“级别”导航的意思:
- 应用级(适用于所有页面/位置的模板)
- 页面级或地点级
- 显示或面板级
问题:
当用户执行以下所有操作时,我想实现可收藏的 URL(地点):
- 转到主页 (
http://www.mywebapp.com) - 转到任何“页面”(
http://www.mywebapp.com/#calc等) - 使用导致特定页面面板或显示配置的页面/位置(
http://www.mywebapp.com\#calc\#advanced等)
我要创建多少个活动和地点?有多少个 ActivityManager? 我想我是在询问每个“级别”的可书签 UI 的活动/地点需要多细。提前致谢!
【问题讨论】:
标签: java gwt gwt-places gwt-activities