]> gerrit.simantics Code Review - simantics/3d.git/commitdiff
Merge changes Ib176f957,I9a82db4e,Id0fdacee
authorMarko Luukkainen <marko.luukkainen@semantum.fi>
Wed, 14 Aug 2019 09:38:32 +0000 (09:38 +0000)
committerGerrit Code Review <gerrit2@simantics>
Wed, 14 Aug 2019 09:38:32 +0000 (09:38 +0000)
* changes:
  Add component did not work properly for nozzles.
  Show components in connected order in outline with debug mode
  Additional fix to control point synchronization

org.simantics.plant3d/src/org/simantics/plant3d/actions/AddComponentAction.java
org.simantics.plant3d/src/org/simantics/plant3d/editor/P3DContentOutlinePage.java
org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/PipelineComponent.java

index 18087b68ce17387fe4394ce7010a0f439847ed68..60f95215250409cfb382c42474e1926f857fd417 100644 (file)
@@ -17,6 +17,7 @@ import org.simantics.plant3d.Activator;
 import org.simantics.plant3d.dialog.ComponentSelectionDialog;
 import org.simantics.plant3d.gizmo.TerminalSelectionGizmo;
 import org.simantics.plant3d.scenegraph.InlineComponent;
+import org.simantics.plant3d.scenegraph.Nozzle;
 import org.simantics.plant3d.scenegraph.P3DRootNode;
 import org.simantics.plant3d.scenegraph.PipeRun;
 import org.simantics.plant3d.scenegraph.PipelineComponent;
@@ -58,14 +59,20 @@ public class AddComponentAction extends vtkSwtAction {
                this.component = component;
                
                allowed.clear();
-               if (component.getNext() == null) {
-                       allowed.add(PositionType.NEXT);
-               }
-               if (component.getPrevious() == null) {
-                       allowed.add(PositionType.PREVIOUS);
-               }
-               if (component instanceof InlineComponent && !component.getControlPoint().isFixed()){
-                       allowed.add(PositionType.SPLIT);
+               if (component instanceof Nozzle) {
+                   if (component.getNext() == null && component.getPrevious() == null) {
+                   allowed.add(PositionType.NEXT);
+               }  
+               } else {
+               if (component.getNext() == null) {
+                       allowed.add(PositionType.NEXT);
+               }
+               if (component.getPrevious() == null) {
+                       allowed.add(PositionType.PREVIOUS);
+               }
+               if (component instanceof InlineComponent && !component.getControlPoint().isFixed()){
+                       allowed.add(PositionType.SPLIT);
+               }
                }
                setEnabled(allowed.size() > 0);
        }
index 160188e60c64c29303d8a7ecc9fd78d38e9388d7..0c5ab5df39e0cdf842a953694072a13af4864cb2 100644 (file)
@@ -1,5 +1,8 @@
 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;
@@ -56,11 +59,16 @@ public class P3DContentOutlinePage extends VTKContentOutlinePage<Resource, Objec
                                if (parentElement instanceof P3DRootNode) {
                                        return ((P3DRootNode)parentElement).getChild().toArray();
                                }
-                               if (!DEBUG) {
-                                       if (parentElement instanceof PipeRun) {
-                                               return ((PipeRun)parentElement).getSortedChild().toArray();
-                                       }
-                               } else {
+                               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();
+                                   }
+                                   return ((PipeRun)parentElement).getSortedChild().toArray();
+                }
+                               if (DEBUG) {
                                        if (parentElement instanceof PipelineComponent) {
                                                return new Object[]{((PipelineComponent) parentElement).getControlPoint()};
                                        } else if (parentElement instanceof PipeControlPoint) {
index 36c6dde1b77e0667b50b1f7a6be4cb7f4f395c6f..06944b53517343420418461e68148103aaaaa476 100644 (file)
@@ -88,8 +88,8 @@ public abstract class PipelineComponent extends GeometryNode {
        public void setNext(PipelineComponent comp) {
                if (next == comp)
                        return;
-               if (comp == null)
-            this.next._removeRef(this);
+               if (this.next != null)
+                   this.next._removeRef(this);
                this.next = comp;
                this.syncnext = false;
                syncNext();
@@ -109,7 +109,7 @@ public abstract class PipelineComponent extends GeometryNode {
        public void setPrevious(PipelineComponent comp) {
                if (previous == comp)
                        return;
-               if (comp == null)
+               if (this.previous != null)
                    this.previous._removeRef(this);
                this.previous = comp;
                this.syncprev = false;
@@ -130,8 +130,8 @@ public abstract class PipelineComponent extends GeometryNode {
        public void setBranch0(PipelineComponent comp) {
                if (branch0 == comp)
                        return;
-               if (comp == null)
-            this.branch0._removeRef(this);
+               if (this.branch0 != null)
+                   this.branch0._removeRef(this);
                this.branch0 = comp;
                this.syncbr0 = false;
                syncBranch0();