XT Application Event System(AES)

为避免过度耦合导致的软件可维护性降低,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 发生严重错误,此时会清空当前文档,重置视图