private int maxPage;
private JPanel tagBars;
+ private List<JComboBox> combos;
private JComboBox comboSupportTypes;
private JTabbedPane searchTabs;
}
private JPanel createByTagSearchPanel() {
+ combos = new ArrayList<JComboBox>();
+
JPanel byTag = new JPanel();
tagBars = new JPanel();
tagBars.setLayout(new BoxLayout(tagBars, BoxLayout.Y_AXIS));
}
}
+ // update and reset the tagsbar
// can be NULL, for base tags
private void updateTags(final SearchableTag tag) {
final List<SearchableTag> parents = new ArrayList<SearchableTag>();
// TODO: Slow UI
// TODO: select the right one
try {
+ SearchableTag selectedChild = parents.isEmpty() ? null
+ : parents.get(parents.size() - 1);
addTagBar(BasicSearchable.getSearchable(supportType)
- .getTags(), tag);
+ .getTags(), selectedChild);
} catch (IOException e) {
error(e);
}
for (int i = parents.size() - 1; i >= 0; i--) {
+ SearchableTag selectedChild = null;
+ if (i > 0) {
+ selectedChild = parents.get(i - 1);
+ }
SearchableTag parent = parents.get(i);
- addTagBar(parent.getChildren(), parent);
+ addTagBar(parent.getChildren(), selectedChild);
}
tagBars.validate();
});
}
+ // not 1.6 compatible
+ @SuppressWarnings({ "unchecked", "rawtypes" })
private void addTagBar(List<SearchableTag> tags,
final SearchableTag selected) {
tags.add(0, null);
+ final int comboIndex = combos.size();
+
final JComboBox combo = new JComboBox(
tags.toArray(new SearchableTag[] {}));
combo.setSelectedItem(selected);
combo.setRenderer(new ListCellRenderer() {
@Override
- public Component getListCellRendererComponent(
- JList list, Object value,
- int index, boolean isSelected, boolean cellHasFocus) {
+ public Component getListCellRendererComponent(JList list,
+ Object value, int index, boolean isSelected,
+ boolean cellHasFocus) {
Object displayValue = value;
if (value instanceof SearchableTag) {
- displayValue = ((SearchableTag)value).getName();
+ displayValue = ((SearchableTag) value).getName();
} else {
displayValue = "Select a tag...";
cellHasFocus = false;
final SearchableTag tag = (SearchableTag) combo
.getSelectedItem();
if (tag != null) {
+ while (comboIndex + 1 < combos.size()) {
+ JComboBox combo = combos.remove(comboIndex + 1);
+ tagBars.remove(combo);
+ }
+
addTagBar(tag, new Runnable() {
@Override
public void run() {