1 package net.sf.openrocket.gui.preset;
4 import javax.swing.plaf.basic.BasicComboBoxRenderer;
6 import java.util.HashSet;
10 * A combo box that allows for items to be deselected.
12 public class DeselectableComboBox extends JComboBox {
14 public DeselectableComboBox() {
16 super.setRenderer(new DeselectedtemsRenderer());
19 private Set disabled_items = new HashSet();
21 public void addItem(Object anObject, boolean disabled) {
22 super.addItem(anObject);
24 disabled_items.add(getItemCount() - 1);
29 public void removeAllItems() {
30 super.removeAllItems();
31 disabled_items = new HashSet();
35 public void removeItemAt(final int anIndex) {
36 super.removeItemAt(anIndex);
37 disabled_items.remove(anIndex);
41 public void removeItem(final Object anObject) {
42 for (int i = 0; i < getItemCount(); i++) {
43 if (getItemAt(i) == anObject) {
44 disabled_items.remove(i);
47 super.removeItem(anObject);
51 public void setSelectedIndex(int index) {
52 if (!disabled_items.contains(index)) {
53 super.setSelectedIndex(index);
57 private class DeselectedtemsRenderer extends BasicComboBoxRenderer {
60 public Component getListCellRendererComponent(JList list,
64 boolean cellHasFocus) {
67 setBackground(list.getSelectionBackground());
68 setForeground(list.getSelectionForeground());
71 setBackground(list.getBackground());
72 setForeground(list.getForeground());
74 if (disabled_items.contains(index)) {
75 setBackground(list.getBackground());
76 setForeground(UIManager.getColor("Label.disabledForeground"));
78 setFont(list.getFont());
79 setText((value == null) ? "" : value.toString());