Unity编辑器扩展精粹_第十章
回到第三个总页签,产品列表类,创建产品的OpenProductEditor方法,除了在页面开始的时候,调用,还可以用于编辑,已有的产品信息; 解析一下,函数体逻辑:通过CreateSubWindow接口,创建子窗口,文本label显示名称、描述,文本输入区域TextAreaView是用于输入,上述俩label,对应的具体值;
再弄一个保存按钮,用来保存修改即可
在刷新函数中,是遍历,数据容器的Products集,然后调用,产品对应的界面类ProductView,去创建新的,单个产品样式,传参onEdit是上面提及的,OpenProductEditor,修改产品信息的函数体
产品的界面类,对应的具体逻辑,弄一个编辑相关的edit按钮、一个删除的delete按钮,然后再加上ProductDetailView 产品细节界面类
对应表现
产品细节类,对应的逻辑,描述的label文本,显示的是传参过来的,产品Description字段信息; 再显示一个功能的label文本显示;
弄一个添加Feature功能的按钮,再弄一个功能列表的初始化
对应表现
功能特性列表,是在OnRefresh刷新函数,Foreach遍历,调用FeatureView 单个产品功能类,完成创建
单个产品功能类,对应的具体逻辑,用一个树节点mTreeNode,串联起来,add添加功能函数,删除函数,还有mChildrensParent子功能布局; 点击添加功能,是调用 OpenFeatureEditor 产品功能编辑子界面;
产品功能编辑,对应的具体逻辑,显示的是功能名,描述
而且这里的,添加产品特性功能,是属于加到,当前产品功能的,子功能特性; 所以,点击保存按钮的时候,实例化新的Feature类后,是加到mFeature.Children 子功能容器中,再Save保存
产品界面类的刷新函数,是遍历子节点容器,配合IndentValue缩进,显示出来即可
对应表现
产品功能特性 子窗体的 整体表现:
以上,就是产品特性功能,相关的逻辑和表现,回到 产品细节界面类,开始解析,版本相关的逻辑; 显示一个版本的label文本,然后弄一个,创建版本的按钮,调用的是 OpenVersionEditor 编辑接口,而 mProductVersionsParent 跟产品列表一样,是版本列表的初始化;
对应表现
打开版本编辑相关的 OpenVersionEditor 函数,也是通过 CreateSubWindow,创建一个子窗口,配合传参是否为空,三元运算符,显示子窗体标题; 还会弄一个版本界面类 VersionView,加到子窗体; 然后,版本的状态,是用了待办事项的 TodoState,有三种状态,用EnumPopupView 枚举界面类,统一控制即可; 再显示版本名信息;
版本编辑子窗体,后面的逻辑,就是保存的逻辑了,如果是新增,存到对应的数据容器即可; 如果是修改,就修改,传参过来的productVersion对应的字段值即可;
版本信息的界面类VersionView,主要是字符显示样式的相关逻辑; 复习一下,版本 是由三个字段 构成,分别对应界面类的 mMagorView 、mMiddleView、mSmallView; 然后,就是各种字符串搭配,和样式处理;
也会显示,版本号信息,通过AddTo串联起来即可
版本编辑子窗体面板,表现
继续,在刷新函数,和产品特性功能同理,也是排序、遍历产品的Product.Versions集合,通过实例化 ProductVersionView 单一产品版本界面类,创建每一版本即可
这是 ProductVersionView 的具体逻辑,跟待办事项 TodoListInputView 相关逻辑,关联起来,实例化一个inputView 待办事项输入框
按钮的样式设置; 把inputView跟 edit 编辑按钮,关联起来;
通过版本的,各个状态,控制样式的显示隐藏; 刷新函数,会遍历对应版本的 待办事项列表容器,创建 单个 待办事项即可;
对应表现