打造定制的Eclipse File System Plugin
?
?<?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" name="code">public abstract class AbstractFileSystemResourceAction extends AbstractHandler {@Overridepublic 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);}
public class OpenWinDirAction extends AbstractFileSystemResourceAction {@Overrideprotected 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();} }}}
public class OpenWinCmdAction extends AbstractFileSystemResourceAction {@Overrideprotected 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();} }}}