1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.support.swing;
14
15 import java.io.Serializable;
16 import java.util.Vector;
17
18 import javax.swing.AbstractListModel;
19 import javax.swing.MutableComboBoxModel;
20
21 public class ExtendedComboBoxModel extends AbstractListModel implements MutableComboBoxModel, Serializable
22 {
23 Vector objects;
24 Object selectedObject;
25
26 /***
27 * Constructs an empty DefaultComboBoxModel object.
28 */
29 public ExtendedComboBoxModel()
30 {
31 objects = new Vector();
32 }
33
34 /***
35 * Constructs a DefaultComboBoxModel object initialized with an array of
36 * objects.
37 *
38 * @param items
39 * an array of Object objects
40 */
41 public ExtendedComboBoxModel( final Object items[] )
42 {
43 objects = new Vector();
44 objects.ensureCapacity( items.length );
45
46 int i, c;
47 for( i = 0, c = items.length; i < c; i++ )
48 objects.addElement( items[i] );
49
50 if( getSize() > 0 )
51 {
52 selectedObject = getElementAt( 0 );
53 }
54 }
55
56 /***
57 * Constructs a DefaultComboBoxModel object initialized with a vector.
58 *
59 * @param v
60 * a Vector object ...
61 */
62 public ExtendedComboBoxModel( Vector<?> v )
63 {
64 objects = v;
65
66 if( getSize() > 0 )
67 {
68 selectedObject = getElementAt( 0 );
69 }
70 }
71
72
73 /***
74 * Set the value of the selected item. The selected item may be null.
75 * <p>
76 *
77 * @param anObject
78 * The combo box value or null for no selection.
79 */
80 public void setSelectedItem( Object anObject )
81 {
82 if( ( selectedObject != null && !selectedObject.equals( anObject ) ) || selectedObject == null
83 && anObject != null )
84 {
85 selectedObject = anObject;
86 fireContentsChanged( this, -1, -1 );
87 }
88 }
89
90
91 public Object getSelectedItem()
92 {
93 return selectedObject;
94 }
95
96
97 public int getSize()
98 {
99 return objects.size();
100 }
101
102
103 public Object getElementAt( int index )
104 {
105 if( index >= 0 && index < objects.size() )
106 return objects.elementAt( index );
107 else
108 return null;
109 }
110
111 /***
112 * Returns the index-position of the specified object in the list.
113 *
114 * @param anObject
115 * @return an int representing the index position, where 0 is the first
116 * position
117 */
118 public int getIndexOf( Object anObject )
119 {
120 return objects.indexOf( anObject );
121 }
122
123
124 public void addElement( Object anObject )
125 {
126 objects.addElement( anObject );
127 fireIntervalAdded( this, objects.size() - 1, objects.size() - 1 );
128 if( objects.size() == 1 && selectedObject == null && anObject != null )
129 {
130 setSelectedItem( anObject );
131 }
132 }
133
134
135 public void insertElementAt( Object anObject, int index )
136 {
137 objects.insertElementAt( anObject, index );
138 fireIntervalAdded( this, index, index );
139 }
140
141
142 public void removeElementAt( int index )
143 {
144 if( getElementAt( index ) == selectedObject )
145 {
146 if( index == 0 )
147 {
148 setSelectedItem( getSize() == 1 ? null : getElementAt( index + 1 ) );
149 }
150 else
151 {
152 setSelectedItem( getElementAt( index - 1 ) );
153 }
154 }
155
156 objects.removeElementAt( index );
157
158 fireIntervalRemoved( this, index, index );
159 }
160
161
162 public void removeElement( Object anObject )
163 {
164 int index = objects.indexOf( anObject );
165 if( index != -1 )
166 {
167 removeElementAt( index );
168 }
169 }
170
171 /***
172 * Empties the list.
173 */
174 public void removeAllElements()
175 {
176 if( objects.size() > 0 )
177 {
178 int firstIndex = 0;
179 int lastIndex = objects.size() - 1;
180 objects.removeAllElements();
181 selectedObject = null;
182 fireIntervalRemoved( this, firstIndex, lastIndex );
183 }
184 else
185 {
186 selectedObject = null;
187 }
188 }
189
190 public void setElementAt( Object obj, int index )
191 {
192 objects.setElementAt( obj, index );
193 fireContentsChanged( this, index, index );
194 }
195 }