我想在Eclipse工作区中获取当前所选文件的路径,但我的项目是一个简单的视图插件项目。
我只想在用户打开视图后立即显示所选文件的名称/路径。
答案 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)
您可以使用以下代码使用两种方法检索当前工作台选择:
<击> 撞击>
<击>getViewSite().getSelectionProvider().getSelection()
<击> 撞击>
getViewSite().getWorkbenchWindow().getSelectionService()
您可以在this article中找到更多信息。
使用全局工作台选择是更好的方法,因为它使您的视图可以从任何地方获取选择,这是用户可能期望的(我至少这样做)。此外,Eclipse中的几乎所有视图(我不知道此规则的例外情况)都在使用这种方法。
如果你绝对必须将你的视图绑定到另一个视图,那么你可以让所有IWorkbenchPage
迭代它们并通过它的ID搜索视图,当你找到视图时,你调用它的{{1获得选择。
只有通过阅读这个解释,才能让我的头发直线上升。考虑到同一视图可能有多个实例,您最终可以从随机视图中进行选择。我不确定用户是否会理解事情是如何工作的,除非你有一些明确的规则,这些规则正是你需要的。这取决于你。
`