您的位置:首页 > 其它

GEF插件开发(二,画板元素创建)

2016-08-10 00:00 281 查看
本章节在上一章节基础上,实现编辑器右侧画板元素的添加(添加GEF默认画板工具单选与多选、自定义图形工具)。

1. 定义画板对象PalettRoot,通过工具类PaletteUtil创建画板对象。

关键代码如下:

private PaletteRoot root; // 调色板对象
/**
* 配置编辑器右侧画板
*/
@Override
protected PaletteRoot getPaletteRoot() {
if (root == null) {
root = PaletteUtil.createPalette();
}
return root;
}
2. 接下来在工具类中实现具体画板元素的创建。主要是通过在PaletteRoot对象中添加对应的分组信息与分组信息中的画板元素信息。

代码如下:

public class PaletteUtil {

public static PaletteRoot createPalette() {
PaletteRoot logicPalette = new PaletteRoot();
//在画板跟元素中添加画板分组与元素信息
logicPalette.addAll(createCategories(logicPalette));
return logicPalette;
}

private static List createCategories(PaletteRoot root) {
List<PaletteContainer> categories = new ArrayList<PaletteContainer>();
// 创建选择分组工具(一般有GEF自带单选与多选工具)
categories.add(createControlGroup(root));
// 创建自定义分组工具(一般在此分组下放置自定义图形工具、可以用多个分组管理图形)在我们创建用例图的图形元素角色与用例
categories.add(createEntityGroup(root));
return categories;
}

private static PaletteContainer createEntityGroup(PaletteRoot root) {
PaletteDrawer entities = new PaletteDrawer("元素");
entities.add(createEntityEntry("角色", "用例角色", Object.class,
"icons/actor16.gif", "icons/actor16.gif"));
entities.add(createEntityEntry("用例", "用例描述", Object.class,
"icons/usecase.gif", "icons/usecase.gif"));
return entities;
}

private static PaletteEntry createEntityEntry(String name, String tip,
Class<?> clazz, String icon, String bigIcon) {
// 创建自定义画板工具(参数含义分别为显示名称、提示信息:如果提示信息与显示名称一样将不显示提示、创建工厂(一般采用SimpleFactory,并创建对应的模型类)、显示小图标、显示大图标)
CreationToolEntry entry = new CreationToolEntry(name, tip,
new SimpleFactory(clazz),
UserCaseChartPlugin.getImageDescriptor(icon),
UserCaseChartPlugin.getImageDescriptor(bigIcon));
return entry;
}

private static PaletteContainer createControlGroup(PaletteRoot root) {
PaletteGroup controlGroup = new PaletteGroup("画板");
List<ToolEntry> entries = new ArrayList<ToolEntry>();
ToolEntry tool = select();
entries.add(tool);
root.setDefaultEntry(tool);
// 多选画板工具
entries.add(new MarqueeToolEntry("多选", "选择多个图形"));
controlGroup.addAll(entries);
return controlGroup;
}

public static ToolEntry select() {
// 单选画板工具
ToolEntry tool = new PanningSelectionToolEntry("单选", "选择图形");
return tool;
}

}
3. 为了将插件进一步规范,更改插件中Activator类为UserCaseChartPlugin,并在plugin.xml的Overview tab页的Activator类信息改为UserCaseChartPlugin类全名。



4. 最后,画板元素添加后效果如下。



ps:源码请参考http://bbs.hearker.com/read.php?tid=2158&fid=36 不知道怎么上传附件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  GEF