当前位置: 首页 > article >正文

OneCode 组件分类整理及枚举介绍

     ComponentType 枚举类主要用于定义各种组件类型,每个枚举常量代表一种特定的组件,包含组件的名称、描述、基础类型、关联的组件类、图标样式以及所属的父类型等信息。

枚举常量详细说明

1. 图像相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
Imagexui.UI.Image图片[]ImageComponent.classspafont spa-icon-c-imagebuttonComponentType.UI
SVGImagexui.svg.image图片[ComponentBaseType.svg]SVGImageComponent.classspafont spa-icon-c-image
SVGImageCombxui.svg.imageComb图片组合[ComponentBaseType.absComb]SVGImageCombComponent.classspafont spa-icon-c-image

2. 菜单相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
MenuBarxui.UI.MenuBar菜单[ComponentBaseType.absList]MenuBarComponent.classspafont spa-icon-c-menuComponentType.Bar
PopMenuxui.UI.PopMenu弹出菜单[ComponentBaseType.Widget, ComponentBaseType.absList]PopMenuComponent.classspafont spa-icon-c-menuComponentType.Bar
ToolBarxui.UI.ToolBar工具栏[ComponentBaseType.absList]ToolBarComponent.classspafont spa-icon-c-toolbarComponentType.Bar

3. 容器相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
Stacksxui.UI.Stacks堆栈容器[]StacksComponent.classspafont spa-icon-c-stacksComponentType.Tabs
Blockxui.UI.Block块容器[ComponentBaseType.Widget]BlockComponent.classspafont spa-icon-c-block
Groupxui.UI.Group组容器[]GroupComponent.classspafont spa-icon-c-groupComponentType.Panel
Layoutxui.UI.Layout布局容器[ComponentBaseType.absList]LayoutComponent.classspafont spa-icon-c-layoutComponentType.UI

4. 视图相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
TreeViewxui.UI.TreeView树形视图[]TreeViewComponent.classspafont spa-icon-c-treeviewComponentType.TreeBar
MTreeViewxui.UI.MTreeView树形视图[]MTreeViewComponent.classspafont spa-icon-c-treeviewComponentType.TreeBar

5. 数据相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
DataBinderxui.DataBinder数据绑定器[ComponentBaseType.absObj]DataBinderComponent.classspafont spa-icon-c-databinder
MQTTxui.MQTTMQTT 通讯[ComponentBaseType.absObj]MQTTComponent.classspafont spa-icon-mqtt
MessageServicexui.MessageService跨站点消息[ComponentBaseType.absObj]MessageComponent.classxuicon xui-icon-redo
APICallerxui.APICaller远程调用[ComponentBaseType.absObj]APICallerComponent.classspafont spa-icon-c-webapi

6. 动画与计时相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
Timerxui.Timer计时器[ComponentBaseType.absObj]TimerComponent.classspafont spa-icon-c-timer
AnimBinderxui.AnimBinder动画编辑器[ComponentBaseType.absObj]AnimBinderComponent.classxuicon xui-icon-dragcopy

7. 模块相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
Modulexui.Module子模块[ComponentBaseType.absProfile, ComponentBaseType.absValue]ModuleComponent.classspafont spa-icon-module

8. SVG 相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
SVGCirclexui.svg.circle圆形[ComponentBaseType.svg]SVGCircleComponent.classspafont spa-icon-com
SVGEllipsexui.svg.ellipse椭圆[ComponentBaseType.svg]SVGEllipseComponent.classspafont spa-icon-com2
SVGRectxui.svg.rect链接线[ComponentBaseType.svg]SVGRectComponent.classspafont spa-icon-com2
SVGTextxui.svg.text文本[ComponentBaseType.svg]SVGTextComponent.classspafont spa-icon-com2
SVGPathxui.svg.path矢量路径[ComponentBaseType.svg]SVGPathComponent.classspafont spa-icon-com2
SVGRectCombxui.svg.rectComb矢量组合[ComponentBaseType.absComb]SVGRectCombComponent.classspafont spa-icon-com2
SVGGroupxui.svg.group矢量 GROUP[ComponentBaseType.absComb]SVGImageCombComponent.classspafont spa-icon-com2
SVGEllipseCombxui.svg.ellipseComb椭圆组合[ComponentBaseType.absComb]SVGCircleCombComponent.classspafont spa-icon-com2
SVGCircleCombxui.svg.circleComb圆型组合[ComponentBaseType.absComb]SVGCircleCombComponent.classspafont spa-icon-com2
SVGPathCombxui.svg.pathComb路径组合[ComponentBaseType.absComb]SVGPathCombComponent.classspafont spa-icon-com2
SVGConnectorxui.svg.connector连接器[ComponentBaseType.absComb]SVGConnectorComponent.classspafont spa-icon-com2
SVGPaperxui.UI.SVGPaper画布[]SVGPaperComponent.classspafont spa-icon-comComponentType.Div

