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);
}
}
}
|