Update decorators to show more explicitly PASSED / FAILED / ERROR status in the Resul...
authorBruno Sinou <bsinou@argeo.org>
Tue, 26 Mar 2013 18:14:05 +0000 (18:14 +0000)
committerBruno Sinou <bsinou@argeo.org>
Tue, 26 Mar 2013 18:14:05 +0000 (18:14 +0000)
t might be reverted if it raises some performance issues.

git-svn-id: https://svn.argeo.org/slc/trunk@6226 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

plugins/org.argeo.slc.client.ui/icons/executionPassed.gif [new file with mode: 0644]
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/SlcImages.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/decorators/ResultFailedDecorator.java

diff --git a/plugins/org.argeo.slc.client.ui/icons/executionPassed.gif b/plugins/org.argeo.slc.client.ui/icons/executionPassed.gif
new file mode 100644 (file)
index 0000000..20fc2f2
Binary files /dev/null and b/plugins/org.argeo.slc.client.ui/icons/executionPassed.gif differ
index 28c14d9562d815dfa532fe5cf170ae5b56c86ac5..d881f0ec8c9e0b54ee1862700b054eacc91f2e71 100644 (file)
  */
 package org.argeo.slc.client.ui;
 
+import static org.argeo.slc.client.ui.ClientUiPlugin.getImageDescriptor;
 import static org.argeo.slc.client.ui.ClientUiPlugin.img;
 
+import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.swt.graphics.Image;
 
 /** Shared images. */
@@ -45,4 +47,9 @@ public class SlcImages {
        public final static Image PROCESS_SCHEDULED = img("icons/process_scheduled.gif");
        public final static Image PROCESS_RUNNING = img("icons/process_running.png");
        public final static Image PROCESS_COMPLETED = img("icons/process_completed.png");
+
+       // Decorators
+       public final static ImageDescriptor EXECUTION_ERROR = getImageDescriptor("icons/executionError.gif");
+       public final static ImageDescriptor EXECUTION_PASSED = getImageDescriptor("icons/executionPassed.gif");
+
 }
index a7c96927defa046300e856dbed1a13d0f2aca76e..f5a7c98d191acf9eb601a84e3cb3e71b0e259da8 100644 (file)
@@ -25,6 +25,7 @@ import org.argeo.slc.SlcException;
 import org.argeo.slc.client.ui.ClientUiPlugin;
 import org.argeo.slc.client.ui.SlcImages;
 import org.argeo.slc.client.ui.SlcUiConstants;
+import org.argeo.slc.client.ui.model.ResultFolder;
 import org.argeo.slc.client.ui.model.ResultParent;
 import org.argeo.slc.client.ui.model.SingleResultNode;
 import org.argeo.slc.jcr.SlcNames;
@@ -51,19 +52,30 @@ public class ResultFailedDecorator extends LabelProvider implements
        // hack for SWT resource leak
        // see http://www.eclipse.org/articles/swt-design-2/swt-design-2.html
        // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=181215
+       private final Image passedFolder;
        private final Image failedFolder;
        private final Image failedSingleResult;
+       private final Image errorSingleResult;
+       private final Image passedSingleResult;
 
        public ResultFailedDecorator() {
                super();
-               ImageDescriptor desc = ClientUiPlugin.getDefault().getWorkbench()
+               ImageDescriptor failedDesc = ClientUiPlugin.getDefault().getWorkbench()
                                .getSharedImages()
                                .getImageDescriptor(ISharedImages.IMG_DEC_FIELD_ERROR);
-               failedFolder = new DecorationOverlayIcon(SlcImages.FOLDER, desc,
+               failedFolder = new DecorationOverlayIcon(SlcImages.FOLDER, failedDesc,
                                IDecoration.TOP_LEFT).createImage();
+               passedFolder = new DecorationOverlayIcon(SlcImages.FOLDER,
+                               SlcImages.EXECUTION_PASSED, IDecoration.TOP_LEFT).createImage();
                failedSingleResult = new DecorationOverlayIcon(
-                               SlcImages.PROCESS_COMPLETED, desc, IDecoration.TOP_LEFT)
+                               SlcImages.PROCESS_COMPLETED, failedDesc, IDecoration.TOP_LEFT)
                                .createImage();
+               errorSingleResult = new DecorationOverlayIcon(
+                               SlcImages.PROCESS_COMPLETED, SlcImages.EXECUTION_ERROR,
+                               IDecoration.TOP_LEFT).createImage();
+               passedSingleResult = new DecorationOverlayIcon(
+                               SlcImages.PROCESS_COMPLETED, SlcImages.EXECUTION_PASSED,
+                               IDecoration.TOP_LEFT).createImage();
        }
 
        // Method to decorate Image
@@ -74,7 +86,14 @@ public class ResultFailedDecorator extends LabelProvider implements
                // decorates resource icon with basic decorations provided
                // by Eclipse
                if (object instanceof ResultParent) {
-                       if (!((ResultParent) object).isPassed()) {
+                       if (((ResultParent) object).isPassed()) {
+                               if (object instanceof SingleResultNode)
+                                       return passedSingleResult;
+                               else if (object instanceof ResultFolder)
+                                       return passedFolder;
+                               else
+                                       return null;
+                       } else {
                                // ImageDescriptor desc = ClientUiPlugin.getDefault()
                                // .getWorkbench().getSharedImages()
                                // .getImageDescriptor(ISharedImages.IMG_DEC_FIELD_ERROR);
@@ -82,12 +101,24 @@ public class ResultFailedDecorator extends LabelProvider implements
                                // DecorationOverlayIcon(
                                // image, desc, IDecoration.TOP_LEFT);
                                // return decoratedImage.createImage();
-                               if (object instanceof SingleResultNode)
-                                       return failedSingleResult;
-                               else
+                               if (object instanceof SingleResultNode) {
+                                       SingleResultNode srn = (SingleResultNode) object;
+                                       boolean isError = false;
+                                       try {
+                                               isError = srn.getNode()
+                                                               .getNode(SlcNames.SLC_AGGREGATED_STATUS)
+                                                               .hasProperty(SlcNames.SLC_ERROR_MESSAGE);
+                                       } catch (RepositoryException re) {
+                                               // Silent node might not exist
+                                       }
+                                       if (isError)
+                                               return errorSingleResult;
+                                       else
+                                               return failedSingleResult;
+
+                               } else
                                        return failedFolder;
-                       } else
-                               return null;
+                       }
                }
                return null;
        }