`
gdfloyd
  • 浏览: 74105 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

打造定制的Eclipse File System Plugin

阅读更多

 


不知是不是Eclipse的生态策略和用户考虑,没有把MyEclipse那个Open in Explorer的小功能到整合到IDE。很多时候,是需要直接操作文件系统的。没有这个小功能,就只能:文件选中->右键快捷菜单Properties (Alt+Enter)->复制文件路径->Win+R->粘贴回车。这个是在Windows下的。如果经常打开命令行,以当前目录作为命令行的工作目录,还要手动输入CD命令,相当繁琐。于是就有了需求啦。在网上参考资料,最终效果图。为了简化操作,快捷键的必需的。这里我设了Ctrl +`Ctril+1

 


 

 

代码和设定主要参考了下面的链接:

http://melord.iteye.com/blog/630339

http://www.ibm.com/developerworks/library/os-eclipse-3.3menu/

 

经过本人的阉割改造,plugin.xml设定如下

 

 

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension point="org.eclipse.ui.commands">
      <category id="welsney.floyd.eclipse.plugin.fsresource"
            name="File System">
      </category>
      <command
            name="Open Directory"
            categoryId="welsney.floyd.eclipse.plugin.fsresource"
            id="welsney.floyd.eclipse.plugin.fsresource.openDir">
      </command>
      <command
            name="Open Command"
            categoryId="welsney.floyd.eclipse.plugin.fsresource"
            id="welsney.floyd.eclipse.plugin.fsresource.openCmd">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
            <toolbar id="welsney.floyd.eclipse.plugin.fsresource.toolbar">
            	<command
	               commandId="welsney.floyd.eclipse.plugin.fsresource.openDir"
	               icon="icons/openHS.png"
	               label="Open Directory"
	               id="welsney.floyd.eclipse.plugin.fsresource.openDirMenuCommand">
		         </command>
		         <command
		               commandId="welsney.floyd.eclipse.plugin.fsresource.openCmd"
		               icon="icons/MS-DOS.ico"
		               label="Open Command"
		               id="welsney.floyd.eclipse.plugin.fsresource.openCmdMenuCommand">
		         </command>
            </toolbar>
      </menuContribution>
   </extension>
   
   <extension
         point="org.eclipse.ui.handlers">
      <handler
            commandId="welsney.floyd.eclipse.plugin.fsresource.openDir"
            class="filesystemresource.command.handler.OpenWinDirAction">
      </handler>
      <handler
            commandId="welsney.floyd.eclipse.plugin.fsresource.openCmd"
            class="filesystemresource.command.handler.OpenWinCmdAction">
      </handler>
   </extension>
   
   <extension
         point="org.eclipse.ui.bindings">
      <key
            commandId="welsney.floyd.eclipse.plugin.fsresource.openDir"
            sequence="CTRL+`"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            commandId="welsney.floyd.eclipse.plugin.fsresource.openCmd"
            sequence="CTRL+1"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
   </extension>

</plugin>

 

事件响应处理Java Code如下,只把关键的获取文件路径的代码保留下来。

 

 

public abstract class AbstractFileSystemResourceAction extends AbstractHandler {

	@Override
	public Object execute(ExecutionEvent event) throws ExecutionException {
		IWorkbenchWindow window = HandlerUtil
			.getActiveWorkbenchWindowChecked(event);
		ISelection selection = window.getSelectionService().getSelection();
		if (selection instanceof IStructuredSelection) {
			Object element = ((IStructuredSelection) selection).getFirstElement();
			IResource resource = null;
			if ((element instanceof IResource)) {
				resource = (IResource) element;
			} else if (element instanceof IAdaptable) {
				resource = (IResource) ((IAdaptable) element)
						.getAdapter(IResource.class);
			} 
			if(resource != null) {
				doExecute(resource.getLocation().toFile());
			}
		}
		return null;
	}
	
	protected abstract void doExecute(File file);
}

 

编写具体执行的Action响应处理,如果不是目录的话,为了不把文件打开,做了特殊的处理。

 

public class OpenWinDirAction extends AbstractFileSystemResourceAction {

	@Override
	protected void doExecute(File file) {
		if (file != null) {
			if(file.isFile()) {
				file = file.getParentFile();
			}
			try {
				Runtime.getRuntime().exec("explorer.exe " + file.getAbsolutePath());
			} catch (IOException e) {
				e.printStackTrace();
			} 
		}
	}
}

 

打开命令行的事件响应处理Action如下。Windows Platform的那条cmd命令有点闹心,折腾许久才把黑色小窗口给弄出来。

 

public class OpenWinCmdAction extends AbstractFileSystemResourceAction {

	@Override
	protected void doExecute(File file) {
		if(file != null) {
			if(file.isFile()) {
				file = file.getParentFile();
			}
			try {
				Runtime.getRuntime().exec("cmd /k start cd /d " + file.getAbsolutePath());
			} catch (IOException e) {
				e.printStackTrace();
			} 
		}

	}
}
  • 大小: 28.1 KB
分享到:
评论