9. 图表相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
EChartsxui.UI.EChartsECharts 统计图[]EChartComponent.classspafont spa-icon-comComponentType.UI
FChartxui.UI.FusionChartsXTFChart 统计图[]FChartComponent.classspafont spa-icon-com

10. 列表相关组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
FoldingListxui.UI.FoldingListFolding 布局[]FoldingListComponent.classspafont spa-icon-c-foldinglistComponentType.List
Galleryxui.UI.GalleryGallery 画廊[]GalleryComponent.classspafont spa-icon-c-iconslistComponentType.List
ButtonLayoutxui.UI.ButtonLayoutGallery 画廊[]ButtonLayoutComponent.classspafont spa-icon-c-iconslistComponentType.Tabs
TitleBlockxui.UI.TitleBlock磁贴布局[]TitleBlockComponent.classspafont spa-icon-c-iconslistComponentType.List
ContentBlockxui.UI.ContentBlock内容列表[]ContentBlockComponent.classspafont spa-icon-c-iconslistComponentType.List
TreeGridxui.UI.TreeGrid树形列表[]TreeGridComponent.classspafont spa-icon-c-grid[ComponentType.List]

11. 其他组件

枚举常量组件标识描述基础类型关联组件类图标样式父类型
Resizerxui.UI.Resizer大小调整[]ResizerComponent.classspafont spa-icon-c-stacksComponentType.UI
TreeBarxui.UI.TreeBar树形导航[ComponentBaseType.absList]TreeBarComponent.classspafont spa-icon-c-treebarComponentType.UI
CSSBoxxui.UI.CSSBox样式渲染器[]CSSBoxComponent.classspafont spa-icon-c-cssboxComponentType.Span
Videoxui.UI.Video视频播放[]VideoComponent.classspafont spa-icon-c-videoComponentType.Audio
Cameraxui.UI.Camera视频播放[]

package com.ds.esd.tool.ui.enums;

import com.ds.enums.IconEnumstype;
import com.ds.esd.custom.ModulePlaceHolder;
import com.ds.esd.custom.other.OpinionComponent;
import com.ds.esd.tool.ui.component.CSSBoxComponent;
import com.ds.esd.tool.ui.component.Component;
import com.ds.esd.tool.ui.component.ResizerComponent;
import com.ds.esd.tool.ui.component.UIComponent;
import com.ds.esd.tool.ui.component.block.BlockComponent;
import com.ds.esd.tool.ui.component.data.*;
import com.ds.esd.tool.ui.component.dialog.DialogComponent;
import com.ds.esd.tool.ui.component.dialog.MDialogComponent;
import com.ds.esd.tool.ui.component.div.DivComponent;
import com.ds.esd.tool.ui.component.echarts.EChartComponent;
import com.ds.esd.tool.ui.component.fchart.FChartComponent;
import com.ds.esd.tool.ui.component.form.*;
import com.ds.esd.tool.ui.component.form.formlayout.FormLayoutComponent;
import com.ds.esd.tool.ui.component.form.formlayout.MFormLayoutComponent;
import com.ds.esd.tool.ui.component.navigation.MenuBarComponent;
import com.ds.esd.tool.ui.component.navigation.PopMenuComponent;
import com.ds.esd.tool.ui.component.navigation.ToolBarComponent;
import com.ds.esd.tool.ui.component.navigation.TreeBarComponent;
import com.ds.esd.tool.ui.component.panel.*;
import com.ds.esd.tool.ui.component.panel.grid.MTreeGridComponent;
import com.ds.esd.tool.ui.component.panel.grid.PageBarComponent;
import com.ds.esd.tool.ui.component.panel.grid.TreeGridComponent;
import com.ds.esd.tool.ui.component.simple.*;
import com.ds.esd.tool.ui.component.svg.*;
import com.ds.esd.tool.ui.component.svg.comb.circle.SVGCircleCombComponent;
import com.ds.esd.tool.ui.component.svg.comb.connector.SVGConnectorComponent;
import com.ds.esd.tool.ui.component.svg.comb.path.SVGPathCombComponent;
import com.ds.esd.tool.ui.component.svg.comb.rect.SVGRectCombComponent;
import com.ds.esd.tool.ui.component.svg.ellipse.SVGEllipseComponent;
import com.ds.esd.tool.ui.component.tab.ButtonViewsComponent;
import com.ds.esd.tool.ui.component.tab.MButtonViewsComponent;
import com.ds.esd.tool.ui.module.ModuleComponent;

