[Tmf][Ctf] Add descriptive fail to import messages.
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / internal / tmf / ui / project / handlers / SelectTraceTypeHandler.java
index e434c081befad413d2b755bccf45dd5a1b0f36f2..473016d18c7e81021de41f088e4dec30838d78e7 100644 (file)
@@ -13,7 +13,9 @@
 
 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;
@@ -21,6 +23,10 @@ import org.eclipse.core.commands.ExecutionException;
 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;
@@ -31,8 +37,7 @@ import org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement;
 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;
@@ -112,7 +117,7 @@ public class SelectTraceTypeHandler extends AbstractHandler {
         if (window == null) {
             return null;
         }
-
+        List<IStatus> statuses = new ArrayList<IStatus>();
         boolean ok = true;
         for (Object element : fSelection.toList()) {
             TmfTraceElement trace = (TmfTraceElement) element;
@@ -124,25 +129,34 @@ public class SelectTraceTypeHandler extends AbstractHandler {
                     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 {
 
@@ -153,10 +167,11 @@ public class SelectTraceTypeHandler extends AbstractHandler {
 
         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();
@@ -177,7 +192,7 @@ public class SelectTraceTypeHandler extends AbstractHandler {
             }
         }
 
-        return true;
+        return Status.OK_STATUS;
     }
 
     private static void setProperties(IResource resource, String bundleName,
@@ -187,17 +202,27 @@ public class SelectTraceTypeHandler extends AbstractHandler {
         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;
     }
 
 }
This page took 0.026138 seconds and 5 git commands to generate.