1 /*
2 * Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton,
3 * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
4 *
5 * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
6 * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
7 * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
8 * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
9 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
11 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
12 * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
13 * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
14 * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
15 * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
16 * OR MODIFICATIONS.
17 * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
18 * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
19 * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
20 * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
21 */
22
23 package de.desy.acop.chart.customizer;
24
25 import java.lang.reflect.Method;
26 import java.util.Vector;
27 import javax.swing.ComboBoxModel;
28 import javax.swing.JComboBox;
29 import de.desy.acop.chart.Acop;
30
31 public class AcopJComBox extends JComboBox
32 {
33 private Acop acopBean;
34 private String proper;
35 private int index;
36 public AcopJComBox(ComboBoxModel aModel)
37 {
38 super(aModel);
39 // TODO Auto-generated constructor stub
40 }
41 public AcopJComBox(Object[] items)
42 {
43 super(items);
44 // TODO Auto-generated constructor stub
45 }
46 public AcopJComBox(Vector<?> items)
47 {
48 super(items);
49 // TODO Auto-generated constructor stub
50 }
51 public AcopJComBox()
52 {
53 super();
54 // TODO Auto-generated constructor stub
55 }
56 public void setAcopBean(Acop Bean)
57 {
58 acopBean = Bean;
59 try
60 {
61 Method m = acopBean.getClass().getMethod("get" + proper, null);
62 index = (int) (Integer) m.invoke(acopBean, null);
63 this.setSelectedIndex(index);
64 }
65 catch (Exception ex)
66 {
67 ex.printStackTrace();
68 }
69 }
70 public AcopJComBox(String property, Object[] enumObject)
71 {
72 super();
73 proper = property;
74 for (int i = 0; i < enumObject.length; i++)
75 this.addItem(enumObject[i].toString());
76 addItemListener(new java.awt.event.ItemListener()
77 {
78 public void itemStateChanged(java.awt.event.ItemEvent e)
79 {
80 if (index != getSelectedIndex())
81 {
82 if (acopBean != null)
83 {
84 try
85 {
86 Method m = acopBean.getClass().getMethod("set" + proper, int.class);
87 int soll = getSelectedIndex();
88 m.invoke(acopBean, soll);
89 // System.out.println("set JComBox property: " + proper + " value: " + soll); // TODO
90 // Auto-generated
91 // Event
92 // stub
93 // itemStateChanged()
94 firePropertyChange(proper, index, soll);
95 index = soll;
96 }
97 catch (Exception ex)
98 {
99 ex.printStackTrace();
100 }
101 }
102 }
103 }
104 });
105 }
106 }