阅读:28197回复:0
如何给画板元素设置快捷键
大体思路:就是给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。。。。这样就完成快捷键绑定了。 |
|
最新喜欢:刘广昱 |