1 4 package org.terracotta.dso.actions; 5 6 import org.eclipse.core.resources.IProject; 7 import org.eclipse.core.runtime.CoreException; 8 import org.eclipse.jdt.core.IJavaProject; 9 import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants; 10 import org.eclipse.jface.action.Action; 11 import org.eclipse.jface.action.IAction; 12 import org.eclipse.jface.viewers.ISelection; 13 import org.eclipse.jface.viewers.IStructuredSelection; 14 import org.eclipse.ui.IActionDelegate; 15 import org.eclipse.ui.IWorkbenchWindow; 16 import org.eclipse.ui.IWorkbenchWindowActionDelegate; 17 import org.eclipse.ui.PartInitException; 18 import org.terracotta.dso.ProjectNature; 19 import org.terracotta.dso.TcPlugin; 20 21 public class ShowConfigEditorAction extends Action 22 implements IActionDelegate, 23 IWorkbenchWindowActionDelegate, 24 IJavaLaunchConfigurationConstants, 25 IProjectAction 26 { 27 private IJavaProject m_javaProject; 28 private IAction m_action; 29 30 public ShowConfigEditorAction() { 31 super("Open config editor"); 32 TcPlugin.getDefault().registerProjectAction(this); 33 } 34 35 public ShowConfigEditorAction(IJavaProject javaProject) { 36 super("Open config editor"); 37 m_javaProject = javaProject; 38 } 39 40 public void run(IAction action) { 41 TcPlugin plugin = TcPlugin.getDefault(); 42 try { 43 plugin.openConfigurationEditor(m_javaProject.getProject()); 44 } catch(PartInitException pie) { 45 plugin.openError("Unable to open config editor", pie); 46 } 47 } 48 49 public void selectionChanged(IAction action, ISelection selection) { 50 m_action = action; 51 52 if(m_javaProject == null || selection instanceof IStructuredSelection) { 53 update(ActionUtil.locateSelectedJavaProject(selection)); 54 } 55 else { 56 action.setEnabled(true); 57 } 58 } 59 60 private void update(IJavaProject javaProject) { 61 if(javaProject != null) { 62 try { 63 if(javaProject.getProject().hasNature(ProjectNature.NATURE_ID)) { 64 m_javaProject = javaProject; 65 } 66 else { 67 m_javaProject = null; 68 } 69 } catch(CoreException ce) {} 70 } 71 else { 72 m_javaProject = null; 73 } 74 75 m_action.setEnabled(m_javaProject != null); 76 } 77 78 public void update(IProject project) { 79 update(ActionUtil.findJavaProject(project)); 80 } 81 82 public void dispose() { 83 84 } 85 86 public void init(IWorkbenchWindow window) { 87 88 } 89 } 90 | Popular Tags |