java - GWT 地点与要筛选的 Activity 的比率?

标签 java gwt gwt-places gwt-activities

我正在尝试编写一个 GWT 应用程序,为每个“页面”(位置)重用相同的模板。该应用程序有 4 个主要“页面”:

  • 仪表板页面 (http://www.mywebapp.com/#dashboard)
  • 计算器页面 (http://www.mywebapp.com/#calc)
  • 配置器页面 (http://www.mywebapp.com/#config)
  • 登录页面 (http://www.mywebapp.com/#login)

每个“页面”都具有相同的模板化外观:(1) 包含 Logo 和导航菜单的标题部分,(2) 包含“页面”特定内容的内容部分(即将#dashboard 位置、#login 位置等有所不同),以及 (3) 包含一些链接的页 footer 分。所以你看,页面与页面之间唯一变化的是内容部分。就像一个普通的模板网站一样。

问题是,每个“页面”(位置)实际上是一个相当复杂的 UI,有许多不同的面板,其中包含许多小部件。当用户与应用程序交互时,这些面板将出现和消失,并且显示会一直变化。例如,在#calc页面上,用户可以选择显示计算器的“模式”:基本高级 。当用户选择高级时,将显示几个附加面板(除了基本面板之外)。

如果能够将此类操作保留在历史记录中就好了,这样用户就可以在基本高级模式下为应用程序添加书签,例如:

  • http://www.mywebapp.com/#calc/basic;或
  • http://www.mywebapp.com/#calc/advanced

问题是这样的:

我们已经在这里进行了几个“级别”的 Activity/场所。在“应用程序”级别,我们有当 MyWebAppModule 实现 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();
    }
}

接下来,我们有所有不同的“页面”:DashboardPlaceCalculatorPlace 等,它们都有自己独特的 View /显示。例如,当用户单击计算器链接转到CalculatorPlace时,它应该呈现与确定他们想要在基本或高级模式下使用计算器时不同的 View .

最后,我们在每个页面/位置内都有不同的显示区域、面板等,例如BasicCalculatorPlaceAdvancedCalculatorPlace。这就是我所说的不同“级别”导航的含义:

  1. 应用级(适用于所有页面/位置的模板)
  2. 页面级或地点级
  3. 显示级或面板级

问题:

我希望当用户执行以下所有操作时实现可添加书签的 URL(位置):

  • 转到主页 (http://www.mywebapp.com)
  • 转到任意“页面”(http://www.mywebapp.com/#calc 等)
  • 使用导致页面特定面板或显示配置的页面/位置(http://www.mywebapp.com\#calc\#advanced 等)

我要创建多少个 Activity 和场所?有多少个 ActivityManager? 我想我是在问可添加书签的 UI 的每个“级别”需要多细化的 Activity/Place。提前致谢!

最佳答案

我认为每个“页面”只需要一个 ActivityManager 和一个 Activity。您可以将“页眉”和“页脚”制作成可在每个页面中重复使用的小部件。

您可以使用标记为同一页面的不同状态添加书签。例如,您可以将标记设置为“基本” - 它会告诉 CalculatorActivity 显示基本计算器面板。 URL 将如下所示:

www.myApp.com/?#Calculator:basic

当用户单击小部件以选择高级选项时,您会这样做

PlaceController.goTo(new CalculatorPlace("advanced"));

CalculatorActivity 将获取 CalculatorView(已显示),它将看到 token 设置为“高级”,并将指示此 View 显示高级面板。

请注意,您可以根据需要详细设置 token ,然后在“Activity ”中解析它们。例如,您可以有类似的内容

www.myApp.com/?#Calculator:option=basic&position=top&theme=pink

关于java - GWT 地点与要筛选的 Activity 的比率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324484/

相关文章:

java - 如何摆脱 PlaceHistoryMapper

java - 方法map=null和map.clear()是否相同?

macos - 如何使用 GWT 检测操作系统?

java - 保持文本区域格式

java - GWT 代码分割集成 : MVP and Activites/Places

java - GWT PlaceHistoryMapper token 如何转换为实际 URL?

java - 如何使用 Spring 在 Hibernate 拦截器 Bean 中注入(inject) EntityManager?

java - 在某些设备上,应用程序未显示在 Play 商店中

java - 为什么我的 Cloud Run - 到 Firebase 调用需要这么长时间?

java - 在 smartgwt 的 htmlflow 中获取文本框的值