View Javadoc

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 }