陶甄
新手
新手
  • UID380
  • 粉丝2
  • 关注2
  • 发帖数3
阅读:28197回复:0

如何给画板元素设置快捷键

楼主#
更多 发布于:2017-12-02 13:49
大体思路:就是给GraphicalViewer设置keyhandler。
需求:给图上的参与者(正文最小面)进行快捷键绑定
第一步
重写Editor中的ConfigureViewer()方法,完成大体思路,再逐个进行细节推敲
@Override
        protected void configureGraphicalViewer() {
                super.configureGraphicalViewer();
                
                 GraphicalViewer viewer = getGraphicalViewer();
                
                KeyHandler keyhandler=new KeyHandler();

                keyhandler.put(KeyStroke.getPressed('c',99,0),getActionRegistry().getAction("actor_action"));
                
                
                viewer.setKeyHandler(keyhandler);
                
                
        }


在这一步里我们进行了Keyhandler对象的创建。调用Keyhandler的put方法进行快捷键与命令的映射。
第一个参数是快捷键
快捷键,我们需要调用KeyStroke.getPressed('c',99,0)作为参数传入,第一个参数是字符,第二个是ASCII嘛,第三个是状态码直接传0即可,
第二个参数是个ID。ActionRegistry通过ID找到命令与快捷键进行绑定


第二步:创建命令
这个命令如何写呢?需要集成JFACE的Action类。重写run方法和getId方法
public class ActorAction extends Action {

private UsecaseDiagramEditor e;

@Override
        public String getId() {
                return "actor_action";
        }

@Override
public void run() {
        PaletteViewer viewer = getPaletteViewer();
        GraphicalViewer gv = e.getGv();
        EditPart focusEditPart = gv.getFocusEditPart();
        CreationToolEntry pe = getToolEntry(viewer);
        viewer.setActiveTool(pe);
      
        
}

private CreationToolEntry getToolEntry(PaletteViewer viewer) {
        PaletteRoot root = viewer.getPaletteRoot();
        List list = root.getChildren();
        PaletteContainer pc=((PaletteContainer)list.get(2));
        CreationToolEntry pe =  (CreationToolEntry) pc.getChildren().get(0);
        
        return pe;
}

private PaletteViewer getPaletteViewer() {
        e = (UsecaseDiagramEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
        DefaultEditDomain ed = e.getEditDomainToDialog();
        PaletteViewer viewer = e.getEditDomainToDialog().getPaletteViewer();
        return viewer;
}
这里多了这里都了两个方法getToolEntry和getPaletteViewer。目的是取到画板对象取到参与者工具对象。将焦点设置到参与者对象上。命令就是这样。
OK。。。。这样就完成快捷键绑定了。

最新喜欢:

刘广昱刘广昱
游客

返回顶部