RunBrowserAction.java :  » J2EE » Sofia » com » salmonllc » ideTools » eclipse » Java Open Source

Java Open Source » J2EE » Sofia 
Sofia » com » salmonllc » ideTools » eclipse » RunBrowserAction.java
package com.salmonllc.ideTools.eclipse;


import org.eclipse.jface.action.IAction;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;

import com.salmonllc.ideTools.IDETool;

/**
 * @author Administrator
 *
 * To change this generated comment edit the template variable "typecomment":
 * Window>Preferences>Java>Templates.
 * To enable and disable the creation of type comments go to
 * Window>Preferences>Java>Code Generation.
 */
public class RunBrowserAction implements IWorkbenchWindowPulldownDelegate2, SelectionListener {
  private IWorkbenchWindow _win;
  /** 
   * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
   */
  public void dispose() {
  }

  /**
   * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(IWorkbenchWindow)
   */
  public void init(IWorkbenchWindow window) {
    _win = window;
  }

  /**
   * @see org.eclipse.ui.IActionDelegate#run(IAction)
   */
  public void run(IAction action) {
    runIt(null);
  }

  private void runIt(String type) {
    IPreferenceStore pref = SalmonPlugin.getDefault().getPreferenceStore();
    boolean askBeforeSaving = pref.getBoolean(SalmonPlugin.PREF_ASK_SAVE_ON_BROWSER_RUN);
    boolean save = pref.getBoolean(SalmonPlugin.PREF_SAVE_ON_BROWSER_RUN);
    String servType = SalmonPlugin.getServerType();
    boolean restart = pref.getBoolean(SalmonPlugin.PREF_RESTART_SERVER_EACH_RUN) && ( servType == IDETool.SERVER_TOMCAT40 || servType == IDETool.SERVER_TOMCAT41);
  
    
    if (save) {
      IWorkbenchPage p = _win.getActivePage();
      if (!p.saveAllEditors(askBeforeSaving)) 
        return;      
    }    
    
    if (restart) {
      StartServerAction.startServer(IDETool.SERVER_TOMCAT40,getArgs(type));
      return;
    }  
      
    runBrowser(type);
  }  
  
  private void runBrowser(String type) {
     try {
      SalmonPlugin.runIDETool(getArgs(type),false);
     } catch (Exception e) {
       e.printStackTrace();   
     }    
  }

  private String[] getArgs(String type) {
    if (type == null)
       type = getDefaultBrowser(); 
       
    String progArgs[] = null;    
    if (type == null)
      progArgs = new String[] {"-RUNBROWSER","-PROJECT", SalmonPlugin.getDefaultSalmonProject()};
    else  
      progArgs = new String[] {"-RUNBROWSER",type, "-PROJECT", SalmonPlugin.getDefaultSalmonProject()};
    return progArgs;  
    
  }  
  /**
   * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection)
   */
  public void selectionChanged(IAction action, ISelection selection) {
    SalmonPlugin.setSelectedProject(selection);
  }
  
  public void widgetSelected(SelectionEvent e) {
    if (e.getSource() instanceof MenuItem) {
      String browser = ((MenuItem) e.getSource()).getText();
      setDefaultBrowser(browser);
      runIt(browser);
    }
  }

  private void setDefaultBrowser(String browser) {
      IPreferenceStore p = SalmonPlugin.getDefault().getPreferenceStore();
      p.setValue("DEFAULT_BROWSER",browser);  
  }    

  private String getDefaultBrowser() {
      IPreferenceStore p = SalmonPlugin.getDefault().getPreferenceStore();
      return p.getString("DEFAULT_BROWSER");  
  }    
  
  public void widgetDefaultSelected(SelectionEvent e ) {}
  
  
  public Menu getMenu(Control cont) {
    Menu main = new Menu(cont);
    loadMenu(main,true);
    return main;
  }
  
  public Menu getMenu(Menu m) {
    Menu main = new Menu(m);
    loadMenu(main,false);
    return main;
  }
  
  private void loadMenu(Menu m, boolean sel) {
    int type = sel ? SWT.CHECK : SWT.CASCADE;
    String[] browsers = SalmonPlugin.getBrowserTypes();
    String defBrowser = getDefaultBrowser();
    for (int i = browsers.length - 1; i >= 0;i--) {
      
      MenuItem sub = new MenuItem(m,type);
      if (sel && defBrowser != null && defBrowser.equals(browsers[i])) 
        sub.setSelection(true);
      sub.setText(browsers[i]);
      sub.addSelectionListener(this);
    }  
  }  
  
  

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.