]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d/src/org/simantics/g3d/property/VectorPropertyManipulator.java
3D framework (Simca 2012)
[simantics/3d.git] / org.simantics.g3d / src / org / simantics / g3d / property / VectorPropertyManipulator.java
1 package org.simantics.g3d.property;\r
2 \r
3 import java.lang.reflect.InvocationTargetException;\r
4 import java.lang.reflect.Method;\r
5 \r
6 import javax.vecmath.Vector3d;\r
7 \r
8 public class VectorPropertyManipulator implements PropertyManipulator {\r
9         \r
10         ValueProvider provider;\r
11         protected Object input;\r
12         \r
13         boolean editMode;\r
14         Vector3d editValue = null;\r
15         \r
16         public VectorPropertyManipulator(ValueProvider provider, Object input) {\r
17                 this.provider = provider;\r
18                 this.input = input;\r
19         }\r
20         \r
21         @Override\r
22         public int getValueCount() {\r
23                 return 3;\r
24         }\r
25         \r
26         @Override\r
27         public String getDescription(int i) {\r
28                 if (i == 0)\r
29                         return "X";\r
30                 if (i == 1)\r
31                         return "Y";\r
32                 if (i == 2)\r
33                         return "Z";\r
34                 return null;\r
35         }\r
36         \r
37         @Override\r
38         public String getValue(int i) {\r
39                 try {\r
40                         Vector3d v = _getValue();\r
41                         if (v == null)\r
42                                 return null;\r
43                         if (i == 0)\r
44                                 return Double.toString(v.x);\r
45                         if (i == 1)\r
46                                 return Double.toString(v.y);\r
47                         if (i == 2)\r
48                                 return Double.toString(v.z);\r
49                         return null;\r
50                 } catch (Exception e) {\r
51                         return null;\r
52                 }\r
53         }\r
54         \r
55         @Override\r
56         public String setValue(String value, int i) {\r
57                 try {\r
58                         Double d = Double.parseDouble(value);\r
59                         Vector3d v = _getValue();\r
60                         v = new Vector3d(v.x, v.y, v.z);\r
61                         if (i == 0)\r
62                                 v.x = d;\r
63                         if (i == 1)\r
64                                 v.y = d;\r
65                         if (i == 2)\r
66                                 v.z = d;\r
67                         editValue = v;\r
68                         setValue(v);\r
69                 } catch (Exception e) {\r
70                         return e.getMessage();\r
71                 }\r
72                 return null;\r
73         }\r
74         \r
75         protected void setValue(Vector3d v) throws Exception {\r
76                 provider.setValue(input, v);\r
77         }\r
78         \r
79         private Vector3d _getValue() throws Exception{\r
80                 if (editMode)\r
81                         return editValue;\r
82                 return (Vector3d) provider.getValue(input);\r
83         }\r
84         \r
85         @Override\r
86         public boolean getEditMode() {\r
87                 return editMode;\r
88         }\r
89         \r
90         @Override\r
91         public void setEditMode(boolean b) {\r
92                 editMode = b;\r
93                 if (editMode) {\r
94                         try {\r
95                                 editValue = (Vector3d) provider.getValue(input);\r
96                         } catch (Exception e) {\r
97                                 \r
98                         }\r
99                 }\r
100                 \r
101         }\r
102 \r
103 }\r