KickJava   Java API By Example, From Geeks To Geeks.

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


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.apache.commons.io.IOUtils;
7 import org.eclipse.core.resources.IProject;
8 import org.eclipse.core.runtime.CoreException;
9 import org.eclipse.core.runtime.IPath;
10 import org.eclipse.jdt.core.IJavaProject;
11 import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
12 import org.eclipse.jface.action.Action;
13 import org.eclipse.jface.action.IAction;
14 import org.eclipse.jface.viewers.ISelection;
15 import org.eclipse.jface.viewers.IStructuredSelection;
16 import org.eclipse.ui.IActionDelegate;
17 import org.eclipse.ui.IWorkbenchWindow;
18 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
19 import org.terracotta.dso.ClasspathProvider;
20 import org.terracotta.dso.ProjectNature;
21 import org.terracotta.dso.TcPlugin;
22
23 import com.tc.admin.common.InputStreamDrainer;
24 import com.tc.util.runtime.Os;
25
26 import java.io.File JavaDoc;
27 import java.io.IOException JavaDoc;
28
29 public class ShowAdminConsoleAction extends Action
30   implements IActionDelegate,
31              IWorkbenchWindowActionDelegate,
32              IJavaLaunchConfigurationConstants,
33              IProjectAction
34 {
35   private IJavaProject m_javaProject;
36   private IAction m_action;
37   
38   public ShowAdminConsoleAction() {
39     super("Show AdminConsole...");
40     TcPlugin.getDefault().registerProjectAction(this);
41   }
42
43   public ShowAdminConsoleAction(IJavaProject javaProject) {
44     super("Show AdminConsole...");
45     m_javaProject = javaProject;
46   }
47   
48   public void run(IAction action) {
49     String JavaDoc[] cmdarray = {
50       getJavaCmd().getAbsolutePath(),
51       "-Dtc.install-root=" + TcPlugin.getDefault().getLocation().toOSString(),
52       "-cp", getClasspath(),
53       "com.tc.admin.AdminClient"
54     };
55
56     Process JavaDoc p = exec(cmdarray, null, new File JavaDoc(System.getProperty("user.dir")));
57
58     new InputStreamDrainer(p.getErrorStream()).start();
59     new InputStreamDrainer(p.getInputStream()).start();
60     IOUtils.closeQuietly(p.getOutputStream());
61   }
62
63   private String JavaDoc getClasspath() {
64     TcPlugin plugin = TcPlugin.getDefault();
65     IPath tcJarPath = plugin.getLibDirPath().append("tc.jar");
66
67     if(tcJarPath.toFile().exists()){
68       return tcJarPath.toOSString();
69     } else {
70       return ClasspathProvider.makeDevClasspath();
71     }
72   }
73   
74   private File JavaDoc getJavaCmd() {
75     File JavaDoc javaBin = new File JavaDoc(System.getProperty("java.home"), "bin");
76     return new File JavaDoc(javaBin, "java" + (Os.isWindows() ? ".exe" : ""));
77   }
78   
79   protected Process JavaDoc exec(String JavaDoc[] cmdarray, String JavaDoc[] envp, File JavaDoc dir) {
80     try {
81       return Runtime.getRuntime().exec(cmdarray, envp, dir);
82     } catch(IOException JavaDoc ioe) {
83       TcPlugin.getDefault().openError("Unable to show AdminConsole", ioe);
84     }
85     
86     return null;
87   }
88
89   public void selectionChanged(IAction action, ISelection selection) {
90     m_action = action;
91     
92     if(m_javaProject == null || selection instanceof IStructuredSelection) {
93       update(ActionUtil.locateSelectedJavaProject(selection));
94     }
95     else {
96       action.setEnabled(true);
97     }
98   }
99
100   private void update(IJavaProject javaProject) {
101     if(javaProject != null) {
102       try {
103         if(javaProject.getProject().hasNature(ProjectNature.NATURE_ID)) {
104           m_javaProject = javaProject;
105         }
106         else {
107           m_javaProject = null;
108         }
109       } catch(CoreException ce) {/**/}
110     }
111     else {
112       m_javaProject = null;
113     }
114     
115     m_action.setEnabled(m_javaProject != null);
116   }
117   
118   public void update(IProject project) {
119     update(ActionUtil.findJavaProject(project));
120   }
121   
122   public void dispose() {
123     /**/
124   }
125
126   public void init(IWorkbenchWindow window) {
127     /**/
128   }
129 }
130
Popular Tags