打造定制的Eclipse File System Plugin

本文介绍如何在Eclipse中自定义快捷操作,实现快速打开文件系统目录与命令行功能,提高开发效率。

 


不知是不是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();
			} 
		}

	}
}
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制方法。通过结合数据驱动技术与Koopman算子理论,将非线性系统动态近似为高维线性系统,进而利用递归神经网络(RNN)建模并实现系统行为的精确预测。文中详细阐述了模型构建流程、线性化策略及在预测控制中的集成应用,并提供了完整的Matlab代码实现,便于科研人员复现实验、优化算法并拓展至其他精密控制系统。该方法有效提升了纳米级定位系统的控制精度与动态响应性能。; 适合人群:具备自动控制、机器学习或信号处理背景,熟悉Matlab编程,从事精密仪器控制、智能制造或先进控制算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①实现非线性动态系统的数据驱动线性化建模;②提升纳米定位平台的轨迹跟踪与预测控制性能;③为高精度控制系统提供可复现的Koopman-RNN融合解决方案; 阅读建议:建议结合Matlab代码逐段理解算法实现细节,重点关注Koopman观测矩阵构造、RNN训练流程与模型预测控制器(MPC)的集成方式,鼓励在实际硬件平台上验证并调整参数以适应具体应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值