]> 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 a4e8bafd14b3d777ebaaa0e69b790d1408c85d0f..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;
@@ -19,6 +22,7 @@ import org.simantics.g3d.scenegraph.base.ParentNode;
 import org.simantics.g3d.vtk.common.NodeSelectionProvider2;
 import org.simantics.g3d.vtk.common.VTKContentOutlinePage;
 import org.simantics.plant3d.Activator;
+import org.simantics.plant3d.ontology.Plant3D;
 import org.simantics.plant3d.scenegraph.EndComponent;
 import org.simantics.plant3d.scenegraph.Equipment;
 import org.simantics.plant3d.scenegraph.Nozzle;
@@ -30,7 +34,7 @@ import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
 
 public class P3DContentOutlinePage extends VTKContentOutlinePage<Resource, INode>{
        
-       private static final boolean DEBUG = true;
+       private static final boolean DEBUG = false;
        protected Menu contextMenu;
        
        private LocalResourceManager manager = new LocalResourceManager(JFaceResources.getResources());
@@ -41,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
@@ -117,6 +140,18 @@ public class P3DContentOutlinePage extends VTKContentOutlinePage<Resource, INode
                
        }
        
+       @Override
+       public void propertyChanged(INode node, String id) {
+           // TODO Auto-generated method stub
+           if (node instanceof PipelineComponent) {
+               if (Plant3D.URIs.HasNext.equals(id) || Plant3D.URIs.HasPrevious.equals(id)) {
+                   refershViewer(node.getParent());
+                   return;
+               }
+           }
+           super.propertyChanged(node, id);
+       }
+       
        @Override
        public void dispose() {
                manager.dispose();
@@ -144,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) {