[]
如果一个属性的类型是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;
}
在设计器中效果如下:
如果需要更细致的控制,可以通过 @ListProperty 的其他属性来控制
1.控制列表最大或最小元素个数
设置 @ListProperty 的 maxCount 和 minCount 属性。
代码
@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.指定属性的默认值
给list的元素对象字段上面添加 @ListPropertyItemSetting 注解,并设置 defaultName 的值。
代码
@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.指定属性的默认列宽
给list的元素对象字段上面添加 @ListPropertyItemSetting 注解,并设置 defaultWidth 的值。
代码
@Data
public class MyObj extends ObjectPropertyBase {
@ListPropertyItemSetting(defaultWidth = 250)
private String name;
private String description;
}
设计器时效果
4.指定属性值不可重复
给list的元素对象字段上面添加 @ListPropertyItemSetting 注解,并设置 isUnique的值。
代码
@Data
public class MyObj extends ObjectPropertyBase {
@ListPropertyItemSetting(isUnique = true)
private String name;
private String description;
}
设计器时效果
5.内嵌显示
.通过标注@FlatListProperty 注解可以让列表在属性面板中内嵌显示
代码
@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;
}
设计器中效果