// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.czechaddress.gui.utils; import java.util.ArrayList; import java.util.List; import javax.swing.ComboBoxModel; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; /** * Class for shorter and faster implementations of {@link ComboBoxModel}s. * * <p>This creates a list of {@link ListDataListener}s and implements * method for adding and removing them. Moreover it allows to notify all * listeners with the generic message {@code CONTENT_CHANGED}.</p> * * @author Radomír Černoch, radomir.cernoch@gmail.com */ public abstract class HalfCookedComboBoxModel<E> implements ComboBoxModel<E> { List<ListDataListener> listeners = new ArrayList<>(); @Override public void addListDataListener(ListDataListener l) { listeners.add(l); } @Override public void removeListDataListener(ListDataListener l) { listeners.remove(l); } public void notifyAllListeners() { ListDataEvent evt = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, getSize()-1); for (ListDataListener l : listeners) { l.contentsChanged(evt); } } }