History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/javax/swing/DefaultComboBoxModel.java (1 of 18352 files). Show all

Unified · Split

java/pkg/javax/swing/DefaultComboBoxModel.java+180−0
@@ -0,0 +1,180 @@
1+/*
2+ * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+package javax.swing;
26+
27+import java.util.*;
28+
29+import java.io.Serializable;
30+
31+/**
32+ * The default model for combo boxes.
33+ *
34+ * @param <E> the type of the elements of this model
35+ *
36+ * @author Arnaud Weber
37+ * @author Tom Santos
38+ */
39+
40+public class DefaultComboBoxModel<E> extends AbstractListModel<E> implements MutableComboBoxModel<E>, Serializable {
41+ Vector<E> objects;
42+ Object selectedObject;
43+
44+ /**
45+ * Constructs an empty DefaultComboBoxModel object.
46+ */
47+ public DefaultComboBoxModel() {
48+ objects = new Vector<E>();
49+ }
50+
51+ /**
52+ * Constructs a DefaultComboBoxModel object initialized with
53+ * an array of objects.
54+ *
55+ * @param items an array of Object objects
56+ */
57+ public DefaultComboBoxModel(final E items[]) {
58+ objects = new Vector<E>();
59+ objects.ensureCapacity( items.length );
60+
61+ int i,c;
62+ for ( i=0,c=items.length;i<c;i++ )
63+ objects.addElement(items[i]);
64+
65+ if ( getSize() > 0 ) {
66+ selectedObject = getElementAt( 0 );
67+ }
68+ }
69+
70+ /**
71+ * Constructs a DefaultComboBoxModel object initialized with
72+ * a vector.
73+ *
74+ * @param v a Vector object ...
75+ */
76+ public DefaultComboBoxModel(Vector<E> v) {
77+ objects = v;
78+
79+ if ( getSize() > 0 ) {
80+ selectedObject = getElementAt( 0 );
81+ }
82+ }
83+
84+ // implements javax.swing.ComboBoxModel
85+ /**
86+ * Set the value of the selected item. The selected item may be null.
87+ * <p>
88+ * @param anObject The combo box value or null for no selection.
89+ */
90+ public void setSelectedItem(Object anObject) {
91+ if ((selectedObject != null && !selectedObject.equals( anObject )) ||
92+ selectedObject == null && anObject != null) {
93+ selectedObject = anObject;
94+ fireContentsChanged(this, -1, -1);
95+ }
96+ }
97+
98+ // implements javax.swing.ComboBoxModel
99+ public Object getSelectedItem() {
100+ return selectedObject;
101+ }
102+
103+ // implements javax.swing.ListModel
104+ public int getSize() {
105+ return objects.size();
106+ }
107+
108+ // implements javax.swing.ListModel
109+ public E getElementAt(int index) {
110+ if ( index >= 0 && index < objects.size() )
111+ return objects.elementAt(index);
112+ else
113+ return null;
114+ }
115+
116+ /**
117+ * Returns the index-position of the specified object in the list.
118+ *
119+ * @param anObject
120+ * @return an int representing the index position, where 0 is
121+ * the first position
122+ */
123+ public int getIndexOf(Object anObject) {
124+ return objects.indexOf(anObject);
125+ }
126+
127+ // implements javax.swing.MutableComboBoxModel
128+ public void addElement(E anObject) {
129+ objects.addElement(anObject);
130+ fireIntervalAdded(this,objects.size()-1, objects.size()-1);
131+ if ( objects.size() == 1 && selectedObject == null && anObject != null ) {
132+ setSelectedItem( anObject );
133+ }
134+ }
135+
136+ // implements javax.swing.MutableComboBoxModel
137+ public void insertElementAt(E anObject,int index) {
138+ objects.insertElementAt(anObject,index);
139+ fireIntervalAdded(this, index, index);
140+ }
141+
142+ // implements javax.swing.MutableComboBoxModel
143+ public void removeElementAt(int index) {
144+ if ( getElementAt( index ) == selectedObject ) {
145+ if ( index == 0 ) {
146+ setSelectedItem( getSize() == 1 ? null : getElementAt( index + 1 ) );
147+ }
148+ else {
149+ setSelectedItem( getElementAt( index - 1 ) );
150+ }
151+ }
152+
153+ objects.removeElementAt(index);
154+
155+ fireIntervalRemoved(this, index, index);
156+ }
157+
158+ // implements javax.swing.MutableComboBoxModel
159+ public void removeElement(Object anObject) {
160+ int index = objects.indexOf(anObject);
161+ if ( index != -1 ) {
162+ removeElementAt(index);
163+ }
164+ }
165+
166+ /**
167+ * Empties the list.
168+ */
169+ public void removeAllElements() {
170+ if ( objects.size() > 0 ) {
171+ int firstIndex = 0;
172+ int lastIndex = objects.size() - 1;
173+ objects.removeAllElements();
174+ selectedObject = null;
175+ fireIntervalRemoved(this, firstIndex, lastIndex);
176+ } else {
177+ selectedObject = null;
178+ }
179+ }
180+}