1 package prefuse.data.util; 2 3 import prefuse.data.event.ProjectionListener; 4 import prefuse.util.collections.CopyOnWriteArrayList; 5 6 12 public abstract class AbstractColumnProjection implements ColumnProjection { 13 14 17 private CopyOnWriteArrayList m_listeners; 18 19 22 public void addProjectionListener(ProjectionListener lstnr) { 23 if ( m_listeners == null ) 24 m_listeners = new CopyOnWriteArrayList(); 25 if ( !m_listeners.contains(lstnr) ) 26 m_listeners.add(lstnr); 27 } 28 29 32 public void removeProjectionListener(ProjectionListener lstnr) { 33 if ( m_listeners != null ) 34 m_listeners.remove(lstnr); 35 if ( m_listeners.size() == 0 ) 36 m_listeners = null; 37 } 38 39 public void fireUpdate() { 40 if ( m_listeners == null ) 41 return; 42 Object [] lstnrs = m_listeners.getArray(); 43 for ( int i=0; i<lstnrs.length; ++i ) { 44 ((ProjectionListener)lstnrs[i]).projectionChanged(this); 45 } 46 } 47 48 } | Popular Tags |