package org.erlide.tracing.core.utils;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ui.statushandlers.StatusManager;
import org.erlide.tracing.core.Activator;
import org.erlide.tracing.core.TraceBackend;
import org.erlide.tracing.core.TracingStatus;
/**
* Class that contains helper methods for handling tracing status
*
* @author Piotr Dorobisz
* @see TracingStatus
*
*/
public final class TracingStatusHandler {
private TracingStatusHandler() {
}
/**
* Displays dialog with further details about status (e.g. reason of error).
*
* @param status
* status
*/
public static void handleStatus(final TracingStatus status) {
Status executionStatus = null;
switch (status) {
case ERROR:
final Object errorObject = TraceBackend.getInstance().getErrorObject();
executionStatus = new Status(IStatus.ERROR, Activator.PLUGIN_ID,
"Error: " + errorObject, null);
break;
case EXCEPTION_THROWN:
final Exception e = (Exception) TraceBackend.getInstance().getErrorObject();
executionStatus = new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Error", e);
break;
case NO_ACTIVATED_NODES:
executionStatus = new Status(IStatus.ERROR, Activator.PLUGIN_ID,
"No nodes were activated for tracing", null);
break;
case NOT_ALL_NODES_ACTIVATED:
final StringBuilder builder = new StringBuilder(
"Following nodes were not activated for tracing:\n");
for (final String node : TraceBackend.getInstance().getNotActivatedNodes()) {
builder.append(node).append("\n");
}
executionStatus = new Status(IStatus.WARNING, Activator.PLUGIN_ID,
builder.toString(), null);
break;
case EMPTY:
executionStatus = new Status(IStatus.WARNING, Activator.PLUGIN_ID,
"No data to display", null);
break;
case OK:
break;
}
if (executionStatus != null) {
StatusManager.getManager().handle(executionStatus, StatusManager.SHOW);
}
}
}