/** * */ package org.limewire.ui.swing.util; import javax.swing.JComboBox; import javax.swing.SwingUtilities; import org.limewire.core.api.search.SearchCategory; import org.limewire.setting.BooleanSetting; import org.limewire.setting.evt.SettingEvent; import org.limewire.setting.evt.SettingListener; public class SearchSettingListener implements SettingListener { private final JComboBox combo; private final BooleanSetting booleanSetting; private final SearchCategory searchCategory; private boolean oldValue; /** * Listener tracking changes to the given boolean setting, depending on the setting * value the provided search category is added or removed from the given combo box. */ public SearchSettingListener(BooleanSetting booleanSetting, SearchCategory searchCategory, JComboBox combo) { this.booleanSetting = booleanSetting; this.searchCategory = searchCategory; this.combo = combo; oldValue = booleanSetting.getValue(); if (!booleanSetting.getValue()) { combo.removeItem(searchCategory); } } @Override public void settingChanged(SettingEvent evt) { SwingUtilities.invokeLater(new Runnable() { public void run() { boolean newValue = booleanSetting.getValue(); if(oldValue != newValue) { if(newValue) { combo.addItem(searchCategory); } else { if(combo.getSelectedItem() == searchCategory) { combo.setSelectedItem(SearchCategory.ALL); } combo.removeItem(searchCategory); } oldValue = newValue; } } }); } }