GWT场所与屏幕活动的比率?

时间:2012-11-10 17:45:18

标签: 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)包含徽标和导航菜单的标题部分,(2)包含“页面”特定内容的内容部分(即将是不同的#dashboard地方,#login地方等),以及(3)包含一些链接的页脚部分。所以你看,从页面到页面的唯一变化是内容部分。就像一个普通的,模板化的网站。

问题是,每个“页面”(地点)实际上是一个相当复杂的UI,有许多不同的面板,包含许多小部件。当用户与应用程序交互时,这些面板将进入和退出,显示将一直在变化。例如,在#calc页面上,用户可以选择显示计算器的“模式”: Basic Advanced 。当用户选择高级时,将显示几个附加面板(除 Basic 面板外)。

能够在历史记录中保留此类操作会很高兴,以便用户可以在基本高级模式下为应用添加书签,例如:

  • 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();
    }
}

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

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

  1. 应用程序级别(适用于所有页面/位置的模板)
  2. 页面或地点
  3. 显示或面板级
  4. 问题:

    我希望在用户执行以下所有操作时实现可收藏的URL(地点):

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

    我创建了多少个活动和地点?有多少活动管理器?我想我要问的是,对于可收藏的用户界面的每个“级别”,活动/地点的粒度是多少。提前谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

www.myApp.com/?#Calculator:basic

当用户点击窗口小部件以选择高级选项时,您可以

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

CalculatorActivity将获得CalculatorView(已经显示),它将看到令牌设置为“高级”,它将指示此视图显示高级面板。

请注意,您可以根据需要详细说明令牌,然后在“活动”中解析它们。例如,您可以使用

之类的内容
www.myApp.com/?#Calculator:option=basic&position=top&theme=pink