如果您需要在编辑器或视图中复制(或任何命令)特定行为,您将为其激活处理程序。通常在您的createPartControl(Composite)
方法中:
IHandlerService serv = (IHandlerService) getSite().getService(IHandlerService.class);
MyCopyHandler cp = new MyCopyHandler(this);
serv.activateHandler(org.eclipse.ui.IWorkbenchCommandConstants.EDIT_COPY, cp);
另一种常见的方法是通过你的 plugin.xml 提供一个处理程序:
<handler commandId="org.eclipse.ui.edit.copy"
handler="com.example.app.MyCopyHandler">
<activeWhen>
<with variable="activePartId">
<equals value="com.example.app.MyEditorId"/>
</with>
</activeWhen>
</handler>
然后在您的处理程序中,您将获得活动部分并在其上调用您的复制实现。前任:
IWorkbenchPart part = HandlerUtil.getActivePart(event);
if (part instanceof MyEditor) {
((MyEditor)part).copy();
}