import java.util.*;


public enum ComponentType implements IconEnumstype {
    UI("xui.UI", "基础面板", new ComponentBaseType[]{ComponentBaseType.absObj}, UIComponent.class, "spafont spa-icon-com"),
    Widget("xui.UI.Widget", "基础面板", new ComponentBaseType[]{ComponentBaseType.absObj}, UIComponent.class, "spafont spa-icon-com", ComponentType.UI),
    Bar("xui.UI.Bar", "按钮组", new ComponentBaseType[]{ComponentBaseType.absObj}, UIComponent.class, "spafont spa-icon-c-toolbar", ComponentType.UI),
    List("xui.UI.List", "选择器", new ComponentBaseType[]{ComponentBaseType.absValue, ComponentBaseType.absList}, ListComponent.class, "spafont spa-icon-c-list", ComponentType.UI),
    Element("xui.UI.Element", "HTML控件", new ComponentBaseType[]{}, ElementComponent.class, "spafont spa-icon-c-element", ComponentType.UI),
    HTMLButton("xui.UI.HTMLButton", "原生按钮", new ComponentBaseType[]{}, HTMLButtonComponent.class, "spafont spa-icon-c-nativebutton", ComponentType.Element),
    Span("xui.UI.Span", "字体", new ComponentBaseType[]{}, SpanComponent.class, "spafont spa-icon-c-span", ComponentType.UI),
    Tabs("xui.UI.Tabs", "TAB容器", new ComponentBaseType[]{ComponentBaseType.absValue, ComponentBaseType.absList}, TabsComponent.class, "spafont spa-icon-c-tabs", ComponentType.UI),
    Div("xui.UI.Div", "层面板", new ComponentBaseType[]{}, DivComponent.class, "spafont spa-icon-com", ComponentType.UI),
    Panel("xui.UI.Panel", "普通面板", new ComponentBaseType[]{}, PanelComponent.class, "spafont spa-icon-c-panel", ComponentType.Div),
    Input("xui.UI.Input", "普通输入域", new ComponentBaseType[]{ComponentBaseType.Widget, ComponentBaseType.absValue}, InputComponent.class, "spafont spa-icon-c-input"),
    ComboInput("xui.UI.ComboInput", "复合输入框", new ComponentBaseType[]{ComponentBaseType.absValue}, ComboInputComponent.class, "spafont spa-icon-c-comboinput", ComponentType.Input),
    CheckBox("xui.UI.CheckBox", "单选框", new ComponentBaseType[]{ComponentBaseType.absValue}, CheckBoxComponent.class, "spafont spa-icon-c-checkbox", ComponentType.UI),
    RadioBox("xui.UI.RadioBox", "多选框", new ComponentBaseType[]{}, RadioBoxComponent.class, "spafont spa-icon-c-radiobox", ComponentType.List),
    MultiLines("xui.UI.Input", "多行输入框", new ComponentBaseType[]{ComponentBaseType.Widget, ComponentBaseType.absValue}, InputComponent.class, "spafont spa-icon-c-input"),
    RichEditor("xui.UI.RichEditor", "富文本编辑", new ComponentBaseType[]{ComponentBaseType.absValue}, RichEditorComponent.class, "spafont spa-icon-c-richeditor", ComponentType.UI),
    CodeEditor("RAD.expression.CodeEditor", "代码编辑器", new ComponentBaseType[]{ComponentBaseType.Widget, ComponentBaseType.absValue}, CodeEditorComponent.class, "spafont spa-icon-code"),
    JavaEditor("RAD.expression.JavaEditor", "java编辑器", new ComponentBaseType[]{ComponentBaseType.Widget, ComponentBaseType.absValue}, JavaEditorComponent.class, "spafont spa-icon-code"),
    TextEditor("xui.UI.RichEditor", "文本编辑", new ComponentBaseType[]{ComponentBaseType.Widget, ComponentBaseType.absValue}, RichEditorComponent.class, "spafont spa-icon-c-textarea"),
    HiddenInput("xui.UI.HiddenInput", "隐藏域", new ComponentBaseType[]{ComponentBaseType.Widget, ComponentBaseType.absValue}, HiddenInputComponent.class, "spafont spa-icon-c-hiddeninput"),

