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 Vector objects;
23 Object selectedObject;
24
25 /***
26 * Constructs an empty DefaultComboBoxModel object.
27 */
28 public ExtendedComboBoxModel() {
29 objects = new Vector();
30 }
31
32 /***
33 * Constructs a DefaultComboBoxModel object initialized with
34 * an array of objects.
35 *
36 * @param items an array of Object objects
37 */
38 public ExtendedComboBoxModel(final Object items[]) {
39 objects = new Vector();
40 objects.ensureCapacity( items.length );
41
42 int i,c;
43 for ( i=0,c=items.length;i<c;i++ )
44 objects.addElement(items[i]);
45
46 if ( getSize() > 0 ) {
47 selectedObject = getElementAt( 0 );
48 }
49 }
50
51 /***
52 * Constructs a DefaultComboBoxModel object initialized with
53 * a vector.
54 *
55 * @param v a Vector object ...
56 */
57 public ExtendedComboBoxModel(Vector<?> v) {
58 objects = v;
59
60 if ( getSize() > 0 ) {
61 selectedObject = getElementAt( 0 );
62 }
63 }
64
65
66 /***
67 * Set the value of the selected item. The selected item may be null.
68 * <p>
69 * @param anObject The combo box value or null for no selection.
70 */
71 public void setSelectedItem(Object anObject) {
72 if ((selectedObject != null && !selectedObject.equals( anObject )) ||
73 selectedObject == null && anObject != null) {
74 selectedObject = anObject;
75 fireContentsChanged(this, -1, -1);
76 }
77 }
78
79
80 public Object getSelectedItem() {
81 return selectedObject;
82 }
83
84
85 public int getSize() {
86 return objects.size();
87 }
88
89
90 public Object getElementAt(int index) {
91 if ( index >= 0 && index < objects.size() )
92 return objects.elementAt(index);
93 else
94 return null;
95 }
96
97 /***
98 * Returns the index-position of the specified object in the list.
99 *
100 * @param anObject
101 * @return an int representing the index position, where 0 is
102 * the first position
103 */
104 public int getIndexOf(Object anObject) {
105 return objects.indexOf(anObject);
106 }
107
108
109 public void addElement(Object anObject) {
110 objects.addElement(anObject);
111 fireIntervalAdded(this,objects.size()-1, objects.size()-1);
112 if ( objects.size() == 1 && selectedObject == null && anObject != null ) {
113 setSelectedItem( anObject );
114 }
115 }
116
117
118 public void insertElementAt(Object anObject,int index) {
119 objects.insertElementAt(anObject,index);
120 fireIntervalAdded(this, index, index);
121 }
122
123
124 public void removeElementAt(int index) {
125 if ( getElementAt( index ) == selectedObject ) {
126 if ( index == 0 ) {
127 setSelectedItem( getSize() == 1 ? null : getElementAt( index + 1 ) );
128 }
129 else {
130 setSelectedItem( getElementAt( index - 1 ) );
131 }
132 }
133
134 objects.removeElementAt(index);
135
136 fireIntervalRemoved(this, index, index);
137 }
138
139
140 public void removeElement(Object anObject) {
141 int index = objects.indexOf(anObject);
142 if ( index != -1 ) {
143 removeElementAt(index);
144 }
145 }
146
147 /***
148 * Empties the list.
149 */
150 public void removeAllElements() {
151 if ( objects.size() > 0 ) {
152 int firstIndex = 0;
153 int lastIndex = objects.size() - 1;
154 objects.removeAllElements();
155 selectedObject = null;
156 fireIntervalRemoved(this, firstIndex, lastIndex);
157 } else {
158 selectedObject = null;
159 }
160 }
161
162 public void setElementAt( Object obj, int index )
163 {
164 objects.setElementAt( obj, index );
165 fireContentsChanged( this, index, index );
166 }
167 }