Palette(面板):作为图形化编辑器的一部分而普片存在。一般它作为创建节点的源,包括线,类似一个编辑器的tool。
PaletteEntry:整个Palette框架的基类,它里面存在着大量的对面板上节点描述的最基本信息。这也表明,所有的面板元素的基本信息都可以定制,包括group之类的组容器。在一个PaletteEntry对象里,你只能找到它的父,而不可以找到子,因为PaletteEntry本身没有容器的特性。
PaletteContainer:所有面板上容器组件的基类。在一个PaletteEntry对象里,你只能找到它的父,而不可以找到子,因为PaletteEntry本身没有容器的特性。而PaletteContainer里面所有的方法都是操作它的子节点的,包括移动子节点的位置,只有上下。
PaletteRoot:整个面板的根节点。
PaletteDrawer :一个容器,类似抽屉,也有人说它像手风琴。一个PaletteDrawer 对象只是手风琴的一个页,一般PaletteDrawer 对象都是用于分组。另外,可以设置它的初始状态,是打开还是关闭。
PaletteGroup:PaletteGroup跟PaletteDrawer类似,唯一的区别就是PaletteDrawer是可以缩小关闭的能力,而PaletteGroup没有。
PaletteStack:这个暂时还不会用。
PaletteToolbar:这个也没用过,不知道涨啥样,等有机会试试看看样子再补充。
非容器组件:
PaletteSeparator:分隔符,类似菜单上的那个分隔符。
PaletteTemplateEntry:这个也没有用过,此类里面没有什么东西,就一个Object template对象,具体干嘛用的,以后再补充。
ToolEntry:一个父类,所有我们在面板上看到的那些常用的组件,都是它的子类。
ToolEntry的子类:
CreationToolEntry:
改变Palette的初始状态:
org.dengues.designer.ui.process.editors.GEFComponentsEditor。在一个Editor里面重写getPaletteRoot()方法。可以返回一个PaletteRoot。但是要配置Palette就要覆盖 getPalettePreferences();返回一个FlyoutPreferences主要需要三个参数:
public int getDockLocation() {
return getPreferenceStore().getInt(IDenguesPrefsConstant.PALETTE_DOCK_LOCATION);
}
public int getPaletteState() {
return getPreferenceStore().getInt(IDenguesPrefsConstant.PALETTE_STATE);
}
public int getPaletteWidth() {
return getPreferenceStore().getInt(IDenguesPrefsConstant.PALETTE_SIZE);
}
这三个参数的值范围:
getDockLocation()的参数有:
1.PositionConstants.EAST表示Palette在右边或说东边,这个是默认值。
2.PositionConstants.WEST表示Palette在左边或说西边。
getPaletteState()的参数有:
1.FlyoutPaletteComposite.STATE_COLLAPSED表示Palette会用完后自动收缩,还可以放大缩小。为默认值。
2.FlyoutPaletteComposite.STATE_PINNED_OPEN表示Palette会无法收缩和放大缩小。
getPaletteWidth()的参数范围是:FlyoutPaletteComposite.MAX_PALETTE_SIZE=500;
FlyoutPaletteComposite.MIN_PALETTE_SIZE=20;
FlyoutPaletteComposite.DEFAULT_PALETTE_SIZE=125;
改变Palette的初始布局:
获取到PaletteViewer的对象,然后获取PaletteViewerPreferences对象,为其配置项进行设置值。
//设置面板的初始布局方式 paletteViewerProvider.getViewer().getPaletteViewerPreferences().setLayoutSetting( PaletteViewerPreferences.LAYOUT_DETAILS);
这里有一点需要注意的,setLayoutSetting改变了初始状态后,会刷新面板里面的节点。如果你改变布局样式的时候,面板的root节点还没有初始化,这个时候刷新就会报null指针异常。
所以解决的方式有两种:一种是重写属性改变的监听事件,另一种是在root初始化后再改变布局的样式,我选择了后者。
想办法在编辑器的configureGraphicalViewer方法里面,获取到PaletteViewer。