未被调用的IActionDelegate的selectionChanged()
我有一个动作类,我想根据文件扩展名启用它。
我已经在action类的selectionChanged()
中编写了这个逻辑。
但是,当我开始我的eclipse,并单击上下文菜单的文件时,此方法不会被调用。
当我点击任何动作时,在任何单击该文件后都会调用selectionChanged()
方法。
如何在点击eclipse中的文件时始终调用selectionChanged()
方法,以便在单击操作之前禁用操作?
根据当前选择的元素类型启用/禁用了大量操作。
例如,请参阅不应复制的元素上的“复制”操作:
这意味着您可以检查org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart
如何管理自己的上下文菜单及其相关操作。
从方法menuAboutToShow()
,使用PackageExplorerActionGroup
类,包括管理复制,剪切和粘贴操作的CCPActionGroup
。
最后一堂课影响了Actions的注册,其中包括CopyToClipboardAction
:
它确实实现了selectionChanged
方法 。
public void selectionChanged(IStructuredSelection selection) { try { List JavaDoc elements= selection.toList(); IResource[] resources= ReorgUtils.getResources(elements); IJavaElement[] javaElements= ReorgUtils.getJavaElements(elements); if (elements.size() != resources.length + javaElements.length) setEnabled(false); else setEnabled(canEnable(resources, javaElements)); } catch (JavaModelException e) { //no ui here - this happens on selection changes // http://bugs.eclipse.org/bugs/show_bug.cgi?id=19253 if (JavaModelUtil.isExceptionToBeLogged(e)) JavaPlugin.log(e); setEnabled(false); } }
看起来你正在“厌倦”Eclipse的懒惰插件加载(就像我一样)。 您可以查看Eclipse插件书或弹出窗口的手册 (我假设您正在使用)。 您必须使用所谓的声明机制来启用您的项目。 在您的情况下,它应该像添加nameFilter
一样简单。 这样,Eclipse可以避免加载你的插件,直到它实际需要运行(菜单项和插件执行的分离)。