    Button("xui.UI.Button", "通用按钮", new ComponentBaseType[]{ComponentBaseType.absValue}, ButtonComponent.class, "spafont spa-icon-c-button", ComponentType.HTMLButton),
    ProgressBar("xui.UI.ProgressBar", "进度条", new ComponentBaseType[]{ComponentBaseType.Widget, ComponentBaseType.absValue}, ProgressBarComponent.class, "spafont spa-icon-c-progressbar"),
    Slider("xui.UI.Slider", "滑动块", new ComponentBaseType[]{ComponentBaseType.absValue}, SliderComponent.class, "spafont spa-icon-c-slider", ComponentType.UI),
    FileUpload("xui.UI.FileUpload", "文件上传框", new ComponentBaseType[]{ComponentBaseType.absValue}, FileUploadComponent.class, "spafont spa-icon-com", ComponentType.UI),
    Tensor("xui.UI.Tensor", "AI寻物", new ComponentBaseType[]{ComponentBaseType.absValue}, TensorComponent.class, "spafont spa-icon-com", ComponentType.UI),

    Label("xui.UI.Label", "文本标签", new ComponentBaseType[]{ComponentBaseType.absValue}, LabelComponent.class, "spafont spa-icon-c-label", ComponentType.UI),
    TimePicker("xui.UI.TimePicker", "时间选择框", new ComponentBaseType[]{}, TimePickerComponent.class, "spafont spa-icon-c-dateinput", ComponentType.UI),
    Link("xui.UI.Link", "HTML链接", new ComponentBaseType[]{}, LinkComponent.class, "spafont spa-icon-c-url", ComponentType.UI),
    Icon("xui.UI.Icon", "ICON图标", new ComponentBaseType[]{}, IconComponent.class, "spafont spa-icon-c-iconslist", ComponentType.UI),
    Flash("xui.UI.Flash", "Flash播放器", new ComponentBaseType[]{}, FlashComponent.class, "spafont spa-icon-c-flash", ComponentType.UI),
    ColorPicker("xui.UI.ColorPicker", "颜色选择器", new ComponentBaseType[]{}, ColorPickerComponent.class, "spafont spa-icon-c-colorpicker", ComponentType.UI),
    DatePicker("xui.UI.DatePicker", "日期选择框", new ComponentBaseType[]{}, DatePickerComponent.class, "spafont spa-icon-c-dateinput", ComponentType.UI),
    FormLayout("xui.UI.FormLayout", "计算表格", new ComponentBaseType[]{ComponentBaseType.absList}, FormLayoutComponent.class, "spafont spa-icon-c-grid", ComponentType.UI),
    MFormLayout("xui.UI.MFormLayout", "计算表格", new ComponentBaseType[]{ComponentBaseType.absList}, MFormLayoutComponent.class, "spafont spa-icon-c-grid", ComponentType.UI),
    StatusButtons("xui.UI.StatusButtons", "状态按钮", new ComponentBaseType[]{ComponentBaseType.absList}, StatusButtonsComponent.class, "spafont spa-icon-c-statusbutton", ComponentType.Bar),
    Audio("xui.UI.Audio", "音频播放", new ComponentBaseType[]{}, AudioComponent.class, "spafont spa-icon-c-audio", ComponentType.UI),
    Opinion("xui.UI.Opinion", "意见框", new ComponentBaseType[]{}, OpinionComponent.class, "spafont spa-icon-c-span", ComponentType.List),
    ModluePlaceHolder("xui.UI.MoudluePlaceHolder", "内嵌模块", new ComponentBaseType[]{}, ModulePlaceHolder.class, "spafont spa-icon-com", ComponentType.ComboInput),
    ButtonViews("xui.UI.ButtonViews", "TAB容器", new ComponentBaseType[]{}, ButtonViewsComponent.class, "spafont spa-icon-c-buttonviews", ComponentType.Tabs),
    MButtonViews("xui.UI.MTabs", "TAB容器", new ComponentBaseType[]{}, MButtonViewsComponent.class, "spafont spa-icon-c-buttonviews", ComponentType.Tabs),
    PageBar("xui.UI.PageBar", "翻页栏", new ComponentBaseType[]{}, PageBarComponent.class, "spafont spa-icon-c-pager", ComponentType.UI),
    Dialog("xui.UI.Dialog", "弹出框", new ComponentBaseType[]{ComponentBaseType.Widget}, DialogComponent.class, "spafont spa-icon-c-dialog"),
    MDialog("xui.UI.MDialog", "弹出框", new ComponentBaseType[]{ComponentBaseType.Widget}, MDialogComponent.class, "spafont spa-icon-c-dialog"),
    Image("xui.UI.Image", "图片", new ComponentBaseType[]{}, ImageComponent.class, "spafont spa-icon-c-imagebutton", ComponentType.UI),
    MenuBar("xui.UI.MenuBar", "菜单", new ComponentBaseType[]{ComponentBaseType.absList}, MenuBarComponent.class, "spafont spa-icon-c-menu", ComponentType.Bar),
    PopMenu("xui.UI.PopMenu", "弹出菜单", new ComponentBaseType[]{ComponentBaseType.Widget, ComponentBaseType.absList}, PopMenuComponent.class, "spafont spa-icon-c-menu", ComponentType.Bar),
    Resizer("xui.UI.Resizer", "大小调整", new ComponentBaseType[]{}, ResizerComponent.class, "spafont spa-icon-c-stacks", ComponentType.UI),
    Stacks("xui.UI.Stacks", "堆栈容器", new ComponentBaseType[]{}, StacksComponent.class, "spafont spa-icon-c-stacks", ComponentType.Tabs),
    Video("xui.UI.Video", "视频播放", new ComponentBaseType[]{}, VideoComponent.class, "spafont spa-icon-c-video", ComponentType.Audio),
    Camera("xui.UI.Camera", "视频播放", new ComponentBaseType[]{}, CameraComponent.class, "spafont spa-icon-c-video", ComponentType.Audio),
    ToolBar("xui.UI.ToolBar", "工具栏", new ComponentBaseType[]{ComponentBaseType.absList}, ToolBarComponent.class, "spafont spa-icon-c-toolbar", ComponentType.Bar),
    TreeBar("xui.UI.TreeBar", "树形导航", new ComponentBaseType[]{ComponentBaseType.absList}, TreeBarComponent.class, "spafont spa-icon-c-treebar", ComponentType.UI),
    CSSBox("xui.UI.CSSBox", "样式渲染器", new ComponentBaseType[]{}, CSSBoxComponent.class, "spafont spa-icon-c-cssbox", ComponentType.Span),
    Block("xui.UI.Block", "块容器", new ComponentBaseType[]{ComponentBaseType.Widget}, BlockComponent.class, "spafont spa-icon-c-block"),
    Group("xui.UI.Group", "组容器", new ComponentBaseType[]{}, GroupComponent.class, "spafont spa-icon-c-group", ComponentType.Panel),
    TreeView("xui.UI.TreeView", "树形视图", new ComponentBaseType[]{}, TreeViewComponent.class, "spafont spa-icon-c-treeview", ComponentType.TreeBar),
    MTreeView("xui.UI.MTreeView", "树形视图", new ComponentBaseType[]{}, MTreeViewComponent.class, "spafont spa-icon-c-treeview", ComponentType.TreeBar),
    Layout("xui.UI.Layout", "布局容器", new ComponentBaseType[]{ComponentBaseType.absList}, LayoutComponent.class, "spafont spa-icon-c-layout", ComponentType.UI),
    DataBinder("xui.DataBinder", "数据绑定器", new ComponentBaseType[]{ComponentBaseType.absObj}, DataBinderComponent.class, "spafont spa-icon-c-databinder"),
    MQTT("xui.MQTT", "MQTT通讯", new ComponentBaseType[]{ComponentBaseType.absObj}, MQTTComponent.class, "spafont spa-icon-mqtt"),
    MessageService("xui.MessageService", "跨站点消息", new ComponentBaseType[]{ComponentBaseType.absObj}, MessageComponent.class, "xuicon xui-icon-redo"),
    APICaller("xui.APICaller", "远程调用", new ComponentBaseType[]{ComponentBaseType.absObj}, APICallerComponent.class, "spafont spa-icon-c-webapi"),
    Timer("xui.Timer", "计时器", new ComponentBaseType[]{ComponentBaseType.absObj}, TimerComponent.class, "spafont spa-icon-c-timer"),
    AnimBinder("xui.AnimBinder", "动画编辑器", new ComponentBaseType[]{ComponentBaseType.absObj}, AnimBinderComponent.class, "xuicon xui-icon-dragcopy"),
    Module("xui.Module", "子模块", new ComponentBaseType[]{ComponentBaseType.absProfile, ComponentBaseType.absValue}, ModuleComponent.class, "spafont spa-icon-module"),
    SVGCircle("xui.svg.circle", "圆形", new ComponentBaseType[]{ComponentBaseType.svg}, SVGCircleComponent.class, "spafont spa-icon-com"),
    SVGEllipse("xui.svg.ellipse", "椭圆", new ComponentBaseType[]{ComponentBaseType.svg}, SVGEllipseComponent.class, "spafont spa-icon-com2"),
    SVGRect("xui.svg.rect", "链接线", new ComponentBaseType[]{ComponentBaseType.svg}, SVGRectComponent.class, "spafont spa-icon-com2"),
    SVGImage("xui.svg.image", "图片", new ComponentBaseType[]{ComponentBaseType.svg}, SVGImageComponent.class, "spafont spa-icon-c-image"),
    SVGText("xui.svg.text", "文本", new ComponentBaseType[]{ComponentBaseType.svg}, SVGTextComponent.class, "spafont spa-icon-com2"),
    SVGPath("xui.svg.path", "矢量路径", new ComponentBaseType[]{ComponentBaseType.svg}, SVGPathComponent.class, "spafont spa-icon-com2"),
    SVGRectComb("xui.svg.rectComb", "矢量组合", new ComponentBaseType[]{ComponentBaseType.absComb}, SVGRectCombComponent.class, "spafont spa-icon-com2"),
    SVGGroup("xui.svg.group", "矢量GROUP", new ComponentBaseType[]{ComponentBaseType.absComb}, SVGImageCombComponent.class, "spafont spa-icon-com2"),
    SVGImageComb("xui.svg.imageComb", "图片组合", new ComponentBaseType[]{ComponentBaseType.absComb}, SVGImageCombComponent.class, "spafont spa-icon-c-image"),
    SVGEllipseComb("xui.svg.ellipseComb", "椭圆组合", new ComponentBaseType[]{ComponentBaseType.absComb}, SVGCircleCombComponent.class, "spafont spa-icon-com2"),
    SVGCircleComb("xui.svg.circleComb", "圆型组合", new ComponentBaseType[]{ComponentBaseType.absComb}, SVGCircleCombComponent.class, "spafont spa-icon-com2"),
    SVGPathComb("xui.svg.pathComb", "路径组合", new ComponentBaseType[]{ComponentBaseType.absComb}, SVGPathCombComponent.class, "spafont spa-icon-com2"),
    SVGConnector("xui.svg.connector", "连接器", new ComponentBaseType[]{ComponentBaseType.absComb}, SVGConnectorComponent.class, "spafont spa-icon-com2"),
    SVGPaper("xui.UI.SVGPaper", "画布", new ComponentBaseType[]{}, SVGPaperComponent.class, "spafont spa-icon-com", ComponentType.Div),
    ECharts("xui.UI.ECharts", "ECharts统计图", new ComponentBaseType[]{}, EChartComponent.class, "spafont spa-icon-com", ComponentType.UI),
    FoldingList("xui.UI.FoldingList", "Folding布局", new ComponentBaseType[]{}, FoldingListComponent.class, "spafont spa-icon-c-foldinglist", ComponentType.List),
    FChart("xui.UI.FusionChartsXT", "FChart统计图", new ComponentBaseType[]{}, FChartComponent.class, "spafont spa-icon-com"),
    Gallery("xui.UI.Gallery", "Gallery画廊", new ComponentBaseType[]{}, GalleryComponent.class, "spafont spa-icon-c-iconslist", ComponentType.List),
    ButtonLayout("xui.UI.ButtonLayout", "Gallery画廊", new ComponentBaseType[]{}, ButtonLayoutComponent.class, "spafont spa-icon-c-iconslist", ComponentType.Tabs),
    TitleBlock("xui.UI.TitleBlock", "磁贴布局", new ComponentBaseType[]{}, TitleBlockComponent.class, "spafont spa-icon-c-iconslist", ComponentType.List),
    ContentBlock("xui.UI.ContentBlock", "内容列表", new ComponentBaseType[]{}, ContentBlockComponent.class, "spafont spa-icon-c-iconslist", ComponentType.List),
    TreeGrid("xui.UI.TreeGrid", "树形列表", new ComponentBaseType[]{}, TreeGridComponent.class, "spafont spa-icon-c-grid", new ComponentType[]{ComponentType.List}),
    MTreeGrid("xui.UI.MTreeGrid", "树形列表", new ComponentBaseType[]{}, MTreeGridComponent.class, "spafont spa-icon-c-grid", new ComponentType[]{ComponentType.TreeGrid}),
    FoldingTabs("xui.UI.FoldingTabs", "FoldingTAB容器", new ComponentBaseType[]{}, FoldingTabsComponent.class, "spafont spa-icon-c-foldingtabs", ComponentType.Tabs);

