KickJava   Java API By Example, From Geeks To Geeks.

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


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.core.runtime.CoreException;
8 import org.eclipse.jdt.core.IJavaProject;
9 import org.eclipse.jface.dialogs.MessageDialog;
10 import org.eclipse.jface.resource.ImageDescriptor;
11 import org.eclipse.jface.window.ApplicationWindow;
12 import org.eclipse.swt.widgets.Display;
13 import org.eclipse.swt.widgets.Shell;
14 import org.eclipse.ui.IWorkbench;
15 import org.eclipse.ui.IWorkbenchWindow;
16 import org.eclipse.ui.PlatformUI;
17 import org.eclipse.ui.plugin.AbstractUIPlugin;
18 import org.terracotta.dso.ServerTracker;
19 import org.terracotta.dso.TcPlugin;
20
21 /**
22  * Manage the named server.
23  */

24
25 public class ManageServerAction extends BaseAction {
26   private String JavaDoc m_name;
27   private static ImageDescriptor m_startImage;
28   private static ImageDescriptor m_stopImage;
29   
30   static {
31     String JavaDoc pluginId = TcPlugin.getPluginId();
32     String JavaDoc startPath = "/images/eclipse/start.gif";
33     String JavaDoc stopPath = "/images/eclipse/stop.gif";
34     
35     m_startImage = AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, startPath);
36     m_stopImage = AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, stopPath);
37   }
38     
39   public ManageServerAction(IJavaProject javaProject, String JavaDoc name) {
40     super(name);
41     setJavaElement(javaProject);
42     m_name = name;
43     
44     ServerTracker serverTracker = ServerTracker.getDefault();
45     ImageDescriptor imageDesc;
46     imageDesc = serverTracker.isRunning(javaProject, name) ? m_stopImage : m_startImage;
47     setImageDescriptor(imageDesc);
48   }
49
50   public void performAction() {
51     IWorkbench workbench = PlatformUI.getWorkbench();
52     
53     if(!workbench.saveAllEditors(true)) {
54       return;
55     }
56     
57     TcPlugin plugin = TcPlugin.getDefault();
58     IProject project = ((IJavaProject)getJavaElement()).getProject();
59     
60     try {
61       if(!plugin.continueWithConfigProblems(project)) {
62         return;
63       }
64     } catch(CoreException ce) {
65       Shell shell = new Shell();
66       
67       MessageDialog.openInformation(
68         shell,
69         "Terracotta",
70         "Error starting Terracotta Server:\n" +
71         ActionUtil.getStatusMessages(ce));
72     }
73     
74     Display display = workbench.getDisplay();
75     final IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
76     
77     display.asyncExec(new Runnable JavaDoc () {
78       public void run() {
79         try {
80           IJavaProject javaProject = (IJavaProject)getJavaElement();
81           ServerTracker tracker = ServerTracker.getDefault();
82           
83           if(tracker.isRunning(javaProject, m_name)) {
84             tracker.stopServer(javaProject, m_name);
85           } else {
86             tracker.startServer(javaProject, m_name);
87             ((ApplicationWindow)window).setStatus("Terracotta Server, "+m_name+", Started.");
88           }
89         }
90         catch(CoreException e) {
91           Shell shell = new Shell();
92           
93           MessageDialog.openInformation(
94             shell,
95             "Terracotta",
96             "Error starting Terracotta Server:\n" +
97             ActionUtil.getStatusMessages(e));
98         }
99       }
100     });
101   }
102 }
103
Popular Tags