-package org.simantics.g3d.property;\r
-\r
-import java.lang.reflect.InvocationTargetException;\r
-import java.lang.reflect.Method;\r
-\r
-import javax.vecmath.Vector3d;\r
-\r
-public class VectorPropertyManipulator implements PropertyManipulator {\r
- \r
- ValueProvider provider;\r
- protected Object input;\r
- \r
- boolean editMode;\r
- Vector3d editValue = null;\r
- \r
- public VectorPropertyManipulator(ValueProvider provider, Object input) {\r
- this.provider = provider;\r
- this.input = input;\r
- }\r
- \r
- @Override\r
- public int getValueCount() {\r
- return 3;\r
- }\r
- \r
- @Override\r
- public String getDescription(int i) {\r
- if (i == 0)\r
- return "X";\r
- if (i == 1)\r
- return "Y";\r
- if (i == 2)\r
- return "Z";\r
- return null;\r
- }\r
- \r
- @Override\r
- public String getValue(int i) {\r
- try {\r
- Vector3d v = _getValue();\r
- if (v == null)\r
- return null;\r
- if (i == 0)\r
- return Double.toString(v.x);\r
- if (i == 1)\r
- return Double.toString(v.y);\r
- if (i == 2)\r
- return Double.toString(v.z);\r
- return null;\r
- } catch (Exception e) {\r
- return null;\r
- }\r
- }\r
- \r
- @Override\r
- public String setValue(String value, int i) {\r
- try {\r
- Double d = Double.parseDouble(value);\r
- Vector3d v = _getValue();\r
- v = new Vector3d(v.x, v.y, v.z);\r
- if (i == 0)\r
- v.x = d;\r
- if (i == 1)\r
- v.y = d;\r
- if (i == 2)\r
- v.z = d;\r
- editValue = v;\r
- setValue(v);\r
- } catch (Exception e) {\r
- return e.getMessage();\r
- }\r
- return null;\r
- }\r
- \r
- protected void setValue(Vector3d v) throws Exception {\r
- provider.setValue(input, v);\r
- }\r
- \r
- private Vector3d _getValue() throws Exception{\r
- if (editMode)\r
- return editValue;\r
- return (Vector3d) provider.getValue(input);\r
- }\r
- \r
- @Override\r
- public boolean getEditMode() {\r
- return editMode;\r
- }\r
- \r
- @Override\r
- public void setEditMode(boolean b) {\r
- editMode = b;\r
- if (editMode) {\r
- try {\r
- editValue = (Vector3d) provider.getValue(input);\r
- } catch (Exception e) {\r
- \r
- }\r
- }\r
- \r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2012, 2013 Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.g3d.property;
+
+import javax.vecmath.Vector3d;
+
+public class VectorPropertyManipulator implements PropertyManipulator {
+
+ ValueProvider provider;
+ protected Object input;
+
+ boolean editMode;
+ Vector3d editValue = null;
+
+ public VectorPropertyManipulator(ValueProvider provider, Object input) {
+ this.provider = provider;
+ this.input = input;
+ }
+
+ @Override
+ public int getValueCount() {
+ return 3;
+ }
+
+ @Override
+ public String getDescription(int i) {
+ if (i == 0)
+ return "X";
+ if (i == 1)
+ return "Y";
+ if (i == 2)
+ return "Z";
+ return null;
+ }
+
+ @Override
+ public String getValue(int i) {
+ try {
+ Vector3d v = _getValue();
+ if (v == null)
+ return null;
+ if (i == 0)
+ return Double.toString(v.x);
+ if (i == 1)
+ return Double.toString(v.y);
+ if (i == 2)
+ return Double.toString(v.z);
+ return null;
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ @Override
+ public String setValue(String value, int i) {
+ try {
+ Double d = Double.parseDouble(value);
+ Vector3d v = _getValue();
+ v = new Vector3d(v.x, v.y, v.z);
+ if (i == 0)
+ v.x = d;
+ if (i == 1)
+ v.y = d;
+ if (i == 2)
+ v.z = d;
+ editValue = v;
+ setValue(v);
+ } catch (Exception e) {
+ return e.getMessage();
+ }
+ return null;
+ }
+
+ protected void setValue(Vector3d v) throws Exception {
+ provider.setValue(input, v);
+ }
+
+ private Vector3d _getValue() throws Exception{
+ if (editMode)
+ return editValue;
+ return (Vector3d) provider.getValue(input);
+ }
+
+ @Override
+ public boolean getEditMode() {
+ return editMode;
+ }
+
+ @Override
+ public void setEditMode(boolean b) {
+ editMode = b;
+ if (editMode) {
+ try {
+ editValue = (Vector3d) provider.getValue(input);
+ } catch (Exception e) {
+
+ }
+ }
+
+ }
+
+}