[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions ...
Robert Stryker
rawblem at gmail.com
Tue Aug 15 12:06:02 EDT 2006
User: rawb
Date: 06/08/15 12:06:02
Added: as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions
ServerPulldownDelegate.java
Log:
Added toolbar element with start / stop / debug server menus.
Revision Changes Path
1.1 date: 2006/08/15 16:06:02; author: rawb; state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/ServerPulldownDelegate.java
Index: ServerPulldownDelegate.java
===================================================================
/*
* JBoss, Home of Professional Open Source
* Copyright 2006, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.ide.eclipse.as.ui.actions;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuAdapter;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.ServerCore;
import org.eclipse.wst.server.core.internal.StartServerJob;
import org.eclipse.wst.server.ui.internal.Messages;
import org.eclipse.wst.server.ui.internal.ServerUIPlugin;
import org.eclipse.wst.server.ui.internal.provisional.ManagedUIDecorator;
import org.jboss.ide.eclipse.as.core.JBossServerCore;
import org.jboss.ide.eclipse.as.core.server.JBossServer;
import org.jboss.ide.eclipse.as.core.util.ASDebug;
import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
import org.jboss.ide.eclipse.as.ui.JBossServerUISharedImages;
public class ServerPulldownDelegate implements IWorkbenchWindowPulldownDelegate {
private static final String DEFAULT_JBOSS_SERVER = "_DEFAULT_JBOSS_SERVER_";
private static final String DEFAULT_JBOSS_SERVER_UNSET = "_DEFAULT_JBOSS_SERVER_UNSET_";
private IWorkbench workbench;
private Menu fMenu;
/** Return a menu which launches the various wizards */
public Menu getMenu(Control parent) {
setMenu(new Menu(parent));
//fillMenu(fMenu);
initMenu();
return fMenu;
}
private void setMenu(Menu menu) {
if (fMenu != null) {
fMenu.dispose();
}
fMenu = menu;
}
private void initMenu() {
fMenu.addMenuListener(new MenuAdapter() {
public void menuShown(MenuEvent e) {
Menu m = (Menu) e.widget;
MenuItem[] items = m.getItems();
for (int i = 0; i < items.length; i++) {
items[i].dispose();
}
fillMenu(m);
}
});
}
protected void fillMenu(Menu menu) {
MenuItem startInRunMode = new MenuItem(menu, SWT.NONE);
startInRunMode.setText("Start Server");
startInRunMode.setImage(getStateImage(IServer.STATE_STARTED, ILaunchManager.RUN_MODE));
MenuItem startInDebugMode = new MenuItem(menu, SWT.NONE);
startInDebugMode.setText("Start Server (Debug Mode)");
startInDebugMode.setImage(getStateImage(IServer.STATE_STARTED, ILaunchManager.DEBUG_MODE));
MenuItem stopServer = new MenuItem(menu, SWT.NONE);
stopServer.setText("Stop Server");
stopServer.setImage(getStateImage(IServer.STATE_STOPPED, ILaunchManager.RUN_MODE));
if( DEFAULT_JBOSS_SERVER_UNSET.equals(getCurrentDefaultServer())) {
startInRunMode.setEnabled(false);
startInDebugMode.setEnabled(false);
stopServer.setEnabled(false);
} else {
// we have a server set. Depending on state, disable some options
String defaultServerID = getCurrentDefaultServer();
IServer defaultServer = ServerCore.findServer(defaultServerID);
int state = defaultServer.getServerState();
if( state == IServer.STATE_STARTED || state == IServer.STATE_STARTING ) {
startInRunMode.setEnabled(false);
startInDebugMode.setEnabled(false);
} else if( state == IServer.STATE_STOPPED ) {
stopServer.setEnabled(false);
}
}
new Separator().fill(menu, 3);
MenuItem selectDefaultServer = new MenuItem(menu, SWT.CASCADE);
selectDefaultServer.setText("Set Default Server");
Menu subMenu = new Menu(menu);
selectDefaultServer.setMenu(subMenu);
JBossServer[] servers = JBossServerCore.getAllJBossServers();
for( int i = 0; i < servers.length; i++ ) {
MenuItem server= new MenuItem(subMenu, SWT.CHECK);
server.setText(servers[i].getServer().getName());
server.setImage(JBossServerUISharedImages.getImage(JBossServerUISharedImages.IMG_JBOSS));
if( servers[i].getServer().getId().equals(getCurrentDefaultServer())) {
server.setSelection(true);
} else {
server.setSelection(false);
}
final IServer myServer = servers[i].getServer();
// upon selection, update the default
server.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
if( myServer.getId().equals(getCurrentDefaultServer())) {
JBossServerUIPlugin.getDefault().getPreferenceStore().setValue(DEFAULT_JBOSS_SERVER, DEFAULT_JBOSS_SERVER_UNSET);
} else {
JBossServerUIPlugin.getDefault().getPreferenceStore().setValue(DEFAULT_JBOSS_SERVER, myServer.getId());
}
}
});
}
// Add listeners for the three start / debug / stop options
startInRunMode.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
if( !DEFAULT_JBOSS_SERVER_UNSET.equals(getCurrentDefaultServer())) {
IServer s = ServerCore.findServer(getCurrentDefaultServer());
StartServerJob startJob = new StartServerJob(s, ILaunchManager.RUN_MODE);
startJob.schedule();
}
}
} );
startInDebugMode.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
if( !DEFAULT_JBOSS_SERVER_UNSET.equals(getCurrentDefaultServer())) {
IServer s = ServerCore.findServer(getCurrentDefaultServer());
StartServerJob startJob = new StartServerJob(s, ILaunchManager.DEBUG_MODE);
startJob.schedule();
}
}
} );
stopServer.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
if( !DEFAULT_JBOSS_SERVER_UNSET.equals(getCurrentDefaultServer())) {
final IServer s = ServerCore.findServer(getCurrentDefaultServer());
final Shell shell = new Shell();
ServerUIPlugin.addTerminationWatch(shell, s, ServerUIPlugin.STOP);
Display.getDefault().asyncExec(new Runnable() {
public void run() {
MessageDialog dialog = new MessageDialog(shell, Messages.defaultDialogTitle, null,
NLS.bind(Messages.dialogStoppingServer, s.getName()), MessageDialog.INFORMATION, new String[0], 0);
dialog.setBlockOnOpen(false);
dialog.open();
s.stop(false);
dialog.close();
}
});
}
}
} );
}
public void init(IWorkbenchWindow window) {
workbench = window.getWorkbench();
}
public void run(IAction action) {
}
public void selectionChanged(IAction action, ISelection selection) {
}
public void dispose() {
fMenu.dispose();
}
protected Image getStateImage(int state, String mode) {
return new ManagedUIDecorator().getStateImage(state, mode, 0);
}
protected String getCurrentDefaultServer() {
return JBossServerUIPlugin.getDefault().getPreferenceStore().getString(DEFAULT_JBOSS_SERVER);
}
}
More information about the jboss-cvs-commits
mailing list