OneCode 3.0 @TreeAnnotation及@ChildTreeAnnotation子树注解速查手册
TreeAnnotation 速查手册
注解概述
本手册涵盖了 OneCode 框架中两种主要的树形组件注解:@TreeAnnotation
和 @ChildTreeAnnotation
。
@TreeAnnotation
:用于配置主树形组件的核心注解,关联CustomTreeViewBean
类,可应用于类或构造方法。@ChildTreeAnnotation
:用于配置子树形组件的注解,关联ChildTreeViewBean
类,可应用于类、构造方法或方法。通常,子树配置在构造函数上,一个树可以有多个构造函数,每个构造函数上可以配置一个子树。
这两种注解密切相关,@ChildTreeAnnotation
是 @TreeAnnotation
的扩展,用于处理更复杂的树形结构,特别是当树形组件中包含子树形组件时。
完整定义
@TreeAnnotation
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.CONSTRUCTOR, ElementType.TYPE})
@BeanClass(clazz = CustomTreeViewBean.class)
public @interface TreeAnnotation {@NotNullboolean formField() default true;@NotNullboolean iniFold() default false;boolean animCollapse() default false;boolean dynDestory() default false;@NotNullboolean lazyLoad() default false;@NotNullboolean heplBar() default false;@NotNullboolean autoReload() default true;boolean togglePlaceholder() default true;boolean noCtrlKey() default true;@NotNullint size() default 280;boolean group() default false;@NotNullboolean singleOpen() default false;String valueSeparator() default ";";@NotNullClass bindService() default Void.class;String caption() default "";String optBtn() default "xui-uicmd-opt";Class[] customService() default {};Class<? extends Enum> enumClass() default TreeEnums.class;TreeMenu[] contextMenu() default {};TreeMenu[] rowMenu() default {};TreeMenu[] customMenu() default {};TreeMenu[] bottombarMenu() default {};boolean autoIconColor() default true;boolean autoItemColor() default false;boolean autoFontColor() default false;String[] iconColors() default {};String[] itemColors() default {};String[] fontColors() default {};CustomTreeEvent[] event() default {};ComponentType[] bindTypes() default {ComponentType.TreeBar, ComponentType.TreeView, ComponentType.MTreeView};@NotNullSelModeType selMode() default SelModeType.single;
}
@ChildTreeAnnotation
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.CONSTRUCTOR, ElementType.TYPE, ElementType.METHOD})
@BeanClass(clazz = ChildTreeViewBean.class)
public @interface ChildTreeAnnotation {@NotNullboolean formField() default true;@NotNullboolean iniFold() default false;boolean animCollapse() default false;boolean dynDestory() default false;@NotNullboolean lazyLoad() default false;int index() default 1;boolean dynLoad() default true;boolean deepSearch() default false;boolean autoHidden() default true;boolean canEditor() default true;String imageClass() default "spafont spa-icon-c-treeview";String groupName() default "";String image() default "";boolean popBtn() default false;BorderType borderType() default BorderType.none;boolean activeLast() default true;ComboInputType type() default ComboInputType.none;String bindClassName() default "";boolean closeBtn() default false;boolean group() default false;@NotNullboolean singleOpen() default false;String valueSeparator() default ";";Class[] bindClass() default {};Class<? extends Enum> customItems() default TreeItem.class;String caption() default "";TreeMenu[] contextMenu() default {};TreeMenu[] bottombarMenu() default {};boolean autoIconColor() default true;boolean autoItemColor() default false;boolean autoFontColor() default false;IconColorEnum iconColor() default IconColorEnum.NONE;ItemColorEnum itemColor() default ItemColorEnum.NONE;FontColorEnum fontColor() default FontColorEnum.NONE;CustomTreeEvent[] event() default {};ComponentType[] bindTypes() default {ComponentType.TreeBar, ComponentType.TreeView};@NotNullSelModeType selMode() default SelModeType.single;
}
核心属性说明
1. 基本配置
formField
:是否作为表单字段,默认为 trueiniFold
:是否默认折叠,默认为 falseanimCollapse
:是否使用动画折叠,默认为 falsedynDestory
:是否动态销毁,默认为 falsecaption
:标题文本,默认为空字符串size
:树组件尺寸,默认为 280(仅@TreeAnnotation
支持)group
:是否分组,默认为 falseindex
:索引,默认为 1(仅@ChildTreeAnnotation
支持)dynLoad
:是否动态加载,默认为 true(仅@ChildTreeAnnotation
支持)deepSearch
:是否深度搜索,默认为 false(仅@ChildTreeAnnotation
支持)autoHidden
:是否自动隐藏,默认为 true(仅@ChildTreeAnnotation
支持)canEditor
:是否可编辑,默认为 true(仅@ChildTreeAnnotation
支持)imageClass
:图标样式类,默认为 “spafont spa-icon-c-treeview”(仅@ChildTreeAnnotation
支持)groupName
:分组名称,默认为空字符串(仅@ChildTreeAnnotation
支持)image
:图片路径,默认为空字符串(仅@ChildTreeAnnotation
支持)popBtn
:是否显示弹出按钮,默认为 false(仅@ChildTreeAnnotation
支持)borderType
:边框类型,默认为 BorderType.none(仅@ChildTreeAnnotation
支持)activeLast
:是否激活最后一个节点,默认为 true(仅@ChildTreeAnnotation
支持)type
:输入类型,默认为 ComboInputType.none(仅@ChildTreeAnnotation
支持)bindClassName
:绑定类名称,默认为空字符串(仅@ChildTreeAnnotation
支持)closeBtn
:是否显示关闭按钮,默认为 false(仅@ChildTreeAnnotation
支持)
2. 数据加载
lazyLoad
:是否启用懒加载,默认为 falseautoReload
:是否自动重新加载,默认为 true(仅@TreeAnnotation
支持)bindService
:绑定的服务类,默认为 Void.class(仅@TreeAnnotation
支持)customService
:自定义服务类数组,默认为空数组(仅@TreeAnnotation
支持)bindClass
:绑定的类数组,默认为空数组(仅@ChildTreeAnnotation
支持)customItems
:自定义项,默认为 TreeItem.class(仅@ChildTreeAnnotation
支持)
3. 选择模式
selMode
:选择模式,默认为 SelModeType.singlesingleOpen
:是否只打开一个节点,默认为 falsenoCtrlKey
:是否无需Ctrl键,默认为 true(仅@TreeAnnotation
支持)
4. 菜单配置
contextMenu
:上下文菜单,默认为空数组rowMenu
:行菜单,默认为空数组(仅@TreeAnnotation
支持)customMenu
:自定义菜单,默认为空数组(仅@TreeAnnotation
支持)bottombarMenu
:底部工具栏菜单,默认为空数组optBtn
:操作按钮,默认为 “xui-uicmd-opt”(仅@TreeAnnotation
支持)
5. 颜色配置
autoIconColor
:是否自动设置图标颜色,默认为 trueautoItemColor
:是否自动设置项目颜色,默认为 falseautoFontColor
:是否自动设置字体颜色,默认为 falseiconColors
:图标颜色数组,默认为空数组(仅@TreeAnnotation
支持)itemColors
:项目颜色数组,默认为空数组(仅@TreeAnnotation
支持)fontColors
:字体颜色数组,默认为空数组(仅@TreeAnnotation
支持)iconColor
:图标颜色,默认为 IconColorEnum.NONE(仅@ChildTreeAnnotation
支持)itemColor
:项目颜色,默认为 ItemColorEnum.NONE(仅@ChildTreeAnnotation
支持)fontColor
:字体颜色,默认为 FontColorEnum.NONE(仅@ChildTreeAnnotation
支持)
6. 其他属性
togglePlaceholder
:是否显示切换占位符,默认为 trueheplBar
:是否显示帮助栏,默认为 false(仅@TreeAnnotation
支持)valueSeparator
:值分隔符,默认为 “;”enumClass
:枚举类,默认为 TreeEnums.class(仅@TreeAnnotation
支持)event
:事件数组,默认为空数组bindTypes
:绑定的组件类型,默认为 {ComponentType.TreeBar, ComponentType.TreeView, ComponentType.MTreeView}(@TreeAnnotation
)或 {ComponentType.TreeBar, ComponentType.TreeView}(@ChildTreeAnnotation
)
枚举类型解释
1. SelModeType
选择模式枚举,实现了 Enumstype
接口,可能的值包括:
single
:单选multi
:多选multibycheckbox
:多选CheckBoxsinglecheckbox
:单选CheckBoxnone
:不可选
2. TreeMenu
树形菜单枚举,实现了 CustomMenu
和 IconEnumstype
接口,定义了树形组件支持的操作菜单,包含系统预设的菜单选项及其对应的图标、颜色和动作配置。可能的值包括:
SAVEROW
:保存SORTDOWN
:向下SORTUP
:向上RESET
:重置SAVE
:确定DELETE
:删除ADD
:添加LOADCHILD
:刷新CLOSE
:关闭RELOAD
:刷新
3. CustomTreeEvent
树形事件枚举,实现了 CustomEvent
和 Enumstype
接口,定义了树形组件支持的事件类型,关联菜单动作和事件处理逻辑。可能的值包括:
CLICKDELETE
:点击删除按钮触发CLICKSAVEROW
:点击保存行按钮触发CLICKRESET
:点击重置按钮触发CLICKSORTDOWN
:点击向下按钮触发CLICKSORTUP
:点击向上按钮触发CLICKLOADCHILD
:点击刷新子节点按钮触发TREESAVE
:树销毁时触发保存RELOADCHILD
:重新加载子节点LOADMENU
:右键菜单TREERELOAD
:装载数据TREENODEEDITOR
:节点编辑事件
4. ComponentType
组件类型枚举,实现了 IconEnumstype
接口,与树形相关的值包括:
TreeBar
:树形导航TreeView
:树形视图MTreeView
:多树形视图
5. 其他枚举(仅 @ChildTreeAnnotation 支持)
IconColorEnum
:图标颜色枚举,实现了Enumstype
接口,包含9种颜色:NONE(默认)、YELLOW(黄色)、GREEN(绿色)、DARKBLUE(深蓝)、LIGHTPURPLE(紫色)、CYAN(青色)、BABYBLUE(浅蓝)、PINK(桃红)、GREY(亮灰)ItemColorEnum
:项目颜色枚举,实现了CaptionEnumstype
接口,包含8种颜色:NONE(默认)、YELLOW(黄色)、GREEN(绿色)、DARKBLUE(深蓝)、LIGHTPURPLE(紫色)、CYAN(青色)、BABYBLUE(浅蓝)、PINK(桃红)FontColorEnum
:字体颜色枚举,实现了Enumstype
接口,包含8种颜色:NONE(默认)、YELLOW(黄色)、GREEN(绿色)、DARKBLUE(深蓝)、LIGHTPURPLE(紫色)、CYAN(青色)、BABYBLUE(浅蓝)、PINK(桃红)BorderType
:边框类型枚举,已在其他文档中定义ComboInputType
:组合输入类型枚举,实现了IconEnumstype
接口,包含29种输入类型,其中与树形相关的有:none(默认)等TreeEnums
:树形节点类型枚举,实现了TreeItem
和IconEnumstype
接口,包含2种节点类型:node1、node2TreeItem
:是一个接口,不是枚举,定义了树形节点的基本方法
使用示例
示例 1:基本树形配置 (@TreeAnnotation)
@TreeAnnotation(formField = true,iniFold = true,lazyLoad = true,size = 300
)
public class BasicTreeConfig {// 类内容...
}
示例 2:高级树形配置 (@TreeAnnotation)
@TreeAnnotation(formField = true,iniFold = true,animCollapse = true,lazyLoad = true,autoReload = true,size = 350,group = false,singleOpen = false,bindService = TreeDataService.class,caption = "部门树形结构",customService = {CustomTreeService.class},enumClass = TreeEnums.class,contextMenu = {TreeMenu.ADD, TreeMenu.DELETE},rowMenu = {TreeMenu.EDIT, TreeMenu.VIEW},autoIconColor = true,event = {@CustomTreeEvent(eventEnum = TreeEventEnum.ON_CLICK, actions = {"handleClick"})},bindTypes = {ComponentType.TreeBar, ComponentType.TreeView},selMode = SelModeType.multi
)
public class AdvancedTreeConfig {// 类内容...
}
示例 3:基本子树形配置 (@ChildTreeAnnotation)
@ChildTreeAnnotation(formField = true,iniFold = true,lazyLoad = true,index = 1,caption = "子部门树形结构"
)
public class BasicChildTreeConfig {// 类内容...
}
示例 4:高级子树形配置 (@ChildTreeAnnotation)
@ChildTreeAnnotation(formField = true,iniFold = true,animCollapse = true,lazyLoad = true,dynLoad = true,deepSearch = false,autoHidden = true,canEditor = true,index = 1,group = false,singleOpen = false,bindClass = {Department.class},caption = "高级子部门树形结构",customItems = CustomTreeItem.class,contextMenu = {TreeMenu.ADD, TreeMenu.DELETE},autoIconColor = true,iconColor = IconColorEnum.BLUE,event = {@CustomTreeEvent(eventEnum = TreeEventEnum.ON_CLICK, actions = {"handleChildClick"})},bindTypes = {ComponentType.TreeBar, ComponentType.TreeView},selMode = SelModeType.multi
)
public class AdvancedChildTreeConfig {// 类内容...
}
示例 5:多构造函数配置子树 (@ChildTreeAnnotation)
public class MultiConstructorTree {// 构造函数1:配置部门子树@ChildTreeAnnotation(formField = true,iniFold = true,lazyLoad = true,index = 1,bindClass = {Department.class},caption = "部门结构")public MultiConstructorTree() {// 构造函数实现}// 构造函数2:配置人员子树@ChildTreeAnnotation(formField = true,iniFold = true,lazyLoad = true,index = 2,bindClass = {Person.class},caption = "人员结构")public MultiConstructorTree(String param) {// 构造函数实现}
}
最佳实践和注意事项
通用最佳实践
-
性能优化:
- 对于大数据量的树形结构,建议启用懒加载 (
lazyLoad = true
) - 对于不需要动画的场景,关闭动画折叠 (
animCollapse = false
) - 对于频繁变化的数据,启用自动重新加载 (
autoReload = true
,仅@TreeAnnotation
支持)
- 对于大数据量的树形结构,建议启用懒加载 (
-
用户体验:
- 对于层级较深的树形结构,考虑启用
singleOpen = true
以避免节点过多 - 合理设置树组件的大小 (
size
,仅@TreeAnnotation
支持) 以适应不同的布局需求 - 对于重要的操作,添加相应的上下文菜单 (
contextMenu
) 以提高用户效率
- 对于层级较深的树形结构,考虑启用
-
配置建议:
- 明确指定
enumClass
(仅@TreeAnnotation
支持) 或customItems
(仅@ChildTreeAnnotation
支持) 以确保树形数据的一致性 - 合理设置
selMode
以适应不同的选择需求 - 对于不需要作为表单字段的树形组件,设置
formField = false
- 明确指定
特定注意事项
-
@TreeAnnotation 注意事项:
- 确保
bindTypes
与实际使用的组件类型匹配 - 对于自定义服务类,确保它们实现了必要的接口
- 当
autoReload = true
时,确保数据加载性能良好
- 确保
-
@ChildTreeAnnotation 注意事项:
- 合理设置
index
以确定子树形组件的显示顺序 - 对于需要深度搜索的场景,启用
deepSearch = true
- 当
autoHidden = true
时,确保隐藏逻辑不会影响用户体验 - 合理设置
borderType
以适应不同的UI风格需求
- 合理设置
适用场景
1. 树形导航菜单
适用于应用程序的主导航,支持多级菜单和折叠功能。
2. 组织架构展示
用于展示公司或机构的层级结构,支持展开/折叠和节点信息查看。
3. 文件夹结构浏览
模拟文件系统的文件夹结构,支持导航和文件操作。
4. 分类数据展示
用于展示具有层级关系的分类数据,如产品分类、知识分类等。
5. 层级关系可视化
将复杂的层级关系以树形结构可视化展示,便于用户理解和导航。
6. 子树形组件应用场景
- 嵌套树形结构:当需要在树形节点中展示另一个树形结构时
- 详细信息展示:当点击主树节点需要展示相关子分类或详细信息时
- 多维度数据浏览:当需要从不同维度展示相关数据时