gpt4 book ai didi

java - IActionDelegate 的 selectionChanged() 未被调用

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:23 25 4
gpt4 key购买 nike

我有一个 Action 类,我想根据文件扩展名启用它。
我已经在操作类的 selectionChanged() 中编写了这个逻辑。

但是当我启动 eclipse 并单击上下文菜单的文件时,此方法不会被调用。
当我点击任何操作时,点击文件后会调用 selectionChanged() 方法。

如何使 selectionChanged() 方法始终在单击 eclipse 中的文件时调用,以便在单击操作之前禁用操作?

最佳答案

根据当前选择的元素类型,有很多启用/禁用的操作。
例如,查看对不打算复制的元素的“复制”操作:

http://web.archive.org/web/20120503153234/http://img522.i_mageshack.us/img522/448/eclipseinactivecommand.png

这意味着您可以检查 org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart管理自己的上下文菜单及其关联的操作。

从方法开始menuAboutToShow() , 使用 PackageExplorerActionGroup类,包括 CCPActionGroup管理复制、剪切和粘贴操作。
最后一类说明了 Actions 的注册,其中包括 CopyToClipboardAction。 :
它确实实现了 selectionChanged method .

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);
}
}

关于java - IActionDelegate 的 selectionChanged() 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2287644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com