]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/editor/P3DContentOutlinePage.java
Showing error messages when components overlap each other
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / editor / P3DContentOutlinePage.java
index 893a07300cd2c95db095123c3794e7dbfdf53a54..ed9c4a5baf8eed40b62c3e23c1e98c403b96c7dd 100644 (file)
@@ -6,8 +6,11 @@ import java.util.List;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.resource.LocalResourceManager;
+import org.eclipse.jface.viewers.DecorationOverlayIcon;
+import org.eclipse.jface.viewers.IDecoration;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.events.MenuDetectEvent;
 import org.eclipse.swt.events.MenuDetectListener;
@@ -42,14 +45,33 @@ public class P3DContentOutlinePage extends VTKContentOutlinePage<Resource, INode
        private Image elbowImage;
        private Image componentImage;
        
+       
+       private Image nozzleErrorImage;
+    private Image pipeErrorImage;
+    private Image tankErrorImage;
+    private Image elbowErrorImage;
+    private Image componentErrorImage;
+    
        public  P3DContentOutlinePage(ParentNode<? extends INode> rootNode, NodeSelectionProvider2<Resource,INode> provider) {
                super(rootNode,provider);
                
-               nozzleImage = manager.createImage(Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Nozzle.png"));
-               pipeImage = manager.createImage(Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Straight.png"));
-               tankImage = manager.createImage(Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/tank.png"));
-               elbowImage = manager.createImage(Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Elbow.png"));
-               componentImage = manager.createImage(Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Component.png"));
+               ImageDescriptor nozzleDesc = Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Nozzle.png");
+               ImageDescriptor straightDesc = Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Straight.png");
+               ImageDescriptor tankDesc = Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/tank.png");
+               ImageDescriptor elbowDesc = Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Elbow.png");
+               ImageDescriptor componentDesc = Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Component.png");
+               nozzleImage = manager.createImage(nozzleDesc);
+               pipeImage = manager.createImage(straightDesc);
+               tankImage = manager.createImage(tankDesc);
+               elbowImage = manager.createImage(elbowDesc);
+               componentImage = manager.createImage(componentDesc);
+               
+               ImageDescriptor error = Activator.imageDescriptorFromPlugin("org.simantics.issues.ui", "icons/warning_decoration.png");
+               nozzleErrorImage = manager.createImage(new DecorationOverlayIcon(nozzleDesc, error, IDecoration.BOTTOM_RIGHT));
+               pipeErrorImage = manager.createImage(new DecorationOverlayIcon(straightDesc, error, IDecoration.BOTTOM_RIGHT));
+               tankErrorImage = manager.createImage(new DecorationOverlayIcon(tankDesc, error, IDecoration.BOTTOM_RIGHT));
+               elbowErrorImage = manager.createImage(new DecorationOverlayIcon(elbowDesc, error, IDecoration.BOTTOM_RIGHT));
+               componentErrorImage = manager.createImage(new DecorationOverlayIcon(componentDesc, error, IDecoration.BOTTOM_RIGHT));
        }
        
        @Override
@@ -157,15 +179,30 @@ public class P3DContentOutlinePage extends VTKContentOutlinePage<Resource, INode
                        if (element instanceof PipelineComponent) {
                                PipelineComponent comp = (PipelineComponent)element;
                                if (comp instanceof TurnComponent) {
-                                       return elbowImage;
+                                   if (comp.getError() == null)
+                                       return elbowImage;
+                                   else
+                                       return elbowErrorImage;
                                } else if (comp instanceof EndComponent) {
-                                       return componentImage;
+                                   if (comp.getError() == null)
+                                       return componentImage;
+                                   else
+                                       return componentErrorImage;
                                } else if (comp instanceof Nozzle) {
-                                       return nozzleImage;
+                                   if (comp.getError() == null)
+                                       return nozzleImage;
+                                   else
+                                       return nozzleErrorImage;
                                } else if (comp.getControlPoint().isFixed()) {
-                                       return componentImage;
+                                   if (comp.getError() == null)
+                                       return componentImage;
+                                   else
+                                       return componentErrorImage;
                                }
-                               return pipeImage;
+                               if (comp.getError() == null)
+                                   return pipeImage;
+                               else
+                                   return pipeErrorImage;
                        } else if (element instanceof Equipment) {
                                return tankImage;
                        } else if (element instanceof PipeRun) {