永发信息网

如何在Palette中添加自定义菜单

答案:2  悬赏:30  手机版
解决时间 2021-03-21 06:40
  • 提问者网友:山高云阔
  • 2021-03-21 02:22
如何在Palette中添加自定义菜单
最佳答案
  • 五星知识达人网友:平生事
  • 2021-03-21 03:52
首先,需要重载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楼网友:野慌
  • 2021-03-21 05:02
我是来看评论的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