框架动态加载(背忘录)

  
目的:动态生成框架(包括菜单,工具条,工作窗口,属性窗口)
       框架的安全性,唯一性
可利用条件: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
 
编辑界面的共用载体
    刷新业务的工具条
    重绘控件,如多语言
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值