`

Eclipse插件开发之获得当前项目

 
阅读更多

在进行eclipse插件开发的时候,我们经常需要知道当前选中的项目是什么,以便针对项目做一些处理。通过当前项目,我们更可以得到项目中的任何目录和文件。所以获得当前项目的是很有用的。
    google了一下这方面的资料。基本都说是通过ISelection来获得。可是ISelection却没说从哪里来,一般都是当做抽象方法的参数,在我们实现方法时传给我们。可是这样很不爽,我们可能经常会需要在没有ISelection参数的方法中获得当前project对象。
    没关系,使用下面这段代码就可以让我们在我们插件里的任何地方得到当前项目:

 

public static IProject getCurrentProject(){  
        ISelectionService selectionService =   
            Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();  
  
        ISelection selection = selectionService.getSelection();  
  
        IProject project = null;  
        if(selection instanceof IStructuredSelection) {  
            Object element = ((IStructuredSelection)selection).getFirstElement();  
  
            if (element instanceof IResource) {  
                project= ((IResource)element).getProject();  
            } else if (element instanceof PackageFragmentRootContainer) {  
                IJavaProject jProject =   
                    ((PackageFragmentRootContainer)element).getJavaProject();  
                project = jProject.getProject();  
            } else if (element instanceof IJavaElement) {  
                IJavaProject jProject= ((IJavaElement)element).getJavaProject();  
                project = jProject.getProject();  
            }  
        }   
        return project;  
    }  

 

上述是抄袭网上的做法,获取选中的节点然后获取工程当然是合理的。只是有时候未必好用,因为你不清楚你选中的到底是什么。

 

public static IProject getProject(){
        IProject project = null;
        
        //1.根据当前编辑器获取工程
        IEditorPart part = getActiveEditor();
        if(part != null){
            Object object = part.getEditorInput().getAdapter(IFile.class);
            if(object != null){
                project = ((IFile)object).getProject();
            }
        }
        
        if(project == null){
            ISelectionService selectionService =   
                    Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();  
            ISelection selection = selectionService.getSelection();  
            if(selection instanceof IStructuredSelection) {  
                Object element = ((IStructuredSelection)selection).getFirstElement();  
      
                if (element instanceof IResource) {  
                    project= ((IResource)element).getProject();  
                } else if (element instanceof PackageFragmentRootContainer) {  
                    IJavaProject jProject =   
                        ((PackageFragmentRootContainer)element).getJavaProject();  
                    project = jProject.getProject();  
                } else if (element instanceof IJavaElement) {  
                    IJavaProject jProject= ((IJavaElement)element).getJavaProject();  
                    project = jProject.getProject();  
                } else if(element instanceof EditPart){
                    IFile file = (IFile) ((DefaultEditDomain)((EditPart)element).getViewer().getEditDomain()).getEditorPart().getEditorInput().getAdapter(IFile.class);
                    project = file.getProject();
                } 
            }   
        }
        
        return project;
    }
 

 

 

分享到:
评论
5 楼 M大米饭 2017-11-08  
19774279 写道
xj1990129 写道
PackageFragmentRootContainer 是哪个包里面的啊..我刚开始学

import org.eclipse.jdt.internal.ui.packageview.PackageFragmentRootContainer;

为什么我导不了这个包   可以发我一下么
4 楼 19774279 2013-05-22  
xj1990129 写道
PackageFragmentRootContainer 是哪个包里面的啊..我刚开始学

import org.eclipse.jdt.internal.ui.packageview.PackageFragmentRootContainer;
3 楼 xj1990129 2013-05-07  
PackageFragmentRootContainer 是哪个包里面的啊..我刚开始学
2 楼 冷炳腾 2012-12-10  
suyang119 写道
你确定这个方法是可以的吗?为什么我这边报错。

以最后那段代码为例,它是通过两种方式尝试获取当前活动的IProject对象。
第一种是通过活动的也就是你正打开的编辑器对象为基础,这个时候你打开的是那个IProject里面的文件,获取的就是那个IProject。
第二种是通过ISelectionService服务获取当前选中的对象,我这里只是对eclipse默认的一种类型的对象进行了处理。
如果你选中了非上述类型的对象,就需要自己在这个代码的基础上完善。
1 楼 suyang119 2012-10-30  
你确定这个方法是可以的吗?为什么我这边报错。

相关推荐

    eclipse插件开发,贡献一个eclipse插件,一个可以获取插件依赖关系的插件

    在进行eclipse插件开发过程中,一个插件可能依赖于许多插件,PDE提供了关系列举,但是发现没有提供将当前插件依赖的jar包直接导出的功能,此插件分析PDE的插件依赖然后增加jar文件获取

    eclipse项目启动快捷插件

    在开发一个项目的时候总需要在浏览器和eclipse直接切换,使用eclipse内置的还不方便,所以此插件就是在eclipse中直接调用浏览器来打开项目的插件,可以很方便快捷的打开项目,只需要把当前开发的项目路径配置上即可...

    eclipse插件-Activiti BPMN 2.0 designer

    eclipse插件之Activiti BPMN 2.0 designer,activiti开发必备的可视化插件,当前版本为5.9.3,适 用于eclipse3.7以上版本,已经在eclipse3.7、3.8版本中亲自测试通过。 使用方法: 将解压后的文件夹“Activiti BPMN...

    Eclipse权威开发指南2.pdf

    1.4 获取与安装Eclipse.. 11 1.5 本章小结...... 11 1.6 参考文献...... 12 第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 ...

    Eclipse权威开发指南1.pdf

    1.4 获取与安装Eclipse.. 11 1.5 本章小结...... 11 1.6 参考文献...... 12 第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... ...

    原创 Eclipse Plugin 插件: 高级搜索功能 - com.realzyc.search.jar

    原创Eclipse插件: 高级搜索功能 - com.realzyc.search.jar Eclipse Plugin 插件 java 全局 搜索 + 特性: 相比与原有eclipse仅支持的在当前文档的搜索功能, 本插件支持了如下的搜索范围: - 当前文档 原有 查找/...

    使用eclipse查看jar包的工具

    eclipse查看jar包源码工具:在Eclipse查看开发包jar源码的方法如下: 1.选择项目,右键中单击【Properties】 2.【Java Build Path】-【Configure Build Path】-【Libraries】,在下面找到如:Guava-r09.jar包,...

    eclipse 开发c/c++

    CDT 项目(有关链接, 请参阅本文后面的 参考资料一节)致力于为 Eclipse 平台提供功能完全的 C/C++ 集成开发环境(Integrated Development Environment,IDE)。 虽然该项目的重点是 Linux,但它在可使用 GNU ...

    eclipse中快速打开CMD窗口插件

    本插件是参照esay explorer插件进行开发的,能够在eclipse中快速打开CMD窗口,并自动切换到当前文件目录下,方便利用CMD执行命令。 将QuickCmd文件放到eclipse的dropins下或者将插件放到plugins即可。

    Eclipse权威开发指南3.pdf

    1.4 获取与安装Eclipse.. 11 1.5 本章小结...... 11 1.6 参考文献...... 12 第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... ...

    代码统计插件 eclipse plugin java

    代码统计插件 eclipse plugin java 提供xls导出。 liugang594 开发的,方便下载 这是一款小型的代码统计软件。它具有以下功能: 1、良好的统计性能。可以统计各种方式的注释,如单行、多行注释;注释在行前 、行...

    WindowBuilder下载,eclipse离线安装(附带步骤)

    Eclipse可视化开发之windowBuilder插件,eclipse插件,为2019-07-16当前最新版的WindowBuilder插件>>repository.zip,该插件为离线安装, 以下为安装步骤: 离线安装说明 1,把下载的windowbuilder.zip,解压出...

    单元测试框架-TestNG-的eclipse插件

    单元测试框架TestNG的eclipse插件安装说明: 本资源包含org.jtester.plugin_0.2.2.jar和org.testng.eclipse_6.1.1.20110713_1401.7z。将org.testng.eclipse_6.1.1.20110713_1401.7z解压缩后得到的文件org.testng....

    补丁包抽取工具(Eclipse插件)

    在eclipse编辑器中: 1、随时右键保存当前文件路径到文件清单中。 2、随时打开当前文件所在的系统目录,或打开当前Java类所编译生成的class目录 3、点击打包可直接根据文件清单生成你想要的补丁包,保存到指定地方

    Eclipse安装与使用.doc

    Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse...

    buildship:用于Gradle的Eclipse插件项目

    Buildship是一组Eclipse插件,可将Gradle与Eclipse IDE进行深度集成。 Buildship托管在。 要求 Buildship可以与Eclipse IDE 4.2.x或更高版本一起使用。 较早版本的Eclipse IDE可能可以运行,但尚未经过明确测试。 ...

    Eclipse开发平台在J2EE中的应用.pdf

    Eclipse是一个当前很受欢迎的通用IDE集成开发平台.广泛地应用于软件开发领域。它同时也是一个开放源代码项目.提供了一个用于开发插件的框架和环境,使创建、集成和使用软件工具更加方便容易。Eclipse开发平台可以...

    ErrorLinkyThing:一个粗略的 Eclipse 插件,可将文件的超链接插入控制台

    ErrorLinkyThing 这是一个粗略的 Eclipse 插件,它将文件的超链接... 对于那些不熟悉 Eclipse 插件开发的人,这里是使用插件的一种方法: 获取文件并将它们作为项目在 Eclipse 中打开。 找到插件用来识别文件行引用的

    eclipse 打开选中文件或文件夹位置

    eclipse 有一个插件是open explorer,我最近下载下来安装不能用了,查了一下原理,自己开发了一个小插件 该插件主要是可以用windows的explorer 打开eclipse中被选择的文件或文件夹的位置,不用再复制路径信息然后...

    基于JAVA jsp+sql即时通讯工具的毕业设计,j2se,使用Eclipse等作为开发工具,在开发过程中用到了时下流行的重构

    Java是当前比较流行的开发语言之一,它有着自己的易用特点与性能优势,比如跨平台、安全性、多线程、网络Socket编程、数据流概念等方面,因此通过对开源即时通讯LinuxQQ的研究和分析,基于Java语言和J2EE规范设计了...

Global site tag (gtag.js) - Google Analytics