1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package org.coach.idltree; 26 27 import java.awt.*; 28 import javax.swing.*; 29 import javax.swing.event.*; 30 import javax.swing.tree.*; 31 import java.awt.event.*; 32 import java.util.*; 33 34 public abstract class AbstractCellEditor implements TreeCellEditor { 35 protected EventListenerList listenerList = new EventListenerList(); 36 protected Object value; 37 protected ChangeEvent changeEvent = null; 38 protected int clickCountToStart = 2; 39 40 public void addCellEditorListener(CellEditorListener l) { 41 listenerList.add(CellEditorListener.class, l); 42 } 43 44 public void removeCellEditorListener(CellEditorListener l) { 45 listenerList.remove(CellEditorListener.class, l); 46 } 47 48 protected void fireEditingStopped() { 49 Object [] listeners = listenerList.getListenerList(); 50 for (int i = listeners.length - 2; i >= 0; i -= 2) { 51 if (listeners[i] == CellEditorListener.class) { 52 if (changeEvent == null) { 53 changeEvent = new ChangeEvent(this); 54 } 55 ((CellEditorListener)listeners[i+1]).editingStopped(changeEvent); 56 } 57 } 58 } 59 60 protected void fireEditingCanceled() { 61 Object [] listeners = listenerList.getListenerList(); 62 for (int i = listeners.length - 2; i >= 0; i -= 2) { 63 if (listeners[i] == CellEditorListener.class) { 64 if (changeEvent == null) { 65 changeEvent = new ChangeEvent(this); 66 } 67 ((CellEditorListener)listeners[i+1]).editingCanceled(changeEvent); 68 } 69 } 70 } 71 72 public Object getCellEditorValue() { 73 return value; 74 } 75 76 public void setClickCountToStart(int count) { 77 clickCountToStart = count; 78 } 79 80 public int getClickCountToStart() { 81 return clickCountToStart; 82 } 83 84 public boolean isCellEditable(EventObject e) { 85 if (e instanceof MouseEvent) { 86 if (((MouseEvent)e).getClickCount() < clickCountToStart) { 87 return false; 88 } 89 } 90 return true; 91 } 92 93 public boolean shouldSelectCell(EventObject e) { 94 return true; 95 } 96 97 public boolean stopCellEditing() { 98 fireEditingStopped(); 99 return true; 100 } 101 102 public void cancelCellEditing() { 103 fireEditingCanceled(); 104 } 105 } 106 | Popular Tags |