首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

创建一种声明性 XML UI 语言 -4

创建一种声明性 XML UI 语言 -4

支持的 Java 框架我们首先简要介绍建议的 Java 框架。 展示了程序员创建应用程序时必须遵循的步骤:
清单 4. Java API 调用概念
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
try {
    // Gain access to a XUI builder through factory
    // In this framework the term XUI is going to represent the custom DOM
    XUIBuilder builder = XUIBuilderFactory.getInstance().getXUIBuilder();  // (1)

    // Validate and parse (unmarshal) the XML document
    builder.parse("browser.xml"); // (2)

    // Build a custom DOM
    XUI xui = builder.getXUIDocument();  // (3)

    // Create 1:1 GUI component mapping to custom DOM
    xui.visualize();  // (4) (5)

    // Create bindings to data model (i.e. JAR file from Resource element)
    xui.bind();  // (6)

    // Get root node from the XUI document
    XUINode root = xui.getRoot();

    // Save a copy of the DOM to file (marshal)
    xui.marshalXUI("browser-marshalled.xml");

} catch (XUIParseException xpe) {
    xpe.printStackTrace();

} catch (XUIBindingException xbe) {
    xbe.printStackTrace();

} catch (IOException ioe) {
    ioe.printStackTrace();
}




清晰地定义了功能的分离,允许进一步优化框架的组件。 试图可视化这个工作流。 中的每个圈起来的数字对应  中每个加注释的数字,但代码展示了两个额外步骤(检索对 XUI 根节点的引用和将 DOM 编组到文件)。这些步骤是:
文档对象模型(Document Object Model)是什么?文档对象模型(简称 DOM)是 XML 元素到内存对象(由 API 提供)的映射,这种映射允许程序员将 XML 数据读入内存对象(称为解组),操作数据,然后将数据写回到 XML(称为编组)。最著名的常用 DOM 是 W3C DOM。

展示了以下步骤:
  • 从 BuilderFactory 检索一个 Builder。
  • 在允许检索一个 XUI 文档之前,Builder 首先确保 XML 文档已经被验证和解析。如果解析或验证失败,将出现一个 XUIParseException,框架将停止文档加载。
  • Builder 创建 DOM,其中的对象反映读入的 XML 元素。
  • Realizer 对象(在内部由 XUI 对象调用)被实例化并准备执行下一步。
  • Realizing 是框架根据预先创建的 XML 节点层级(框架引擎的真正核心)创建 GUI 组件层级的地方。
  • 使用 Java 环境中的 power of reflection,模型逻辑(应用程序中驱动 UI 的部分)被绑定到刚才实现的 GUI 组件。
图 1. XUI API 用于构建 GUI 的框架流和详细步骤视图这个共包含 6 个步骤的调用流易于使用,但其中包含大量信息和对象实例化,值得仔细研究。这个框架的核心位于步骤  和步骤 。
GUI 组件 & XML 节点构成在  中, 创建了一个组件模型,支持将这个 XML 节点(现在是内存对象)和一个 GUI 组件组成一对。这种配对需要非常严格地同步以下事件:
  • 对于框架读入的每个 XUINode(表示任意 XML 元素的内存对象),必须创建一个 XUIComponent 来包围 XUINode。
  • 对于在内存中创建的每个 XUIComponent,必须创建一个 GUI 对等物,比如 javax.swing.JFrame。
  • 每当一个 XUIComponent 实例 — 或它的一个子类型(比如 XUIButton)— 被修改时(比如修改大小),XUIComponent 必须确保 XUINode 和 GUI 对等物同时、同等地更新。
通过满足上述要求,这个框架允许程序员将多个 XML 文档读入内存(解组),修改 DOM,然后将更改保存回一个 XML 文档(编组)。程序员甚至可以以编程方式创建几个新的 DOM 并对它们进行编组。
返回列表