< 上一课 | 下一课 >

第 9 课:在应用程序中嵌入计算历史记录处理程序

要将计算历史记录处理程序添加至您的页面,必须更改结果 Portlet 和主要门户网站。

更改结果 Portlet

在上一课结束时,CalculationResultsHandler 处理程序预订了单个事件:mortgageApplication.mortgageCalculated。发生该事件时,此处理程序就会更新并重新显示饼图。但是,用户可能选择历史记录 Portlet 中的某行,从而导致发布另一个事件:mortgageApplication.mortgageResultSelected。如果 CalculationResultsHandler 也预订了该事件,那么此处理程序可通过更新和重新显示饼图,从而采用同样的方式对用户所作的选择作出响应。

用于预订这两个事件的最简单方法是使用星号 (*),这是一个表示一组事件中的任何事件的通配符。按如下所示执行操作:

  1. 在 Rich UI 编辑器中,打开 CalculationResultsHandler.egl 文件并切换到“源代码”视图。
  2. start() 函数中,查找以下行:
    InfoBus.subscribe("mortgageApplication.mortgageCalculated", displayChart);
  3. 将事件名称中最低级别的限定符替换为星号:
    InfoBus.subscribe("mortgageApplication.*", displayChart);
    现在,每当发生事件时,如果此事件的名称以 mortgageApplication 开头,那么 EGL 将调用 displayChart 函数。
  4. 保存并关闭该文件。

更改主要门户网站

对于历史记录 Portlet,添加与其他两个 Portlet 的行相似的行:

  1. 在 Rich UI 编辑器中,打开 MainHandler.egl 文件并单击源代码选项卡。
  2. 紧接在 resultsHandler 声明后面,为 historyHandler 添加类似的声明:
    historyHandler CalculationHistoryHandler{};
  3. 紧接在 resultsPortlet 声明后面,为 historyPortlet 添加类似的声明:
    historyPortlet Portlet{children = [historyHandler.historyResults_ui], 
    			title = "History", canMove = TRUE, canMinimize = TRUE};
  4. start 函数中,在对于 addPortlet 的现有调用下,对门户网站添加新的 Portlet:
    	mortgagePortal.addPortlet(historyPortlet, 1);
  5. 像您对 resultsPortlet 所做的那样,将 historyPortlet 设置为在最初时最小化:
    	historyPortlet.minimize();
  6. 将 historyPortlet 的代码添加至 restorePortlets() 函数末尾:
    		if(historyPortlet.isMinimized())
    			historyPortlet.restore();
    		end	
  7. 保存该文件。如果您在源文件中发现错误,请将您的代码与在第 9 课之后已为 MainHandler.egl 完成的代码中的文件内容进行比较。

测试门户网站

测试主要门户网站,以确保显示了新的历史记录 Portlet 并且在正常运行。
  1. 单击编辑器底部的预览 EGL 将显示主要门户网站以及三个附属 Portlet。
  2. 单击计算 动画图像指示正在执行该工作。完成计算时,就会显示饼图和历史记录。
    已复原的结果 Portlet 显示了饼图。
  3. 将抵押贷款的年限更改为 5 年,然后再次单击计算 向历史记录列表中添加了一行。
  4. 单击历史记录列表的第一行中的某个单元格。
    历史记录列表的第一行中包含 30 年抵押贷款的计算结果。
  5. 饼图显示了在历史记录列表中选择的行的值。
    更新后的饼图中具有第一次计算的值。

课程复习要点

您已经学习了如何预订所指定的多个类似的事件。

在下一课中,您将添加一个 Portlet 以显示位于美国的指定地区的抵押贷款公司的地图。

< 上一课 | 下一课 >

反馈