====== XT Application Event System(AES) ====== 为避免过度耦合导致的软件可维护性降低,XT平台从架构上将应用层与用户界面(UI)层分开,UI层可以直接调用应用层完成相应的应用功能,但是应用层不能直接改变UI层(比如外观、颜色等)。在实际使用过程中,有很多地方需要UI层对应用层数据的改变做出响应,比如显示进度或者状态信息等,为了解决这个问题,XT引入了应用事件机制(Application Event System,简称AES),在该系统中,建立一个观察者(Observer)来监听应用层的事件,一旦有需要UI层响应的事件发生,由观察者将事件转到UI层处理,一般通过主框架的onApplicationEvent接口处理。XT平台提供的应用事件如下表所示,如果开发者需要加入新的事件,需要重新实现onApplicationEvent接口。 ---- {{anchor:platformevents}} **平台通用事件** ^ 事件名称 ^ 源码标识符 ^ 备注 ^ | 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 | 发生严重错误,此时会清空当前文档,重置视图 |