// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.util; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; public class TableCellEditorSupport { private Object editor; private LinkedList<CellEditorListener> listeners; public TableCellEditorSupport(Object editor) { this.editor = editor; listeners = new LinkedList<CellEditorListener>(); } protected List<CellEditorListener> getListeners() { synchronized (this) { return new ArrayList<CellEditorListener>(listeners); } } public void addCellEditorListener(CellEditorListener l) { synchronized (this) { if (l != null && ! listeners.contains(l)) { listeners.add(l); } } } public void removeCellEditorListener(CellEditorListener l) { synchronized (this) { if (l != null &&listeners.contains(l)) { listeners.remove(l); } } } public void fireEditingCanceled() { for (CellEditorListener listener: getListeners()) { listener.editingCanceled(new ChangeEvent(editor)); } } public void fireEditingStopped() { for (CellEditorListener listener: getListeners()) { listener.editingStopped(new ChangeEvent(editor)); } } }