1 4 package org.terracotta.dso.actions; 5 6 import org.eclipse.core.resources.IProject; 7 import org.eclipse.jdt.core.IJavaProject; 8 import org.eclipse.jface.action.IAction; 9 import org.eclipse.jface.viewers.ISelection; 10 import org.eclipse.jface.viewers.IStructuredSelection; 11 import org.eclipse.ui.IActionDelegate; 12 import org.eclipse.ui.IWorkbenchWindow; 13 import org.eclipse.ui.IWorkbenchWindowActionDelegate; 14 15 import org.terracotta.dso.ProjectNature; 16 import org.terracotta.dso.TcPlugin; 17 18 public class WorkbenchNatureAction 19 implements IActionDelegate, 20 IWorkbenchWindowActionDelegate, 21 IProjectAction 22 { 23 private IJavaProject m_javaProject; 24 private boolean m_addNature; 25 private IAction m_action; 26 27 public WorkbenchNatureAction() { 28 super(); 29 TcPlugin.getDefault().registerProjectAction(this); 30 } 31 32 public void run(IAction action) { 33 TcPlugin plugin = TcPlugin.getDefault(); 34 35 if(m_addNature) { 36 plugin.addTerracottaNature(m_javaProject); 37 } 38 else { 39 plugin.removeTerracottaNature(m_javaProject); 40 } 41 42 update(m_javaProject); 43 } 44 45 public void selectionChanged(IAction action, ISelection selection) { 46 m_action = action; 47 48 if(m_javaProject == null || selection instanceof IStructuredSelection) { 49 update(ActionUtil.locateSelectedJavaProject(selection)); 50 } 51 else { 52 action.setEnabled(true); 53 } 54 } 55 56 private void update(IJavaProject javaProject) { 57 if((m_javaProject = javaProject) != null) { 58 String text; 59 60 try { 61 IProject project = javaProject.getProject(); 62 63 if(!project.isOpen()) { 64 m_action.setText("Add Terracotta Nature..."); 65 m_action.setEnabled(false); 66 return; 67 } 68 69 if(project.hasNature(ProjectNature.NATURE_ID)) { 70 m_addNature = false; 71 text = "Remove Terracotta Nature"; 72 } 73 else { 74 m_addNature = true; 75 text = "Add Terracotta Nature..."; 76 } 77 } catch(Exception ce) { 78 ce.printStackTrace(); 79 m_action.setEnabled(false); 80 return; 81 } 82 83 m_action.setText(text); 84 m_action.setEnabled(true); 85 } 86 else { 87 m_action.setEnabled(false); 88 } 89 } 90 91 public void update(IProject project) { 92 update(ActionUtil.findJavaProject(project)); 93 } 94 95 public void dispose() { 96 97 } 98 99 public void init(IWorkbenchWindow window) { 100 101 } 102 } 103 | Popular Tags |