目的:动态生成框架(包括菜单,工具条,工作窗口,属性窗口)
框架的安全性,唯一性
可利用条件:WinUIForm控件
框架的组成成分:
菜单:单击事件,显亮事件
工具条:单击事件,显亮事件
工作窗口:
Content,View
属性窗口:
Pad
思想:用工厂模式,命令模式,辅助服务生产生成框架,命令模式运行框架,
方法:用树结构管理生成平台所需要的资源(代码子()),用树的节点生成平台
良好的文件管理和可扩张性(文件路径的方式管理分类)
=======================树的生成=================================
树叶
怎么样生成{模型资料信息,制作方式}
树枝
================================================================
代码子描叙组成成分---------------------Codon
类型
ID(路径)标志
名称
图标
条件
排列次序
类 (对应CS文件中的类的完整路径)
代码子的分类形成Extention
用Extention管理Codon,用Addin管理Extention-----------------Addin
Extention 管理代码子的分类(如:菜单类,服务类)--
ArrayList
codonCollection = new ArrayList();
Path:标志唯一的Extention
Addin{HashTable runAssembly,ArrayList Extension}
HashTable便于查询
ArrayList 便于添加
加载插件文件(取得*.addIn文件路径),初始化插件类
Addin.cs
产生(Extension的ArrayList)
处理代码子的排列顺序
根据插件类对象生成插件树DefaultAddinTree
AddInTreeSingleton
—
树的唯一性
疑问:
树节点中存放是代码子,还是文件插件?即:是生成插件树,还是代码子树?
形成一棵这样的树:
包括创建平台所要的所有信息:
Addin文件对象集合
Codonfactory创建代码子工厂
ConditionFactory创建条件工厂
一棵描述代码子结构关系的树(处理了代码子的顺序关系)
根据这棵插件树(树中提供的信息,取得所需要的资源),生成工作平台
表现形式,响应形式
创建工作台-------------
IWorkbench
创建工作窗口容器-----------
IWorkbenchWindow
创建工作窗口-------------
SdiWorkspaceWindow(DockContent)
创建菜单------------
CommandBar
TopMenu---------/Menu/Commands
所有子菜单
建工具条(系统工具条,业务工具条)--------------
ToolBars, BusinessToolBars---------Button/command
创建属性窗口------------
IPadContent
创建布局管理器-----------
IWorkbenchLayout
往工作窗体上添加控件(菜单
/
工具条
/
属性窗体)
CommandBarManage管理CommandBar
CommandBar管理工具条,菜单,业务工具条
在第一次加载的时候,是显示主要的部分
主菜单,系统工具条,属性窗口
在单击一级主菜单的时候(根据菜单在孔件上的排列顺序,取得单击的菜单项),把所有的二级主菜单加载到ContentMenu控件,显示在相应的位置
单击二级子菜单的时候,
从数据库中取得子菜单的相关信息(业务工具条等)
加载一个主菜单下的所有子菜单,指定菜单的响应事件(调用业务页面的Run命令)
单击子菜单
生成业务页面(包括工具条),用基类封装
显示业务页面,刷新业务工具条(一个业务页面一个业务工具条)
与页面效果有关的,通过工作台,通知布局管理器管理
SingleTon
取得应用服务器,
取得在客户段已经注册的类型(业务)
创建工作台
工作台:
PadContentCollection ==
》存储IPadContent封装的PadContent
ViewContentCollection ==
》存储IViewContent封装的UnitView
设置是否全屏
设置标题
设置布局
取得目前激活的窗口
取得所有的工作台控件
添加窗口
删除窗口
显示/隐藏窗口
重新设置窗口
修改菜单与工具条的状态
修改菜单与工具条的状态
清除所有的控件
调整工作台大小
刷新ToolBar
创建子控件
设置子控件的响应事件
多语言的支持
==》
content.RedrawContent();
工作窗口
设置标题
取得子控件
选择子控件
切换子控件
关掉窗口
撤消子控件的事件
重新设置子控件
编辑界面的共用属性体
默认的业务的工具条
刷新业务的工具条
导出
Excel
导出
Pdf
设置过滤字段
打印
Word
打印
Excel
编辑界面的共用载体
刷新业务的工具条
重绘控件,如多语言