Wasn't firing action performed; simplified selection management by letting

the model do the work.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@645 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
mdb
2002-03-10 05:27:35 +00:00
parent da6439a7bb
commit 552f747694
@@ -1,5 +1,5 @@
//
// $Id: ComboButtonBox.java,v 1.1 2002/03/10 05:10:37 mdb Exp $
// $Id: ComboButtonBox.java,v 1.2 2002/03/10 05:27:35 mdb Exp $
package com.samskivert.swing;
@@ -231,8 +231,13 @@ public class ComboButtonBox extends JPanel
{
// keep track of the selected button
_selectedButton = (JLabel)e.getSource();
_selectedButton.setBorder(SELECTED_BORDER);
_selectedButton.repaint();
// if the selected button is already selected, ignore the click
if (_selectedButton.getBorder() == SELECTED_BORDER) {
_selectedButton = null;
} else {
_selectedButton.setBorder(SELECTED_BORDER);
_selectedButton.repaint();
}
}
// documentation inherited from interface
@@ -242,26 +247,10 @@ public class ComboButtonBox extends JPanel
// ahead and select it properly
if (_selectedButton != null) {
if (_selectedButton.contains(e.getX(), e.getY())) {
// figure out which button this is
int selidx = -1;
int ccount = getComponentCount();
for (int i = 0; i < ccount; i++) {
if (_selectedButton == getComponent(i)) {
selidx = i;
break;
}
}
// sanity check
if (selidx == -1) {
Log.warning("Got action from non-button component!? " +
"[event=" + e + "].");
} else {
// if the selection changed, update our display and
// the model
setSelectedIndex(selidx);
}
// tell the model that the selection has changed (and
// we'll respond and do our business
Object elem = _selectedButton.getClientProperty("element");
_model.setSelectedItem(elem);
} else {
_selectedButton.setBorder(DESELECTED_BORDER);
@@ -300,6 +289,7 @@ public class ComboButtonBox extends JPanel
} else {
ibut = new JLabel(elem.toString());
}
ibut.putClientProperty("element", elem);
ibut.addMouseListener(this);
ibut.setBorder((_selectedIndex == i) ?
SELECTED_BORDER : DESELECTED_BORDER);
@@ -355,6 +345,10 @@ public class ComboButtonBox extends JPanel
but.setBorder(SELECTED_BORDER);
}
// fire an action performed to let listeners know about our
// changed selection
fireActionPerformed();
repaint();
}