    private static Map<ComponentType, Set<ComponentBaseType>> baseTypeMap = new HashMap();
    private static Map<ComponentType, Set<ComponentType>> typeMap = new HashMap();
    private final String name;
    private final ComponentBaseType[] baseType;
    private final ComponentType[] baseComponent;
    private String type;
    private Class clazz;
    private String imageClass;
    private String className;


    <T extends Component> ComponentType(String className, String name, ComponentBaseType[] baseType, Class<T> clazz, String imageClass, ComponentType... baseComponent) {

        this.type = name();
        this.className = className;
        this.name = name;
        this.baseType = baseType;
        this.baseComponent = baseComponent;
        this.clazz = clazz;
        this.imageClass = imageClass;


    }

    public String getClassName() {
        return className;
    }

    public String getImageClass() {
        return imageClass;
    }

    public void setImageClass(String imageClass) {
        this.imageClass = imageClass;
    }

    @Override
    public String toString() {
        return type;
    }

    public String getType() {
        return type;
    }

    @Override
    public String getName() {
        return name;
    }

    public Class getClazz() {
        return clazz;
    }


    public Boolean isAbsValue() {
        return Arrays.asList(baseType).contains(ComponentBaseType.absValue);
    }

    public Boolean isAbsList() {
        return Arrays.asList(baseType).contains(ComponentBaseType.absList);
    }

