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
26 package javax.swing.plaf.synth;
27
28 import javax.swing.*;
29 import javax.swing.event.*;
30 import javax.swing.plaf.basic.*;
31 import java.awt.*;
32 import java.awt.event.*;
33 import java.beans.PropertyChangeListener;
34 import java.beans.PropertyChangeEvent;
35 import java.io.Serializable;
36
37
38 /**
39 * Synth's ComboPopup.
40 *
41 * @author Scott Violet
42 */
43 class SynthComboPopup extends BasicComboPopup {
44 public SynthComboPopup( JComboBox combo ) {
45 super(combo);
46 }
47
48 /**
49 * Configures the list which is used to hold the combo box items in the
50 * popup. This method is called when the UI class
51 * is created.
52 *
53 * @see #createList
54 */
55 protected void configureList() {
56 list.setFont( comboBox.getFont() );
57 list.setCellRenderer( comboBox.getRenderer() );
58 list.setFocusable( false );
59 list.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
60 int selectedIndex = comboBox.getSelectedIndex();
61 if ( selectedIndex == -1 ) {
62 list.clearSelection();
63 }
64 else {
65 list.setSelectedIndex( selectedIndex );
66 list.ensureIndexIsVisible( selectedIndex );
67 }
68 installListListeners();
69 }
70 }
|
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
26 package javax.swing.plaf.synth;
27
28 import javax.swing.*;
29 import javax.swing.plaf.ComboBoxUI;
30 import javax.swing.plaf.basic.BasicComboPopup;
31 import java.awt.*;
32
33
34 /**
35 * Synth's ComboPopup.
36 *
37 * @author Scott Violet
38 */
39 class SynthComboPopup extends BasicComboPopup {
40 public SynthComboPopup( JComboBox combo ) {
41 super(combo);
42 }
43
44 /**
45 * Configures the list which is used to hold the combo box items in the
46 * popup. This method is called when the UI class
47 * is created.
48 *
49 * @see #createList
50 */
51 @Override
52 protected void configureList() {
53 list.setFont( comboBox.getFont() );
54 list.setCellRenderer( comboBox.getRenderer() );
55 list.setFocusable( false );
56 list.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
57 int selectedIndex = comboBox.getSelectedIndex();
58 if ( selectedIndex == -1 ) {
59 list.clearSelection();
60 }
61 else {
62 list.setSelectedIndex( selectedIndex );
63 list.ensureIndexIsVisible( selectedIndex );
64 }
65 installListListeners();
66 }
67
68 /**
69 * @inheritDoc
70 *
71 * Overridden to take into account any popup insets specified in
72 * SynthComboBoxUI
73 */
74 @Override
75 protected Rectangle computePopupBounds(int px, int py, int pw, int ph) {
76 ComboBoxUI ui = comboBox.getUI();
77 if (ui instanceof SynthComboBoxUI) {
78 SynthComboBoxUI sui = (SynthComboBoxUI) ui;
79 if (sui.popupInsets != null) {
80 Insets i = sui.popupInsets;
81 return super.computePopupBounds(
82 px + i.left,
83 py + i.top,
84 pw - i.left - i.right,
85 ph - i.top - i.bottom);
86 }
87 }
88 return super.computePopupBounds(px, py, pw, ph);
89 }
90 }
|