Composite UI Application Block(CAB)(2)CAB中涉及的相关概念和术语

序言

 

 

 

CAB 主要有三个工程组成:CompositeUI、CompositeUI.WinForms和ObjectBuilder

WorkItem

是一个运行时容器,该容器中包含完成一个用例所需要的各种各样的组件,组件可以是可视化的也可以是非可视化的,比如:SmartPart,Service,Commonds等等。

SmartPart

一个展现数据的视图,比如控件,Windows 窗体或是一个向导页。

SmartPartInfo

存放SmartPart的相关信息的类,以便被workspace所使用,比如可以在Smartpartinfo中设置SmartPart的显示标题。

Workspace

WorkSpace:作为一个容器,它可以统一的添加和显示视图。CAB中提供了一组控件作为视图的容器,包括DeckWorkSpace,MDIWorkSpace,TabWorkSpace,WindowWorkSpace,ZoneWorkSpace。

它们的作用有点类似普通Windows 控件Panel,MDI窗口,TAB控件,Window窗体。在程序中根据名称可以通过WorkItem的WorkSpace集合索引到它们。

Smart Part: 也可以被称作View,实际上是一个个自定义的控件。

封装了控件和SmartParts的某种可视化的布局的组件,比如以Tab方式显示页面。

Workspace(容器Frame)和SmartParts(控制容器)

1.WindowWorkSpace

该WorkSpace能将你需要在其中显示的用户控件在一个WinForm中显示出来,我们可以通过和该WorkSpace对应的WindowSmartPartInfo来设置用户控件的显示属性,如标题信息,是否是模式窗口等。

 

 

 

https://blog.csdn.net/lee576/category_325929.html

Controller

https://blog.csdn.net/lee576/article/details/6627614

 public abstract class CabShellApplication<TWorkItem, TShell> : CabApplication<TWorkItem> where TWorkItem : WorkItem, new()
    {
        protected CabShellApplication();

        protected TShell Shell { get; }

        protected virtual void AfterShellCreated();
        protected virtual void BeforeShellCreated();
        protected sealed override void OnRootWorkItemInitialized();
    }

 

ParentWorkItem.Commands[commandName].RemoveInvoker(btn, "Click");

ParentWorkItem.Commands[commandName].AddInvoker(btn, "Click");

ParentWorkItem.Commands[commandName].Execute();

 

ToolStripMenuItem item = CreateMenuItemForMapping(mapping);

UIExtensionSites[mapping.Site].Add(item);

Commands[mapping.CommandName].AddInvoker(item, "Click");

 

Command helloCommand = RootWorkItem.Commands["HelloCommand"];

ToolStripItem toolStripItem = this.Shell.mainToolStrip.Items["toolStripButton1"];              
helloCommand.AddInvoker(toolStripItem, "Click");
[CommandHandler("HelloCommand")]          
public void HelloHandler(object sender, EventArgs e)          

{  
     MessageBox.Show("Hello world using CAB commands");          
}

 

UIExtensionSites

同样,UIExtensionSites也是一个集合,用来管理UIExtensionSite,我们可以通过下列方法将一个UIExtensionSite添加到WorkItem中:

WorkItem.UIExtensionSites.RegisteSite(UIExtensionSiteNames.XXXX, XXXXXXX;

Commands

Commands集合用来管理Command,

WorkItem.Commands[Constants.CommandNames.TestButtonClick].AddInvoker(element, "Click");

观察者模式

 

https://richnewman.wordpress.com/category/composite-application-block/

Global

WorkItem

Descendants

 

使用UI元素扩展流程:

1.注册适配器工厂:

rootWorkItem.Services.AddNew<UIElementAdapterFactoryCatalog, IUIElementAdapterFactoryCatalog>();

2.注册UI扩展站点:

RootWorkItem.UIExtensionSites.RegisterSite(UIExtensionConstants.MAINMENU, Shell.MainMenuStrip)

3.在站点上添加元素:

UIExtensionSites[UIExtensionConstants.FILE].Add(queueItem);

Thread.CurrentPrincipal.Identity.Name;

 

Shell application (CD)

Shell (CD)

Workspace (CD)

Service (CD)

Module (CD AD)

ProfileCatalog (CD)

ModuleLoader (CAB)

ModuleInit (CD AD)

UIExtensionSite (CD)

WorkItem (CD AD)

Command (CAB)

EventPublication

EventSubscription

Model/View/Controller/Presenter

SmartPart

 

ObjectBuilder

 

SCSF智能客户端学习笔记(一)

c#基础之Type

资料

Composite UI Application Block (CAB) 详解

简介(CAB和SCSF编程)

Smart Client Software Factory:CAB

https://blog.csdn.net/lee576/category_325929.html

https://www.cnblogs.com/mixiaobo/archive/2008/01.html

https://blog.csdn.net/lee576/article/details/6412358

https://blog.csdn.net/lee576/article/details/6412339

WorkSpace介绍

https://www.cnblogs.com/mixiaobo/archive/2008/01/27/1055021.html

https://richnewman.wordpress.com/category/composite-application-block/

posted @ 2022-05-23 23:43  ~沐风  阅读(119)  评论(0编辑  收藏  举报