3 import javax.swing.DefaultListModel;
4 import javax.swing.JList;
5 import javax.swing.ListSelectionModel;
7 import tim.prune.I18nManager;
11 * Listbox class which also contains its own string model.
12 * Also has the ability to limit its size and show a single
13 * text instead of a huge list
15 public class CombinedListAndModel extends JList<String>
17 private DefaultListModel<String> _model = null;
18 private final int _key;
19 private int _maxNumEntries = 0;
20 private boolean _tooManyEntries = false;
21 private boolean _unlimited = false;
27 public CombinedListAndModel(int inKey)
29 setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
30 _model = new DefaultListModel<String>();
36 * @param inMaxNum maximum number of entries to allow
38 public void setMaxNumEntries(int inMaxNum)
40 _maxNumEntries = inMaxNum;
44 * @param inUnlimited true if list is temporarily unlimited
46 public void setUnlimited(boolean inUnlimited)
48 _unlimited = inUnlimited;
60 * @param inItem String to add to the list
62 public void addItem(String inItem)
66 _model.addElement(inItem);
67 if (_maxNumEntries > 0 && !_unlimited
68 && _model.getSize() > _maxNumEntries)
70 _tooManyEntries = true;
72 _model.addElement(I18nManager.getText("dialog.settimezone.list.toomany"));
78 * @return the selected String, or null
80 public String getSelectedItem()
82 final int selectedIndex = getSelectedIndex();
83 if (_tooManyEntries || selectedIndex < 0)
87 return _model.getElementAt(selectedIndex);
96 _tooManyEntries = false;
101 * @param inItem item to select
103 public void selectItem(String inItem)
105 if (!_tooManyEntries && inItem != null)
107 this.setSelectedValue(inItem, true);