相关推荐

    hadoop-eclipse-plugin-3.1.1.tar.gz

    它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,这两个组件共同构建了一个高度容错的分布式计算系统。 2. **HDFS**: HDFS是Hadoop的核心组件之一,它是一个分布式文件系统,设计目标是处理...

    hadoop-eclipse-plugin-1.1.2

    它基于分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce计算模型,能够处理PB级别的数据。 2. **Eclipse集成的重要性** 在传统的开发模式下,Hadoop应用的开发需要在命令行环境中进行,这给...

    hadoop-eclipse-plugin-2.6.0.jar

    《Hadoop Eclipse Plugin 2.6.0:整合Eclipse开发环境的利器》 Hadoop Eclipse Plugin 2.6.0是一款专为Eclipse集成开发环境设计的插件,它使得开发者能够在熟悉的Eclipse环境中直接操作和管理Hadoop集群,极大地...

    hadoop-eclipse-plugin-2.7.2.rar

    Hadoop Eclipse Plugin是Apache Hadoop项目的一个重要组成部分,主要用于在Eclipse集成开发环境中方便地创建、管理和调试Hadoop MapReduce程序。2.7.2版本是这个插件的一个稳定版本,提供了对Hadoop 2.x系列的支持。...

    eclipse运行mr插件hadoop-eclipse-plugin-2.6.0.jar

    主要由两个核心组件构成:HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供高容错性的分布式存储,而MapReduce则负责大规模数据的并行处理。 Eclipse是一款广泛使用的Java集成开发环境,对于Hadoop...

    hadoop-eclipse-plugin-2.7.0.jar

    《Hadoop Eclipse Plugin 2.7.0:高效开发与调试工具》 Hadoop Eclipse Plugin 2.7.0是一款专门为Hadoop生态系统设计的Eclipse集成插件,它极大地简化了开发者在Eclipse环境中对Hadoop应用程序的创建、调试和管理...

    hadoop-eclipse-plugin

    在Eclipse中安装Hadoop Eclipse Plugin后,可以通过"File -&gt; New -&gt; Other -&gt; Hadoop Map/Reduce Project"来创建新的Hadoop项目。编写好MapReduce程序后,可以直接通过"Export -&gt; Hadoop JAR file"将其打包成适合...

    hadoop-eclipse-plugin2.7.2-2.7.3-2.5.1.zip

    使用Hadoop Eclipse Plugin,开发人员可以直接在Eclipse中可视化地操作HDFS(Hadoop Distributed File System),包括浏览文件系统、上传和下载文件,以及创建和删除目录。此外,它还支持MapReduce作业的提交和监控...

    hadoop-eclipse-plugin-2.7.1.jar

    Hadoop,由Apache基金会开发,是分布式存储和计算的大数据平台,其核心包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS为海量数据提供了高容错性的分布式存储,而MapReduce则为并行处理这些数据提供了...

    hadoop-eclipse-plugin-2.7.1

    2. **资源管理**:可以直观地查看和管理HDFS(Hadoop Distributed File System)中的文件和目录,包括上传、下载、删除等操作,无需借助命令行工具。 3. **作业调试**:插件支持MapReduce任务的本地运行和远程提交...

    eclipse hadoop2.7.1 plugin 配置

    - **HDFS(Hadoop Distributed File System)**:Hadoop的数据存储系统,提供高容错性和高吞吐量的数据访问。 - **YARN(Yet Another Resource Negotiator)**:Hadoop 2.7.1引入的资源管理系统,负责调度任务和...

    hadoop2x-eclipse-plugin

    Hadoop是Apache基金会开源的一个分布式计算框架,其核心包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供了一个高容错性的分布式文件系统,而MapReduce则是一种处理大规模数据集的编程模型,两者...

    hadoop2x-eclipse-plugin-original

    1. **Hadoop**:Hadoop是基于Java实现的分布式计算框架,主要由HDFS(Hadoop Distributed File System)和MapReduce两大部分组成。HDFS提供高容错性的分布式存储,而MapReduce则用于处理和生成大数据集。 2. **...

    hadoop-eclipse-plugin-2.8.3.jar

    HDFS(Hadoop Distributed File System)是分布式文件系统,而YARN(Yet Another Resource Negotiator)是资源管理框架,它们共同构成了Hadoop的核心。在2.8.3版本中,插件对这些组件的交互进行了优化,提升了开发...

    hadoop-2.8.3-eclipse-plugin插件包

    它主要由HDFS(Hadoop Distributed File System)和MapReduce两大部分组成。HDFS提供了高容错性和高吞吐量的数据存储,而MapReduce则负责数据处理,通过并行化任务分发到集群上的多个节点进行计算。 Eclipse是一款...

    hadoop-eclipse-plugin-1.0.0(5个版本)

    Hadoop是一个开源分布式计算框架,基于Java实现,主要由HDFS(Hadoop Distributed File System)和MapReduce两大部分组成。HDFS提供了高容错性的数据存储,而MapReduce则是用于处理和生成大规模数据集的编程模型。...

    hadoop-eclipse-plugin.rar

    Hadoop是Apache基金会的一个开源项目,核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供了一个分布式文件系统,使得大数据存储和处理变得可能;而MapReduce则是用于大规模数据集并行计算的...

    hadoop-eclipse-plugin-2.7.3

    这个插件允许用户直接在Eclipse IDE中浏览、操作HDFS(Hadoop Distributed File System)文件系统,无需离开IDE就能进行各种文件管理操作。 首先,让我们详细了解一下Hadoop。Hadoop是Apache软件基金会的一个开源...

Global site tag (gtag.js) - Google Analytics