【发布时间】:2011-05-31 05:29:37
【问题描述】:
我想在 Eclipse 工作区中获取当前选定文件的路径,但是我的项目是一个简单的视图插件项目。
我只想在用户打开视图时显示所选文件的名称/路径。
【问题讨论】:
我想在 Eclipse 工作区中获取当前选定文件的路径,但是我的项目是一个简单的视图插件项目。
我只想在用户打开视图时显示所选文件的名称/路径。
【问题讨论】:
您会得到@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
}
}
编辑:
通常你会从IFile 得到一个InputStream 并以这种方式处理它。使用某些 FileSystemProviders 或 EFS 实现,可能没有文件的本地路径。
私服
【讨论】:
您可以使用以下代码检索当前工作台选择使用两种方法:
罢工>
getViewSite().getSelectionProvider().getSelection()getViewSite().getWorkbenchWindow().getSelectionService()
您可以在this article找到更多信息。
使用全局工作台选择是更好的方法,因为它使您的视图可以从任何地方获得选择,这是用户可能期望的(我至少这样做)。此外,Eclipse 中的几乎所有视图(我不知道这条规则的例外情况)都在使用这种方法。
如果您绝对必须将您的视图绑定到另一个视图,那么您可以获取所有 IWorkbenchPage 迭代它们并通过其 ID 搜索视图,当您找到该视图时,您调用 get 它的 SelectionProvider 来获取选择。
只有阅读这个解释,才能让我的头发直起来。考虑到同一视图可能有多个实例,您最终可能会从随机视图中进行选择。我不确定用户是否会理解事物的工作方式,除非您有一些明确的规则,这些规则正是您需要的。这取决于你。
`
【讨论】: