]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/InlineComponent.java
Publish Plant3D feature
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / InlineComponent.java
1 package org.simantics.plant3d.scenegraph;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import org.simantics.g3d.scenegraph.base.ParentNode;
7 import org.simantics.objmap.graph.annotations.DynamicGraphType;
8 import org.simantics.objmap.graph.annotations.GetType;
9 import org.simantics.objmap.graph.annotations.SetType;
10 import org.simantics.plant3d.ontology.Plant3D;
11 import org.simantics.plant3d.scenegraph.controlpoint.ControlPointFactory;
12 import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
13
14 @DynamicGraphType(Plant3D.URIs.InlineComponent)
15 public class InlineComponent extends PipelineComponent {
16
17         private String type;
18         private PipeControlPoint controlPoint;
19         
20         @GetType(Plant3D.URIs.InlineComponent)
21         public String getType() {
22                 return type;
23         }
24         
25         @SetType(Plant3D.URIs.InlineComponent)
26         public void setType(String type) throws Exception{
27                 this.type = type;
28                 controlPoint = ControlPointFactory.create(this);
29                 
30         }
31         
32         @Override
33         public PipeControlPoint getControlPoint() {
34                 return controlPoint;
35         }
36         
37         @Override
38         public void setParent(ParentNode<?> parent, String name) {
39                 super.setParent(parent, name);
40                 setPipeRun((PipeRun)parent);
41         }
42         
43         public boolean isVariableLength() {
44                 return !controlPoint.isFixed();
45         }
46         
47         @Override
48         public void updateParameters() {
49                 super.updateParameters();
50                 if (!isVariableLength()) {
51                         Map<String,Object> calculated = getCalculatedParameters();
52                         if (calculated.containsKey("length")) {
53                                 controlPoint.setLength((Double)calculated.get("length"));
54                         }
55                 }
56         }
57         
58         @Override
59         public Map<String, Object> updateParameterMap() {
60                 Map<String,Object> map = new HashMap<String, Object>();
61                 if (controlPoint != null) {
62                         if (!Double.isNaN(controlPoint.getLength()))
63                                 map.put("length", controlPoint.getLength());
64                         if (controlPoint.isDualInline()) {
65                                 PipeControlPoint sub = controlPoint.getSubPoint().get(0);
66                                 PipeRun pipeRun = sub.getPipeRun();
67                                 if (pipeRun != null) {
68                                         map.put("radius2", pipeRun.getPipeDiameter() * 0.5);
69                                 }
70                         }
71                 }
72                         
73                 PipeRun pipeRun = getPipeRun();
74                 if (pipeRun != null) {
75                         map.put("radius", pipeRun.getPipeDiameter() * 0.5);
76                 }
77                 return map;
78         }
79         
80         
81 }