如何在Eclipse中获取当前所选文件的路径?

时间:2011-05-31 05:29:38

标签: eclipse eclipse-plugin

我想在Eclipse工作区中获取当前所选文件的路径,但我的项目是一个简单的视图插件项目。

我只想在用户打开视图后立即显示所选文件的名称/路径。

2 个答案:

答案 0 :(得分:5)

你得到了@Danail Nachev提到的当前选择。有关使用选择服务的信息,请参阅http://www.eclipse.org/articles/Article-WorkbenchSelections/article.html

完成选择后,最常见的模式是:

    if (selection instanceof IStructuredSelection) {
        IStructuredSelection ssel = (IStructuredSelection) selection;
        Object obj = ssel.getFirstElement();
        IFile file = (IFile) Platform.getAdapterManager().getAdapter(obj,
                IFile.class);
        if (file == null) {
            if (obj instanceof IAdaptable) {
                file = (IFile) ((IAdaptable) obj).getAdapter(IFile.class);
            }
        }
        if (file != null) {
            // do something
        }
    }

编辑:

通常,您会从InputStream获得IFile并以此方式处理。使用某些FileSystemProviders或EFS实现,可能没有该文件的本地路径。

PW

答案 1 :(得分:2)

您可以使用以下代码使用两种方法检索当前工作台选择

<击>

<击>
  1. 通过工作台SelectionService
  2. getViewSite().getSelectionProvider().getSelection()
  3. <击>

    getViewSite().getWorkbenchWindow().getSelectionService()

    您可以在this article中找到更多信息。

    使用全局工作台选择是更好的方法,因为它使您的视图可以从任何地方获取选择,这是用户可能期望的(我至少这样做)。此外,Eclipse中的几乎所有视图(我不知道此规则的例外情况)都在使用这种方法。

    如果你绝对必须将你的视图绑定到另一个视图,那么你可以让所有IWorkbenchPage迭代它们并通过它的ID搜索视图,当你找到视图时,你调用它的{{1获得选择。

    只有通过阅读这个解释,才能让我的头发直线上升。考虑到同一视图可能有多个实例,您最终可以从随机视图中进行选择。我不确定用户是否会理解事情是如何工作的,除非你有一些明确的规则,这些规则正是你需要的。这取决于你。

    `