[]
        
(Showing Draft Content)

列表属性

如果一个属性的类型是List类型,List的每一项又包含了子属性,那么可以通过标注 @ListProperty注解,使得活字格设计器可以通过弹出二级对话框来编辑该属性。

注意,自定义对象的类型应该从 ObjectPropertyBase 类派生。

@Data
@Icon("resources/Icon.png")
public class MyPluginServerCommand extends Command implements ICommandExecutableInServerSide {

    @ListProperty
    public List<MyObj> list;

    @Override
    public ExecuteResult execute(IServerCommandExecuteContext dataContext) {
        return new ExecuteResult();
    }

    @Override
    public String toString() {
        return "我的服务端命令插件";
    }
}
@Data
public class MyObj extends ObjectPropertyBase {
    private String name;
    private String description;
}

在设计器中效果如下:

image

如果需要更细致的控制,可以通过 @ListProperty 的其他属性来控制

1.控制列表最大或最小元素个数

  1. 设置 @ListProperty 的 maxCount 和 minCount 属性。

  2. 代码

    @Data
    @Icon("resources/Icon.png")
    public class MyPluginServerCommand extends Command implements ICommandExecutableInServerSide {
    
        @ListProperty(minCount = 1,maxCount = 5)
        public List<MyObj> list;
    
        @Override
        public ExecuteResult execute(IServerCommandExecuteContext dataContext) {
            return new ExecuteResult();
        }
    
        @Override
        public String toString() {
            return "我的服务端命令插件";
        }
    }
    @Data
    public class MyObj extends ObjectPropertyBase {
        private String name;
        private String description;
    }

2.指定属性的默认值

  1. 给list的元素对象字段上面添加 @ListPropertyItemSetting 注解,并设置 defaultName 的值。

  2. 代码

    @Data
    @Icon("resources/Icon.png")
    public class MyPluginServerCommand extends Command implements ICommandExecutableInServerSide {
    
        @ListProperty(minCount = 1,maxCount = 5)
        public List<MyObj> list;
    
        @Override
        public ExecuteResult execute(IServerCommandExecuteContext dataContext) {
            return new ExecuteResult();
        }
    
        @Override
        public String toString() {
            return "我的服务端命令插件";
        }
    }
    @Data
    public class MyObj extends ObjectPropertyBase {
    
        @ListPropertyItemSetting(defaultName = "Node")
        private String name;
        private String description;
    }
  3. 设计器时效果

    d4d6b383-66b6-4b1d-b58b-1608996a40a6


3.指定属性的默认列宽

  1. 给list的元素对象字段上面添加 @ListPropertyItemSetting 注解,并设置 defaultWidth 的值。

  2. 代码

    @Data
    public class MyObj extends ObjectPropertyBase {
    
        @ListPropertyItemSetting(defaultWidth = 250)
        private String name;
        private String description;
    }
  3. 设计器时效果

    image


4.指定属性值不可重复

  1. 给list的元素对象字段上面添加 @ListPropertyItemSetting 注解,并设置 isUnique的值。

  2. 代码

    @Data
    public class MyObj extends ObjectPropertyBase {
    
        @ListPropertyItemSetting(isUnique = true)
        private String name;
        private String description;
    }
  3. 设计器时效果

    e1afd47e-7640-4a19-af8f-5e999812fb63



5.内嵌显示

  1. .通过标注@FlatListProperty 注解可以让列表在属性面板中内嵌显示

  2. 代码

    @Data
    @Icon("resources/Icon.png")
    public class MyPluginServerCommand extends Command implements ICommandExecutableInServerSide {
    
        @FlatListProperty
        public List<MyObj> list;
    
        @Override
        public ExecuteResult execute(IServerCommandExecuteContext dataContext) {
            return new ExecuteResult();
        }
    
        @Override
        public String toString() {
            return "我的服务端命令插件";
        }
    }
    @Data
    public class MyObj extends ObjectPropertyBase {
    
        private String name;
        private String description;
    }
  3. 设计器中效果

    image