    public Boolean isAbsUI() {
        return Arrays.asList(getUIComponents()).contains(this);
    }

    public Boolean isBar() {
        return Arrays.asList(getBarComponents()).contains(this);
    }


    public Boolean isAbsObj() {
        return Arrays.asList(baseType).contains(ComponentBaseType.absObj);
    }

    public Boolean isModuleObj() {
        return isAbsObj() && !isAbsUI();
    }

    public static ComponentType[] getUIComponents() {
        return getAllTypes(UI);
    }

    public static ComponentType[] getFormComponents() {
        return getAllTypes(ComponentBaseType.absValue);
    }

    public Boolean isDataObj() {
        ComponentType[] dataType = getCustomDataComponents();
        return Arrays.asList(dataType).contains(this);
    }

    public static ComponentType[] getCustomDataComponents() {
        return new ComponentType[]{
                ComboInput, CodeEditor, Label, Image, Input, Module
        };
    }


    public static ComponentType[] getListComponents() {
        return getAllTypes(ComponentBaseType.absList);
    }

    public static ComponentType[] getGridComponents() {
        return getAllTypes(TreeGrid);
    }

    public static ComponentType[] getBarComponents() {
        return getAllTypes(Bar);
    }

    public static ComponentType[] getTabsComponents() {
        return getAllTypes(Tabs);
    }


