Index: javax/swing/plaf/basic/BasicComboBoxUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicComboBoxUI.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- javax/swing/plaf/basic/BasicComboBoxUI.java 17 Oct 2005 10:02:51 -0000 1.21 +++ javax/swing/plaf/basic/BasicComboBoxUI.java 17 Oct 2005 13:35:58 -0000 1.22 @@ -179,6 +179,7 @@ */ public BasicComboBoxUI() { + // Nothing to do here. } /** @@ -207,13 +208,13 @@ if (c instanceof JComboBox) { - comboBox = (JComboBox) c; - comboBox.setOpaque(true); - comboBox.setLayout(createLayoutManager()); - installDefaults(); - installComponents(); - installListeners(); - installKeyboardActions(); + comboBox = (JComboBox) c; + comboBox.setOpaque(true); + comboBox.setLayout(createLayoutManager()); + installDefaults(); + installComponents(); + installListeners(); + installKeyboardActions(); } } @@ -532,9 +533,13 @@ * Unconfigures the arrow button. * * @see #configureArrowButton() + * + * @specnote The specification says this method is implementation specific + * and should not be used or overridden. */ public void unconfigureArrowButton() { + // Nothing to do here yet. } /** @@ -878,6 +883,7 @@ */ public ComboBoxLayoutManager() { + // Nothing to do here. } /** @@ -964,6 +970,7 @@ */ public FocusHandler() { + // Nothing to do here. } /** @@ -987,6 +994,7 @@ public void focusLost(FocusEvent e) { hasFocus = false; + setPopupVisible(comboBox, false); comboBox.repaint(); } } @@ -1002,6 +1010,7 @@ */ public ItemHandler() { + // Nothing to do here. } /** @@ -1023,6 +1032,7 @@ { public KeyHandler() { + // Nothing to do here. } /** @@ -1045,6 +1055,7 @@ */ public ListDataHandler() { + // Nothing to do here. } /** @@ -1102,6 +1113,7 @@ */ public PropertyChangeHandler() { + // Nothing to do here. } /** Index: javax/swing/plaf/basic/BasicComboPopup.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicComboPopup.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- javax/swing/plaf/basic/BasicComboPopup.java 29 Sep 2005 20:19:20 -0000 1.8 +++ javax/swing/plaf/basic/BasicComboPopup.java 17 Oct 2005 13:35:59 -0000 1.9 @@ -718,7 +718,11 @@ protected void updateListBoxSelectionForEvent(MouseEvent anEvent, boolean shouldScroll) { - // FIXME: Need to implement + // TODO: We need to handle the shouldScroll parameter somehow. + int index = list.locationToIndex(anEvent.getPoint()); + // Check for valid index. + if (index >= 0) + list.setSelectedIndex(index); } /** @@ -736,6 +740,7 @@ */ protected InvocationMouseHandler() { + // Nothing to do here. } /** @@ -748,7 +753,7 @@ public void mousePressed(MouseEvent e) { if (comboBox.isEnabled()) - togglePopup(); + togglePopup(); } /** @@ -772,15 +777,15 @@ // then change selection and close popup if (! (releasedComponent instanceof JComboBox)) { - // List model contains the item over which mouse is released, - // since it is updated every time the mouse is moved over a different - // item in the list. Now that the mouse is released we need to - // update model of the combo box as well. - comboBox.setSelectedIndex(list.getSelectedIndex()); - - if (isAutoScrolling) - stopAutoScrolling(); - hide(); + // List model contains the item over which mouse is released, + // since it is updated every time the mouse is moved over a different + // item in the list. Now that the mouse is released we need to + // update model of the combo box as well. + comboBox.setSelectedIndex(list.getSelectedIndex()); + + if (isAutoScrolling) + stopAutoScrolling(); + hide(); } } } @@ -796,6 +801,7 @@ */ protected InvocationMouseMotionHandler() { + // Nothing to do here. } /** @@ -872,6 +878,7 @@ */ protected ItemHandler() { + // Nothing to do here. } /** @@ -881,6 +888,7 @@ */ public void itemStateChanged(ItemEvent e) { + // TODO: What should be done here? } } @@ -894,16 +902,17 @@ { protected ListMouseHandler() { + // Nothing to do here. } public void mousePressed(MouseEvent e) { + // TODO: What should be do here? } public void mouseReleased(MouseEvent anEvent) { - int index = list.locationToIndex(anEvent.getPoint()); - comboBox.setSelectedIndex(index); + updateListBoxSelectionForEvent(anEvent, false); hide(); } } @@ -917,15 +926,12 @@ { protected ListMouseMotionHandler() { + // Nothing to do here. } public void mouseMoved(MouseEvent anEvent) { - // Highlight list cells over which the mouse is located. - // This changes list model, but has no effect on combo box's data model - int index = list.locationToIndex(anEvent.getPoint()); - list.setSelectedIndex(index); - list.repaint(); + updateListBoxSelectionForEvent(anEvent, false); } } @@ -938,6 +944,7 @@ { protected PropertyChangeHandler() { + // Nothing to do here. } public void propertyChange(PropertyChangeEvent e) @@ -1013,18 +1020,22 @@ { public ListDataHandler() { + // Nothing to do here. } public void contentsChanged(ListDataEvent e) { + // Nothing to do here. } public void intervalAdded(ListDataEvent e) { + // Nothing to do here. } public void intervalRemoved(ListDataEvent e) { + // Nothing to do here. } } @@ -1036,10 +1047,12 @@ { protected ListSelectionHandler() { + // Nothing to do here. } public void valueChanged(ListSelectionEvent e) { + // Nothing to do here. } } @@ -1050,10 +1063,12 @@ { public InvocationKeyHandler() { + // Nothing to do here. } public void keyReleased(KeyEvent e) { + // Nothing to do here. } } }