package org.simantics.plant3d.editor;
+import java.util.ArrayList;
+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;
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;
import org.simantics.plant3d.scenegraph.TurnComponent;
import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
-public class P3DContentOutlinePage extends VTKContentOutlinePage<Resource, Object>{
+public class P3DContentOutlinePage extends VTKContentOutlinePage<Resource, INode>{
private static final boolean DEBUG = false;
protected Menu contextMenu;
private Image elbowImage;
private Image componentImage;
- public P3DContentOutlinePage(ParentNode<? extends INode> rootNode, NodeSelectionProvider2<Resource,Object> provider) {
+
+ 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
if (parentElement instanceof P3DRootNode) {
return ((P3DRootNode)parentElement).getChild().toArray();
}
- if (!DEBUG) {
- if (parentElement instanceof PipeRun) {
- return ((PipeRun)parentElement).getSortedChild().toArray();
+ if (parentElement instanceof PipeRun) {
+ if (DEBUG) {
+ List<Object> list = new ArrayList<Object>();
+ list.addAll(((PipeRun)parentElement).getControlPoints());
+ list.addAll(((PipeRun)parentElement).getSortedChild());
+ return list.toArray();
}
- } else {
+ return ((PipeRun)parentElement).getSortedChild().toArray();
+ }
+ if (DEBUG) {
if (parentElement instanceof PipelineComponent) {
return new Object[]{((PipelineComponent) parentElement).getControlPoint()};
} else if (parentElement instanceof PipeControlPoint) {
}
+ @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();
}
protected void hookContextMenu(TreeViewer viewer) {
- MenuManager menuMgr = new MenuManager("#PopupMenu");
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- createContextMenu(manager);
- }
- });
- contextMenu = menuMgr.createContextMenu(viewer.getTree());
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ createContextMenu(manager);
+ }
+ });
+ contextMenu = menuMgr.createContextMenu(viewer.getTree());
}
protected void createContextMenu(IMenuManager manager) {
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) {