『GEF』如何在Palette中添加自定义菜单。

   在GEF3.0中,支持了GraphicalEditorWithFlyoutPalette面板,它可以折叠,而且有右键菜单,通过重载,我们可以在它的右键菜单上增加我们自己的功能。

   首先,需要重载Editor的createPaletteViewerProvider方法,返回一个我们自己的

PaletteViewerProvider对象,如下:

 

 

 

@Override

 

 

protected  PaletteViewerProvider createPaletteViewerProvider() {

 

 

 

 

 

    return new MenuPaletteProvider( getEditDomain());

}

 

    然后,新建一个MenuPaletteProvider,继承自PaletteViewerProvider,这样我们可以在

configurePaletteViewer方法中添加我们自己的菜单就可以了,完整代码如下:

import org.eclipse.gef.EditDomain;
import org.eclipse.gef.ui.palette.PaletteViewer;
import org.eclipse.gef.ui.palette.PaletteViewerProvider;
import org.eclipse.gef.ui.palette.PaletteContextMenuProvider;
import org.eclipse.jface.action.IMenuManager;
import umldesigner.actions.AddNewPaletteObjectAction;

public class MenuPaletteProvider extends PaletteViewerProvider{

 private BasicGraphicalEditor edit;
 public MenuPaletteProvider(BasicGraphicalEditor editor, EditDomain graphicalViewerDomain)
 {
  super(graphicalViewerDomain);
  this.edit = editor;
 }
 
 @Override
 protected void configurePaletteViewer(PaletteViewer viewer) {
  // TODO Auto-generated method stub
  viewer.setContextMenu(new MenuPaletteContextMenuProvider(edit, viewer));
 }
}

class MenuPaletteContextMenuProvider extends PaletteContextMenuProvider
{
 private AddNewPaletteObjectAction anpoa;
 private BasicGraphicalEditor edit;
 public MenuPaletteContextMenuProvider(BasicGraphicalEditor editor, PaletteViewer palette) {
  super(palette);
  this.edit = editor;
  // TODO Auto-generated constructor stub
 }

 @Override
 public void buildContextMenu(IMenuManager menu) {
  // TODO Auto-generated method stub
  super.buildContextMenu(menu);
  anpoa = new AddNewPaletteObjectAction(edit);
  //menu.add(anpoa);
 }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值