[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