]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/actions/AddComponentAction.java
Equipment/Component library customization
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / actions / AddComponentAction.java
index a39d84c8ebd31d7706d2848472c38464ce3293a6..ba6721043d20f7e38c8f63d227e310ddc7591621 100644 (file)
@@ -50,13 +50,16 @@ public class AddComponentAction extends vtkSwtAction {
        private boolean insertAdjustable;
        private boolean lengthAdjustable;
        
-       public AddComponentAction(InteractiveVtkComposite panel, P3DRootNode root) {
+       private String libUri;
+       
+       public AddComponentAction(InteractiveVtkComposite panel, P3DRootNode root, String libUri) {
                super(panel);
                this.root = root;
                setText("Add Component");
                setImageDescriptor(Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/Component.png"));
                nodeMap = root.getNodeMap();
                gizmo = new TerminalSelectionGizmo(panel);
+               this.libUri = libUri;
        }
        
        public void setComponent(PipelineComponent component) {
@@ -89,7 +92,7 @@ public class AddComponentAction extends vtkSwtAction {
        @Override
        public void run() {
                
-               ComponentSelectionDialog dialog = new ComponentSelectionDialog(Display.getCurrent().getActiveShell(), allowed, component);
+               ComponentSelectionDialog dialog = new ComponentSelectionDialog(Display.getCurrent().getActiveShell(), allowed, component, libUri);
                if (dialog.open() == ComponentSelectionDialog.CANCEL)
                        return;
                toAdd = dialog.getSelected();
@@ -182,162 +185,6 @@ public class AddComponentAction extends vtkSwtAction {
                } catch (Exception e) {
                        ExceptionUtils.logAndShowError("Cannot add component", e);
                }
-//             try  {
-//                     PipelineComponent newComponent = ComponentUtils.createComponent(root,toAdd.getUri());
-//                     PipeControlPoint newPcp = newComponent.getControlPoint();
-//                     
-//                     PipeControlPoint toPcp = component.getControlPoint();
-//                     PipeRun pipeRun = toPcp.getPipeRun();
-//                     
-//                     Vector3d dir = null;
-//                     Vector3d pos = null;
-//             
-//                     
-//                     if (toPcp.isInline()) {
-//                         switch (position) {
-//                 case NEXT: 
-//                     if (toPcp.isDualInline())
-//                         toPcp = toPcp.getSubPoint().get(0);
-//                     
-//                     break;
-//                 case PREVIOUS:
-//                     if (toPcp.isDualSub())
-//                         toPcp = toPcp.parent;
-//                 }
-//                         Vector3d start = new Vector3d();
-//                         Vector3d end = new Vector3d();
-//                 dir = new Vector3d();
-//                 toPcp.getInlineControlPointEnds(start, end, dir);
-//                 dir.normalize();
-//                switch (position) {
-//                case NEXT:
-//                    pos = new Vector3d(end);
-//                    break;
-//                case PREVIOUS:
-//                    pos = new Vector3d(start);
-//                    break;
-//                case SPLIT:
-//                    pos = new Vector3d(toPcp.getWorldPosition());
-//                    break;
-//                }
-//                
-//                     } else if (toPcp.isDirected()) {
-//                         dir = new Vector3d(toPcp.getDirection(Direction.NEXT));
-//                         pos = new Vector3d(toPcp.getWorldPosition());
-//                     } else if (toPcp.isTurn() && toPcp.isFixed()) {
-//                         dir = new Vector3d(toPcp.getDirection(position == PositionType.NEXT ? Direction.NEXT : Direction.PREVIOUS));
-//                pos = new Vector3d(toPcp.getWorldPosition());
-//                if (!lengthAdjustable) {
-//                    Vector3d v = new Vector3d(dir);
-//                    v.scale(toPcp.getInlineLength());
-//                    pos.add(v);
-//                } else {
-//                    if (insertPosition == PositionType.NEXT) {
-//                        Vector3d v = new Vector3d(dir);
-//                        v.scale(toPcp.getInlineLength());
-//                        pos.add(v);
-//                    } else if (insertPosition == PositionType.SPLIT) {
-//                        // scale 0.5*length so that we don't remove the length twice from the new component
-//                        Vector3d v = new Vector3d(dir);
-//                        v.scale(toPcp.getInlineLength()*0.5);  
-//                        pos.add(v);
-//                    }
-//                }
-//                     }
-//                     
-//                     
-//                     if (!toAdd.isSizeChange()) {
-//                             String name = component.getPipeRun().getUniqueName(toAdd.getName());
-//                             newComponent.setName(name);
-//
-//                             pipeRun.addChild(newComponent);
-//                             if (toAdd.isVariable()) {
-//                                     // TODO: these options are not stored into DB. Should they?!
-//                                     if (toAdd.getType() == Type.INLINE) {
-//                                             newPcp.setLength(length);
-////                                           newPcp.setFixed(true);
-//                                     } else if (toAdd.getType() == Type.TURN) {
-//                                             newPcp.setTurnAngle(angle);
-////                                           newPcp.setFixed(true);
-//                                     }
-//                             }
-//                             newComponent.updateParameters();
-//                             
-//                         Vector3d v = new Vector3d(dir);
-//                         if (insertAdjustable) {
-//                         if (insertPosition == PositionType.NEXT)
-//                             v.scale(newComponent.getControlPoint().getInlineLength());
-//                         else if (insertPosition == PositionType.SPLIT)
-//                             v.set(0, 0, 0);
-//                         else if (insertPosition == PositionType.PREVIOUS)
-//                             v.scale(-newComponent.getControlPoint().getInlineLength());
-//                         } else {
-//                             v.scale(newComponent.getControlPoint().getInlineLength());
-//                         }
-//                switch (position) {
-//                case NEXT:
-//                    pos.add(v);
-//                    break;
-//                case PREVIOUS:
-//                    pos.sub(v);
-//                    break;
-//                case SPLIT:
-//                    break;
-//                }
-//                             
-//                             switch (position) {
-//                             case NEXT: 
-//                                     if (toPcp.isDualInline())
-//                                             toPcp = toPcp.getSubPoint().get(0);
-//                                     newPcp.insert(toPcp, Direction.NEXT);
-//                                     newPcp.setWorldPosition(pos);
-//                                     break;
-//                             case PREVIOUS:
-//                                     if (toPcp.isDualSub())
-//                                             toPcp = toPcp.parent;
-//                                     newPcp.insert(toPcp, Direction.PREVIOUS);
-//                                     newPcp.setWorldPosition(pos);
-//                                     break;
-//                             case SPLIT:
-//                                     PipingRules.splitVariableLengthComponent(newComponent, (InlineComponent)component, true);
-//                             }
-//                     } else {
-//                             PipeRun other = new PipeRun();
-//                             String n = root.getUniqueName("PipeRun");
-//                             other.setName(n);
-//                             other.setPipeDiameter(diameter);
-//                             other.setTurnRadius(turnRadius);
-//                             root.addChild(other);
-//                             
-//                             
-//                             if (position == PositionType.NEXT) {
-//                                     PipingRules.addSizeChange(false, pipeRun, other, (InlineComponent)newComponent, toPcp, null);
-//                     } else if (position == PositionType.PREVIOUS){
-//                             PipingRules.addSizeChange(true, pipeRun, other, (InlineComponent)newComponent, toPcp, null);
-//                     }
-//                             newPcp.setWorldPosition(pos);
-//                             // TODO : chicken-egg problem
-//                             newComponent.updateParameters();
-//                         Vector3d v = new Vector3d(dir);
-//                v.scale(newComponent.getControlPoint().getLength()*0.5);
-//                switch (position) {
-//                case NEXT:
-//                    pos.add(v);
-//                    break;
-//                case PREVIOUS:
-//                    pos.sub(v);
-//                    break;
-//                case SPLIT:
-//                    break;
-//                }
-//                newPcp.setWorldPosition(pos);
-//                             
-//                     }
-//                     
-//                     
-//             } catch (Exception e) {
-//                     ExceptionUtils.logAndShowError("Cannot add component", e);
-//             }
        }
        
        public boolean mouseClicked(MouseEvent e) {