| 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.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 24 25 public class ManageServerAction extends BaseAction { 26 private String m_name; 27 private static ImageDescriptor m_startImage; 28 private static ImageDescriptor m_stopImage; 29 30 static { 31 String pluginId = TcPlugin.getPluginId(); 32 String startPath = "/images/eclipse/start.gif"; 33 String 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 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 () { 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 |