001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.gui.util;
003
004 import java.util.ArrayList;
005 import java.util.LinkedList;
006 import java.util.List;
007
008 import javax.swing.event.CellEditorListener;
009 import javax.swing.event.ChangeEvent;
010
011 public class TableCellEditorSupport {
012 private Object editor;
013 private LinkedList<CellEditorListener> listeners;
014
015 public TableCellEditorSupport(Object editor) {
016 this.editor = editor;
017 listeners = new LinkedList<CellEditorListener>();
018 }
019
020 protected List<CellEditorListener> getListeners() {
021 synchronized (this) {
022 return new ArrayList<CellEditorListener>(listeners);
023 }
024 }
025
026 public void addCellEditorListener(CellEditorListener l) {
027 synchronized (this) {
028 if (l != null && ! listeners.contains(l)) {
029 listeners.add(l);
030 }
031 }
032 }
033 public void removeCellEditorListener(CellEditorListener l) {
034 synchronized (this) {
035 if (l != null &&listeners.contains(l)) {
036 listeners.remove(l);
037 }
038 }
039 }
040
041 public void fireEditingCanceled() {
042 for (CellEditorListener listener: getListeners()) {
043 listener.editingCanceled(new ChangeEvent(editor));
044 }
045 }
046
047 public void fireEditingStopped() {
048 for (CellEditorListener listener: getListeners()) {
049 listener.editingStopped(new ChangeEvent(editor));
050 }
051 }
052 }