import org.eclipse.ui.themes.ITheme;
import org.eclipse.ui.themes.IThemeManager;
-import eu.etaxonomy.cdm.database.PermissionDeniedException;
import eu.etaxonomy.cdm.model.common.IEnumTerm;
import eu.etaxonomy.cdm.persistence.hibernate.permission.SecurityExceptionUtils;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
* @param status
* a {@link org.eclipse.core.runtime.IStatus} object.
*/
- public static void errorDialog(final String title, final Object source,
+ public static void errorDialog(final String title, final Object source,
final IStatus status) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
- monitor.beginTask(operation.getLabel(), 100);
+ String operationlabel = operation.getLabel();
+ monitor.beginTask(operationlabel, 100);
IStatus status = Status.CANCEL_STATUS;
try {
operation.addContext(IOperationHistory.GLOBAL_UNDO_CONTEXT);
status = getOperationHistory().execute(operation, monitor,
uiInfoAdapter);
} catch (ExecutionException e) {
- MultiStatus info = null;
- String title = null;
-
- // FIXME cannot access TaxonomicEditorPlugin.PLUGIN_ID from here
- // String PID = TaxonomicEditorPlugin.PLUGIN_ID;
- String PID = "eu.etaxonomy.taxeditor.application";
-
- RuntimeException securityRuntimeException = SecurityExceptionUtils.findSecurityRuntimeException(e);
-
- if(securityRuntimeException != null){
- title = "Your changes could not be saved!";
- info = new MultiStatus(PID, 1, String.format("You are missing sufficient permissions for the operation \"%s\".", operation.getLabel()), null);
- info.add(new Status(IStatus.WARNING, PID, 1, securityRuntimeException.getMessage(), null));
-
- } else {
- title = "Error executing operation";
- info = new MultiStatus(PID, 1, String.format("An error occured while executing %s.", operation.getLabel()), null);
- Writer writer = new StringWriter();
- PrintWriter printWriter = new PrintWriter(writer);
- e.printStackTrace(printWriter);
- info.add(new Status(IStatus.ERROR, PID, 1, writer.toString(), null));
- }
-
- errorDialog(title, getClass(), info);
-
+
+ dialogForAbortedOperation(e, this, operationlabel, null);
+
} finally {
monitor.done();
}
String statusString = status.equals(Status.OK_STATUS) ? "completed"
: "cancelled";
- setStatusLine(operation.getLabel() + " " + statusString + ".");
+ setStatusLine(operationlabel + " " + statusString + ".");
}
};
}
}
+ public static void dialogForAbortedOperation(Exception e, final Object source, String operationlabel, String hint) {
+ MultiStatus info = null;
+ String title = null;
+
+ // FIXME cannot access TaxonomicEditorPlugin.PLUGIN_ID from here
+ // String PID = TaxonomicEditorPlugin.PLUGIN_ID;
+ String PID = "eu.etaxonomy.taxeditor.application";
+
+ RuntimeException securityRuntimeException = SecurityExceptionUtils.findSecurityRuntimeException(e);
+
+ if(securityRuntimeException != null){
+ title = "Your changes could not be saved!";
+ info = new MultiStatus(PID, 1, String.format("You are missing sufficient permissions for the operation \"%s\". %s", operationlabel, hint), null);
+ info.add(new Status(IStatus.WARNING, PID, 1, securityRuntimeException.getMessage(), null));
+
+ } else {
+ title = "Error executing operation";
+ info = new MultiStatus(PID, 1, String.format("An error occured while executing %s. %s", operationlabel, hint), null);
+ Writer writer = new StringWriter();
+ PrintWriter printWriter = new PrintWriter(writer);
+ e.printStackTrace(printWriter);
+ info.add(new Status(IStatus.ERROR, PID, 1, writer.toString(), null));
+ }
+
+ errorDialog(title, source, info);
+ }
+
private static class TermNode<T extends IEnumTerm<T>> implements Comparable<TermNode<T>>{
private final T term;
private final TreeSet<TermNode<T>> children;