    public static ComponentType[] getAllTypes(ComponentType componentType) {
        Set<ComponentType> allTypes = new HashSet<>();
        allTypes.add(componentType);
        ComponentType[] types = ComponentType.values();
        for (ComponentType type : types) {
            Set<ComponentType> baseTypeSet = typeMap.get(type);
            if (baseTypeSet == null) {
                baseTypeSet = getAlltypes(type, null);
                typeMap.put(type, baseTypeSet);
            }
            if (baseTypeSet.contains(componentType)) {
                allTypes.add(type);
            }
        }
        return allTypes.toArray(new ComponentType[]{});
    }


    public static ComponentType[] getAllTypes(ComponentBaseType baseType) {
        Set<ComponentType> allTypes = new HashSet<>();
        ComponentType[] types = ComponentType.values();
        for (ComponentType type : types) {
            Set<ComponentBaseType> baseTypeSet = baseTypeMap.get(type);
            if (baseTypeSet == null) {
                baseTypeSet = getAllBaseTypes(type, null);
                baseTypeMap.put(type, baseTypeSet);
            }
            if (baseTypeSet.contains(baseType)) {
                allTypes.add(type);
            }
        }
        return allTypes.toArray(new ComponentType[]{});
    }

    public static Set<ComponentType> getAlltypes(ComponentType componentType, Set<ComponentType> baseTypeList) {
        if (baseTypeList == null) {
            baseTypeList = new HashSet<>();
        }
        baseTypeList.addAll(Arrays.asList(componentType.getBaseComponent()));
        ComponentType[] types = componentType.getBaseComponent();
        for (ComponentType baseType : types) {
            getAlltypes(baseType, baseTypeList);
        }
        return baseTypeList;
    }

