XML配置
每个应用程序都千奇百怪,功能各异。如何用一个同样的界面来组织呢?的确,这个界面并非适合所有人。不过这里的所有菜单、按钮、流程图、图标等,其动作都是可以用一个“动作码”类定义的,所有的动作都会回调一个统一的函数。而我们只要在这个函数处插入监听,就可以拦截具体动作码,执行我们想做的任何事情,例如格式化C盘、往aobama@whitehouse.com邮箱发个垃圾邮件啥的。
例如,要定义主菜单,通过这个XML:
< menubar >
< menu text ="System" >
< menu text ="One Sub Module" >
< menuitem text ="Test Report Item" tooltip ="Tooltip" icon ="/free/email.png" action ="A001" />
< menuitem text ="Test Report Item" tooltip ="Tooltip" icon ="/free/email.png" action ="A001" />
< menuitem text ="Test Report Item" tooltip ="Tooltip" icon ="/free/email.png" action ="A001" />
< menuitem text ="Test Report Item" tooltip ="Tooltip" icon ="/free/email.png" action ="A001" />
</ menu >
</ menubar >
以上XML可以定义一个System的主菜单,以及一个One Sub Module的菜单项,以及一系列的二级菜单。每个菜单都可以设置icon图标、文字、tooltip文字,以及动作码(就是那个action)。如下图:
左侧的模块栏就是典型的Outlook的风格,很多软件干脆都叫它OutlookPane(我这里也是如此)。这个OutlookPane的配置,通过如下类似XML:
<module text="Engineering Box" icon="/free/test/module_unselected.png"
selected_icon="/free/test/module_selected.png"
network="network.xml">
</module>
</outlook>
同样,主模块(也就是每个大分栏)包含了模块栏的文字、icon图标(选中和未选中两个),以及一个xml文件。这个xml文件包含了一个流程图,流程图包含了具体的子模块。点击展开大模块栏后,所有的子模块也会显示在栏目中,同时模块的流程关系会通过对应的xml文件中定义的方式,显示在一个图形化的流程图界面中,最终显示在中间的tab页上。
可以看到,左侧的模块列表和中间的图形节点是一一对应的。当鼠标选中节点后(变成橙色),左侧的列表对应的项也会被选中。同时,和这个节点(代表了一个具体子模块)相关的功能,都会显示在右侧的快捷列表中(这是通过指向的network.xml文件定义的)