package org.eclipse.linuxtools.internal.tmf.ui.project.handlers;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentFolder;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
if (window == null) {
return null;
}
-
+ List<IStatus> statuses = new ArrayList<IStatus>();
boolean ok = true;
for (Object element : fSelection.toList()) {
TmfTraceElement trace = (TmfTraceElement) element;
String bundleName = event.getParameter(BUNDLE_PARAMETER);
String traceType = event.getParameter(TYPE_PARAMETER);
String iconUrl = event.getParameter(ICON_PARAMETER);
- ok &= propagateProperties(trace, bundleName, traceType, iconUrl);
+ IStatus status = propagateProperties(trace, bundleName, traceType, iconUrl);
+ ok &= status.isOK();
+ if (!status.isOK()) {
+ statuses.add(status);
+ }
} catch (CoreException e) {
- Activator.getDefault().logError("Error selecting trace type for trace" + trace.getName(), e); //$NON-NLS-1$
+ Activator.getDefault().logError(Messages.SelectTraceTypeHandler_ErrorSelectingTrace + trace.getName(), e);
}
}
}
((ITmfProjectModelElement) fSelection.getFirstElement()).getProject().refresh();
if (!ok) {
- MessageBox mb = new MessageBox(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), SWT.ICON_ERROR);
- mb.setText(Messages.SelectTraceTypeHandler_Title);
- mb.setMessage(Messages.SelectTraceTypeHandler_InvalidTraceType);
- mb.open();
+ final Shell shell = window.getShell();
+ MultiStatus info = new MultiStatus(Activator.PLUGIN_ID, 1, Messages.SelectTraceTypeHandler_TraceFailedValidation, null);
+ if (statuses.size() > 1)
+ {
+ info = new MultiStatus(Activator.PLUGIN_ID, 1, Messages.SelectTraceTypeHandler_TracesFailedValidation, null);
+ }
+ for (IStatus status : statuses) {
+ info.add(status);
+ }
+ ErrorDialog.openError(shell, Messages.SelectTraceTypeHandler_Title, Messages.SelectTraceTypeHandler_InvalidTraceType, info);
}
-
return null;
}
- private static boolean propagateProperties(TmfTraceElement trace,
+ private static IStatus propagateProperties(TmfTraceElement trace,
String bundleName, String traceType, String iconUrl)
throws CoreException {
setProperties(trace.getResource(), bundleName, traceType, iconUrl);
trace.refreshTraceType();
- if (!validateTraceType(trace)) {
+ final IStatus validateTraceType = validateTraceType(trace);
+ if (!validateTraceType.isOK()) {
setProperties(trace.getResource(), svBundleName, svTraceType, svIconUrl);
trace.refreshTraceType();
- return false;
+ return validateTraceType;
}
trace.refreshTraceType();
}
}
- return true;
+ return Status.OK_STATUS;
}
private static void setProperties(IResource resource, String bundleName,
resource.setPersistentProperty(TmfCommonConstants.TRACEICON, iconUrl);
}
- private static boolean validateTraceType(TmfTraceElement trace) {
+ private static IStatus validateTraceType(TmfTraceElement trace) {
IProject project = trace.getProject().getResource();
ITmfTrace tmfTrace = null;
+ IStatus validate = null;
try {
tmfTrace = trace.instantiateTrace();
- return (tmfTrace != null && tmfTrace.validate(project, trace.getLocation().getPath()));
+ if (tmfTrace != null) {
+ validate = tmfTrace.validate(project, trace.getLocation().getPath());
+ }
+ else{
+ validate = new Status(IStatus.ERROR, trace.getName(), "File does not exist : " + trace.getLocation().getPath()); //$NON-NLS-1$
+ }
} finally {
if (tmfTrace != null) {
tmfTrace.dispose();
}
}
+ if (validate == null) {
+ validate = new Status(IStatus.ERROR, "unknown", "unknown"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ return validate;
}
}