本插件已经发布到Eclipse Marketplace, 说明文档请见:
http://icode.wiki.lc/doku.php?id=zh:wiki:eclipse_explorer
修改历史:
2010-04-23:
1,修改对源文件目录不能打开的bug;
2,修改默认快捷键为CTRL+`(1左边的那个)原来的默认F3快捷键与某些eclipse版本存在冲突;
3,MANIFEST.MF依赖约束中去除版本绑定;
4,新添加一张效果示例图;
5,重新上传附件;
2011.06.16
1,支持自定义打开命令(支持linux系统)
2,添加附件tar.gz,内含源代码及导出的jar包
2011.08.03
1,修复linux系统下,无法对java project正确explorer的bug。
2,将preference 移动到general目录下
3,添加系统自动检测,linux默认为nautilus命令。
使用过MyEclipse的都知道有这么一个功能:选择文件->右键->MyEclipse->Open in Explorer能够在资源管理器中打开文件所在的文件夹,这个功能很实用,也很方便,不知道为什么eclipse不加个这个功能。不过在这里,我们可以开发一个eclipse的小插件(才5K)来实现这个功能,并将它集成到我们的eclipse中去。
准备工作:Eclipse Galileo(3.5.0) IDE, J2SE 1.5.0
一、创建一个插件工程。
取名为org.melord.pde.explorer,使用HelloWorld command模板,handler改名为OpenExplorerHandler,其它选项均为默认。
二、在plugin.xml extention选项卡设置菜单。
1,在org.eclipse.ui.bindings扩展点修改command 的sequence为F3(修改快捷键为F3);
2,删除org.eclipse.ui.menus扩展点下的menu menuContribution和toolbar menuContribution(不需要配置菜单栏与工具栏);
3,在org.eclipse.ui.menus扩展点添加popup menuContribution,其locationURI="popup:org.eclipse.ui.popup.any?after=additions"
在popup menuContribution下添加一个separator(分隔符),再添加我们的command;在icon中选择图标。
4,配置visiblewhen,含义如下,当选择的对象为org.eclipse.core.resources.IResource或org.eclipse.jdt.core.IJavaElement或org.eclipse.team.ui.synchronize.ISynchronizeModelElement实例时我们的command可见。关于表达式请参考eclipse core expression相关资料。
完整配置如下:
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:org.eclipse.ui.popup.any?after=additions">
<separator
name="org.melord.pde.explorer.separator1">
</separator>
<command
commandId="org.melord.pde.explorer.commands.sampleCommand"
icon="icons/fldr_obj.gif"
id="org.melord.pde.explorer.menus.sampleCommand"
mnemonic="%command.mnemonic">
<visibleWhen>
<iterate
ifEmpty="false">
<or>
<instanceof
value="org.eclipse.core.resources.IResource">
</instanceof>
<instanceof
value="org.eclipse.jdt.core.IJavaElement">
</instanceof>
<instanceof
value="org.eclipse.team.ui.synchronize.ISynchronizeModelElement">
</instanceof>
</or>
</iterate>
</visibleWhen>
</command>
</menuContribution>
</extension>
三、实现我们的command hanlder类
重写excute方法,如下:
/**
* the command has been executed, so extract extract the needed information
* from the application context.
*/
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil
.getActiveWorkbenchWindowChecked(event);
ISelection sel = window.getSelectionService().getSelection();
if (sel instanceof IStructuredSelection) {
Object obj = ((IStructuredSelection) sel).getFirstElement();
IResource resource = null;
String path = null;
// common resource file
if (obj instanceof IFile) {
resource = (IResource) obj;
path = resource.getLocation().toOSString();
path = path.substring(0, path.lastIndexOf(File.separator));
}
// other resource such as folder,project
else if (obj instanceof IResource) {
resource = (IResource) obj;
path = resource.getLocation().toOSString();
}
// explorer java element, contain field,method,package
else if (obj instanceof IJavaElement) {
// jar resource is null
if (obj instanceof JarPackageFragmentRoot) {
path = ((IPackageFragmentRoot) obj).getPath().toOSString();
// get folder
path = path.substring(0, path.lastIndexOf(File.separator));
} else if (obj instanceof IPackageFragmentRoot) {
// src folder
String prjPath = ((IPackageFragmentRoot) obj)
.getJavaProject().getProject().getParent()
.getLocation().toOSString();
path = prjPath
+ ((IPackageFragmentRoot) obj).getPath()
.toOSString();
} else if (obj instanceof IPackageFragment) {// other : package
resource = ((IPackageFragment) obj).getResource();
path = resource.getLocation().toOSString();
} else {// member:filed:
resource = ((IJavaElement) obj).getResource();
path = resource.getLocation().toOSString();
// get folder
path = path.substring(0, path.lastIndexOf(File.separator));
}
}
// explorer team ui resource
else if (obj instanceof ISynchronizeModelElement) {
resource = ((ISynchronizeModelElement) obj).getResource();
}
if (path != null) {
try {
Runtime.getRuntime().exec("explorer " + path); //$NON-NLS-1$
} catch (IOException e) {
//
}
}
}
return null;
}
四、国际化。
在plugin.xml OverView选项卡点击/选择Externalize String。对plugin.xml进行国际化。
在bundle.properties同级目录下创建一个bundle_zh.properties作为中文的资源文件,此过程推荐使用第三方插件完成。不过需要国际化的其实就一个command的label而已。难度不大。
五、测试运行及打包发布。
测试通过没问题就发布吧。
发布时选择使用Directory方式。发布之后会在目标文件夹生成一个plugins文件夹,里面有一个jar。就是我们的插件包了。
六、linux包使用说明
解压后,plugins/下面有jar包,直接copy到eclipse后,重启
打开Window->Preference,在Explorer Preferences中输入linux下打开文件管理器命令
七、附录
1,工程源文件下载
2,可运行的插件包下载
- 大小: 609.9 KB
分享到:
相关推荐
Eclipse 插件开发 - JDT Eclipse 插件开发中的 JDT(Java Development Tools)是用于定义 Java 核心元素和 API 的插件。在开发特定于 Java 的功能部件时,总是应该将此插件列示为先决条件。JDT 核心包使您能够访问 ...
为了在Eclipse中方便地调试和运行基于Jetty的Web应用,可以安装Jetty For Eclipse插件。这个压缩包"Jetty For Eclipse 插件快速安装.rar"包含了必要的文件,帮助用户快捷地在Eclipse环境中集成Jetty。 1. **插件...
### Eclipse插件开发知识点 #### 一、插件开发概述 **1. 简述** Eclipse是一款基于Java的开源集成开发环境(IDE),它不仅支持Java开发,还支持C/C++、PHP、Python等多种语言。Eclipse的核心非常小,它的强大功能...
### 在Eclipse下开发BPEL实例的知识点详解 #### 一、环境准备 **1.1 预置环境** - **JDK版本:** 需要安装JDK 1.6版本,这是BPEL开发的基本要求之一。 - **Tomcat版本:** 使用的是Tomcat 6.0,作为Web应用服务器...
"activiti-eclipse-plugin" 指的是 Activiti 的 Eclipse 插件,这个插件是为了方便开发者在 Eclipse 集成开发环境中设计、管理和调试 Activiti 流程模型而设计的。 在 Eclipse 中集成 "activiti-eclipse-plugin" ...
Eclipse作为一款强大的开源开发工具,广泛应用于Java、JavaScript等多语言的开发,其丰富的插件系统和优秀的代码辅助功能深受开发者喜爱。 本教程涵盖的内容包括: 1. **Eclipse基础**:首先介绍如何下载、安装和...
若已有 Eclipse 安装,则将下载的文件夹中的 `plugins` 和 `features` 目录内容复制到对应的 Eclipse 文件夹中,并通过 DOS 命令行启动 Eclipse-clean 清除缓存后启动 Eclipse。 ##### 安装方法二:通过 Eclipse ...
3. **plugins_dir文件夹**:这是Eclipse插件的核心部分,包含了一系列.jar文件和目录,这些是插件的实现和资源。将这个文件夹复制到Eclipse的安装目录下的"dropins"或"plugins"文件夹中,Eclipse在启动时会自动识别...
- 直接将之前配置成功的D:\Program Files\Adobe\FlexBuilder3Plug-in\eclipse下的features和plugins文件夹复制到其他Eclipse实例对应的目录下。 2. **重启Eclipse** - 重新启动Eclipse,即可使用Flex3功能。 ###...
Eclipse是一款广泛使用的Java集成开发环境,它允许开发者通过插件扩展其功能。"eclipse-testng离线包"就是专门为Eclipse设计的TestNG插件的离线安装版本。 TestNG的主要特点包括: 1. **测试套件(Test Suites)**...
在本文中,作者使用的是较旧版本的ADT 0.9.5,需要手动将features和plugin文件夹中的内容复制到Eclipse对应的目录。对于最新版本的ADT,请参照官方文档进行安装,因为不同版本的安装方法可能有所变化。 设置完ADT后...
Eclipse Protobuf是一款由Google开发的数据序列化工具,它允许开发者定义数据结构,然后生成能够轻松在各种数据流中解析和编码这些结构的代码。在本文中,我们将深入探讨如何在Eclipse环境中安装和配置Protobuf,...
Eclipse 3.5.1汉化包是一个针对Eclipse集成开发环境的本地化插件,主要用于将Eclipse的工作界面从英文翻译成简体中文,方便中国用户更便捷地使用这款强大的开发工具。Eclipse是一个开源的Java IDE,广泛应用于Java、...
通过这个插件,开发者可以在Eclipse内直接启动、停止、调试和管理Tomcat实例,而无需离开IDE。对于开发Web应用程序来说,这种集成极大地提高了效率。 描述中提到,Neno插件不仅支持最新的Tomcat 9.x系列,同时也...
在这个压缩包中,包含了“plugins_9.rar”、“plugins_8.rar”和“plugins_10.rar”三个文件,这些是Eclipse插件的离线安装包,用于为不同版本的Eclipse添加BPEL支持。 安装BPEL插件的步骤如下: 1. **解压插件...
Eclipse 3.7.0 中文语言包是一款专为Eclipse IDE设计的本地化插件,用于将软件界面从英文转换为简体中文,方便中国用户进行开发工作。Eclipse是一个广泛使用的开源集成开发环境(IDE),尤其在Java开发领域具有很高...
【Flex+Eclipse+BlazeDS+JDK+Tomcat开发实例】是一个典型的BS架构(Browser-Server,浏览器-服务器)的开发配置,用于构建富互联网应用程序(RIA)。在这个实例中,我们将详细介绍如何整合这些组件来创建一个用户...
通过"plugins"这个文件夹名,我们可以推测压缩包中可能包含了Eclipse插件的安装文件或库。这些文件通常需要按照Eclipse的安装指南进行导入或解压到特定目录,以便在IDE中启用和使用插件。 总结起来,"Axis的Eclipse...
压缩包中的"NewApp019"可能是这个弹窗应用实例的项目文件夹,包含了所有源代码、资源文件以及项目配置。通过打开并分析这些文件,你可以更深入地理解如何在Eclipse中实现弹窗功能,包括XML布局文件的结构、Java代码...