KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > dso > actions > WorkbenchNatureAction


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

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 JavaDoc 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 JavaDoc 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