    public static Set<ComponentBaseType> getAllBaseTypes(ComponentType componentType, Set<ComponentBaseType> baseTypeList) {
        if (baseTypeList == null) {
            baseTypeList = new HashSet<>();
        }
        baseTypeList.addAll(Arrays.asList(componentType.getBaseType()));
        ComponentType[] types = componentType.getBaseComponent();
        for (ComponentType baseType : types) {
            getAllBaseTypes(baseType, baseTypeList);
        }
        return baseTypeList;
    }

    public static ComponentType fromType(String typeName) {
        for (ComponentType type : ComponentType.values()) {
            if (type.getClassName().equals(typeName)) {
                return type;
            }
        }
        return Module;
    }

    public ComponentBaseType[] getBaseType() {
        return baseType;
    }

    public ComponentType[] getBaseComponent() {
        return baseComponent;
    }
}


http://www.kler.cn/a/550925.html

相关文章:

  • TensorFlow深度学习实战(8)——卷积神经网络
  • Spring MVC 的核心以及执行流程
  • Python实用技巧:轻松上手自动化数据爬取与存储
  • DeepSeek原理介绍以及对网络安全行业的影响
  • 计时器任务实现(保存视频和图像)
  • 【linux】在 Linux 上部署 DeepSeek-r1:32/70b:解决下载中断问题
  • 【机器学习】线性回归 多项式线性回归
  • 【MATLAB】解决mod函数、逻辑判断的误差问题
  • 小狐狸ai3.1.2版本源码无授权版本内 含搭建教程+各种上线教程
  • AMD R9-9950X服务器:游戏服务器搭建的终极利器
  • 解锁原型模式:Java 中的高效对象创建之道
  • Linux内存管理:深度解析与探索
  • 春招项目=图床+ k8s 控制台(唬人专用)
  • 如何使用Pytest参数化测试大规模生成单元测试用例
  • 在 Spring 怎么解决循环依赖的问题?
  • 前端模板引擎
  • 前端常见面试题-2025
  • ruby 的安装
  • 机器学习_19 集成学习知识点总结
  • less-8 boolen盲注,时间盲注 函数补全