Eclipse Plugin: 右键弹出菜单新增项,如何确定文件name/path?
Eclipse Plugin: added new item to right-click popup menu, how can the file name/path be determined?
在菜单上选择新项目时触发的execute方法中的ExecutionEvent似乎不是指右键单击的文件。我想知道我是否需要为此添加侦听器,如果需要,这是否会干扰执行方法。
您在事件中得到的是当前选择,它可能是一个文件,也可能是其他内容,具体取决于您如何定义菜单 'enabledWhen'。您可以从选择中获取文件。
IStructuredSelection selection = HandlerUtil.getCurrentStructuredSelection(event);
if (!selection.isEmpty()) {
IFile file = Adapters.adapt(selection.getFirstElement(), IFile.class, true);
if (file != null) {
... your code
}
}
在某些情况下,IFile
的适配器不可用,但 IResource
的适配器可用。在这种情况下使用:
IResource resource = Adapters.adapt(selection.getFirstElement(), IResource.class);
if (resource instanceof IFile) {
IFile file = (IFile)resource;
}
注意:getCurrentStructuredSelection
和 Adapters
是相对较新的 API。在旧版本的 Eclipse 中,您需要稍微复杂一些的代码。
HandlerUtil
在org.eclipse.ui.workbench
插件中是org.eclipse.ui.handlers.HandlerUtil
,Adapters
是org.eclipse.core.runtime.Adapters
在菜单上选择新项目时触发的execute方法中的ExecutionEvent似乎不是指右键单击的文件。我想知道我是否需要为此添加侦听器,如果需要,这是否会干扰执行方法。
您在事件中得到的是当前选择,它可能是一个文件,也可能是其他内容,具体取决于您如何定义菜单 'enabledWhen'。您可以从选择中获取文件。
IStructuredSelection selection = HandlerUtil.getCurrentStructuredSelection(event);
if (!selection.isEmpty()) {
IFile file = Adapters.adapt(selection.getFirstElement(), IFile.class, true);
if (file != null) {
... your code
}
}
在某些情况下,IFile
的适配器不可用,但 IResource
的适配器可用。在这种情况下使用:
IResource resource = Adapters.adapt(selection.getFirstElement(), IResource.class);
if (resource instanceof IFile) {
IFile file = (IFile)resource;
}
注意:getCurrentStructuredSelection
和 Adapters
是相对较新的 API。在旧版本的 Eclipse 中,您需要稍微复杂一些的代码。
HandlerUtil
在org.eclipse.ui.workbench
插件中是org.eclipse.ui.handlers.HandlerUtil
,Adapters
是org.eclipse.core.runtime.Adapters