Java EclipseRCP:CommonNavigator-双击打开文件

Java EclipseRCP:CommonNavigator-双击打开文件,java,eclipse,eclipse-rcp,Java,Eclipse,Eclipse Rcp,我有一个EclipseRCP应用程序,需要为其创建一个文件浏览器视图。我想给它传递一个根目录(本地计算机上的某个位置),视图应该填充该位置的所有文件和文件夹。在我看来,目前我正在使用CNF,因此 public class CurrDirExplorerView extends CommonNavigator 我重写了getInitialInput()以返回一个自定义根对象,其中包含一个目录路径。我正在使用java.io.File,因为IResources链接到工作区。我创建了一个元素对象,它类

我有一个EclipseRCP应用程序,需要为其创建一个文件浏览器视图。我想给它传递一个根目录(本地计算机上的某个位置),视图应该填充该位置的所有文件和文件夹。在我看来,目前我正在使用CNF,因此

public class CurrDirExplorerView extends CommonNavigator
我重写了
getInitialInput()
以返回一个自定义根对象,其中包含一个目录路径。我正在使用
java.io.File
,因为
IResources
链接到工作区。我创建了一个元素对象,它类似于
java.io.File
的包装器类,并返回名称等以支持标签和内容提供者。“我的视图”在“我的根对象”中指定的位置显示所有文件夹和文件,但由于它们不是
IResources
,因此当我双击文件时,它不会在编辑器中打开


有什么方法可以做到这一点吗?

CommonNavigator有一个受保护的方法:

受保护的无效句柄双击(双击事件事件)

不幸的是,它的javadoc说“此方法仅供内部使用”,但如果没有更好的选择,它仍然有用


另一种方法是:getCommonViewer(),它有addDoubleClickListener(),您可以定义自己处理doubleclick的逻辑。希望这有帮助。

导航器使用了一个全局首选项(见图)。如果要预设此首选项,必须在bundle
org.eclipse.ui.workbench的preferencestore中设置首选项键(布尔值)
OPEN\u单击


我应该将getCommonViewer()放置在哪里。添加DoubleClickListener()?我希望使用正确的方法,并且我不希望使用任何内部仅供使用的方法。如果我覆盖createPartControl,我会尝试@Override public void createPartControl(复合Apart){super.createPartControl(Apart);getCommonViewer()…},那么,如果我使用TreeViewer而不是CNF,不是更好吗?简短回答:ProjectExplorer也这样做,覆盖createPartControl。详细回答:我不知道你到底想用“双击”做什么。在eclipse中,当您希望将编辑器与某个文件(类型)关联时,通常的方法是贡献给org.eclipse.core.contenttype.contentTypes(conent类型及其id+文件关联)。在您的情况下,文件扩展名可以是“*”,编辑器可以是内置的TextEditor。您必须向插件xml中声明的编辑器添加contentTypeBinding。可能值得寻找我提到的这些“流行语”。是的,如果您的CNF与IResources相关联,这一点就可以使用,因此我提到我使用的是java.io.Files,因为我的视图不应该与工作区有任何关系。据我所知,IResources链接到一个工作区。谢谢你的回答,但不幸的是,这不是我想要的。我创建了自己的视图,扩展了common navigator,因为我使用的是java.io.file而不是IResource,所以我需要自己管理文件的打开。