为避免过度耦合导致的软件可维护性降低,XT平台从架构上将应用层与用户界面(UI)层分开,UI层可以直接调用应用层完成相应的应用功能,但是应用层不能直接改变UI层(比如外观、颜色等)。在实际使用过程中,有很多地方需要UI层对应用层数据的改变做出响应,比如显示进度或者状态信息等,为了解决这个问题,XT引入了应用事件机制(Application Event System,简称AES),在该系统中,建立一个观察者(Observer)来监听应用层的事件,一旦有需要UI层响应的事件发生,由观察者将事件转到UI层处理,一般通过主框架的onApplicationEvent接口处理。XT平台提供的应用事件如下表所示,如果开发者需要加入新的事件,需要重新实现onApplicationEvent接口。
平台通用事件
| 事件名称 | 源码标识符 | 备注 |
|---|---|---|
| Progress Changed | Event_ProgressChanged | 应用完成进度发生变化,更新进度条显示 |
| Status Changed | Event_StatusChanged | 应用状态发生改变,更新状态栏显示 |
| Process Started | Event_ProcessStarted | 开始运行一个独立的应用操作,此时界面不再响应用户操作 |
| Process Finished | Event_ProcessFinished | 独立应用操作运行结束,界面恢复相应用户操作 |
| Pick List Changed | Event_PickListChanged | 用户选择对象改变,此时会更新用户选择列表 |
| Object Tree changed | Event_ObjectTreeItemChanged | 指定对象树的项目改变,此时更新对象树相应项目的显示 |
| Warning | Event_Warning | 弹出提示框,显示响应警告信息 |
| Info | Event_Info | 在消息框里显示相应信息 |
| Document Name Changed | Event_DocNameChanged | 当前文档名发生变化,更新窗口名称 |
| Object Tree Reset | Event_ObjectTreeReset | 对象树结构重新生成,此时会重建对象树视图 |
| Draw Status Changed | Event_DrawerStatusChanged | 渲染器状态发生变化,此时会重新渲染当前场景 |
| GL Data Updated | Event_GLDataUpdated | 渲染数据发生变化,此时会更新数据到渲染器中,但并不重新渲染场景 |
| Display Filter Changed | Event_DisplayFilterChanged | 显示过滤设置发生变化,此时会调整工具栏相关按钮的状态 |
| Draw Mode Changed | Event_DrawModeChanged | 渲染模式发生变化,此时会调整工具栏相关按钮的状态 |
| Fatal Error Happened | Event_FatalError | 发生严重错误,此时会清空当前文档,重置视图 |