package com.sysdeo.eclipse.tomcat.actions;
/*
* (c) Copyright Sysdeo SA 2001, 2002.
* All Rights Reserved.
*/
import org.eclipse.core.resources.IProject;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import com.sysdeo.eclipse.tomcat.TomcatLauncherPlugin;
import com.sysdeo.eclipse.tomcat.TomcatProject;
abstract public class TomcatProjectAbstractActionDelegate implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window;
private String msg;
/*
* @see IWorkbenchWindowActionDelegate#dispose()
*/
public void dispose() {
}
/*
* @see IWorkbenchWindowActionDelegate#init(IWorkbenchWindow)
*/
public void init(IWorkbenchWindow window) {
this.window = window;
}
/*
* @see IActionDelegate#run(IAction)
*/
public void run(IAction action) {
setMsgToSuccess();
try {
TomcatProject prj = this.getCurrentSelection();
if(prj != null) {
this.doActionOn(prj);
}
} catch (TomcatActionException ex) {
setMsgToFail(ex.getMessage(), false);
} catch (Exception ex) {
TomcatLauncherPlugin.log(ex);
setMsgToFail(ex.getMessage(), true);
}
if(showMessageBox()) {
Shell shell= TomcatLauncherPlugin.getShell();
MessageDialog.openInformation(shell,"Tomcat", msg);
}
}
/*
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
public void selectionChanged(IAction action, ISelection selection) {
}
protected TomcatProject getCurrentSelection() {
IWorkbenchWindow window= JavaPlugin.getActiveWorkbenchWindow();
TomcatProject result = null;
if (window != null) {
ISelection selection= window.getSelectionService().getSelection();
if (selection instanceof IStructuredSelection) {
Object project = ((IStructuredSelection)selection).getFirstElement();
if(project instanceof IProject)
result = TomcatProject.create((IProject)project);
if(project instanceof IJavaProject)
result = TomcatProject.create((IJavaProject)project);
}
}
return result;
}
abstract public void doActionOn(TomcatProject prj) throws Exception;
public boolean showMessageBox() {
return true;
};
/**
* Sets the msg.
* @param msg The msg to set
*/
private void setMsgToFail(String detail, boolean seelog) {
this.msg = TomcatLauncherPlugin.getResourceString("msg.action.failed");
this.msg += "\n" + detail;
if(seelog) {
this.msg += TomcatLauncherPlugin.getResourceString("msg.action.seelog");
}
}
/**
* Sets the msg.
* @param msg The msg to set
*/
private void setMsgToSuccess() {
this.msg = TomcatLauncherPlugin.getResourceString("msg.action.succeeded");
}
}