1 package org.simantics.g3d.property;
5 import org.simantics.utils.datastructures.Arrays;
7 public class ComboPropertyManipulator implements PropertyManipulator{
9 ComboValueProvider provider;
14 public ComboPropertyManipulator(ValueProvider provider, Object input) {
15 this.provider = (ComboValueProvider)provider;
20 public int getValueCount() {
25 public String getDescription(int i) {
32 public String getValue(int i) {
34 Object rawValue = provider.getValue(input);
35 if (rawValue == null) {
38 else if (rawValue instanceof Integer) {
39 Integer value = (Integer)rawValue;
40 return getItems()[value];
42 else if (rawValue instanceof Enum) {
43 return rawValue.toString();
48 } catch (Exception e) {
54 public String setValue(String value, int i) {
56 int intValue = Integer.parseInt(value);
57 Class<?> valueType = provider.getValueType();
58 if (Enum.class.isAssignableFrom(valueType)) {
59 provider.setValue(input, valueType.getEnumConstants()[intValue]);
62 provider.setValue(input, intValue);
64 } catch (Exception e) {
65 return e.getMessage();
71 public boolean getEditMode() {
76 public void setEditMode(boolean b) {
80 public String[] getItems() {
82 List<Object> vals = provider.getValues(input);
83 String arr[] = new String[vals.size()];
84 for (int i = 0; i < vals.size(); i++) {
85 arr[i] = vals.get(i).toString();
88 } catch (Exception e) {
93 public Integer getValueIndex() {
95 Object value = provider.getValue(input);
96 Class<?> valueType = provider.getValueType();
97 if (valueType.isEnum()) {
98 return Arrays.indexOf(valueType.getEnumConstants(), value);
101 return (Integer) value;
103 } catch (Exception e) {
108 public Integer indexOf(String value) {
109 String[] items = getItems();
110 for (int i = 0; i < items.length; i++)
111 if (items[i].equals(value))