]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d/src/org/simantics/g3d/property/ComboPropertyManipulator.java
45a3b99adb3f3ec2a5284eb36b2133f6791fbee6
[simantics/3d.git] / org.simantics.g3d / src / org / simantics / g3d / property / ComboPropertyManipulator.java
1 package org.simantics.g3d.property;
2
3 import java.util.List;
4
5 public class ComboPropertyManipulator implements PropertyManipulator{
6
7     ComboValueProvider provider;
8     Object input;
9     
10     boolean editMode;
11     
12     public ComboPropertyManipulator(ValueProvider provider, Object input) {
13         this.provider = (ComboValueProvider)provider;
14         this.input = input;
15     }
16     
17     @Override
18     public int getValueCount() {
19         return 1;
20     }
21     
22     @Override
23     public String getDescription(int i) {
24         if (i == 0)
25             return "Value";
26         return null;
27     }
28     
29     @Override
30     public String getValue(int i) {
31         try {
32             Integer value = (Integer)provider.getValue(input);
33             if (value == null) return null;
34             return getItems()[value];
35         } catch (Exception e) {
36             return null;
37         }
38     }
39     
40     @Override
41     public String setValue(String value, int i) {
42         try {
43             provider.setValue(input, Integer.parseInt(value));
44         } catch (Exception e) {
45             return e.getMessage();
46         }
47         return null;
48     }
49
50     @Override
51     public boolean getEditMode() {
52         return editMode;
53     }
54     
55     @Override
56     public void setEditMode(boolean b) {
57         editMode = b;
58     }
59     
60     public String[] getItems() {
61         try {
62             List<Object> vals = provider.getValues(input);
63             String arr[] = new String[vals.size()];
64             for (int i = 0; i < vals.size(); i++) {
65                 arr[i] = vals.get(i).toString();
66             }
67             return arr;
68         } catch (Exception e) {
69             return new String[0];
70         }
71     }
72     
73     public Integer getValueIndex() {
74         try {
75             Integer value = (Integer)provider.getValue(input);
76             return value;
77         } catch (Exception e) {
78             return null;
79         }
80     }
81     
82     public Integer indexOf(String value) {
83         String[] items = getItems();
84         for (int i = 0; i < items.length; i++)
85             if (items[i].equals(value))
86                 return i;
87         return -1;
88     }
89 }