001package jmri.jmrit.throttle; 002 003import java.util.*; 004 005import javax.swing.table.AbstractTableModel; 006 007import jmri.*; 008 009 010/** 011 * A TableModel to display active Throttles in a summary table 012 * (see ThrottlesListPanel) 013 * 014 * @author Lionel Jeanson - 2011 015 * 016 */ 017 018public class ThrottlesTableModel extends AbstractTableModel implements java.beans.PropertyChangeListener, ConsistListListener{ 019 020 // The JMRI Swing throttles manager 021 private final ThrottleControllersUIContainersManager throttleFrameManager = InstanceManager.getDefault(ThrottleFrameManager.class); 022 023 @Override 024 public int getRowCount() { 025 int max = 0; 026 Iterator<ThrottleControllersUIContainer> twi = throttleFrameManager.iterator(); 027 while (twi.hasNext()) { 028 max = Math.max(max, twi.next().getNbThrottlesControllers()); 029 } 030 return max; 031 } 032 033 @Override 034 public int getColumnCount() { 035 return throttleFrameManager.getNbThrottleControllersContainers(); 036 } 037 038 @Override 039 public ThrottleControllerUI getValueAt(int row_tf, int col_tw) { 040 ThrottleControllersUIContainer tw = throttleFrameManager.getThrottleControllersContainerAt(col_tw); 041 if (tw == null) { 042 return null; 043 } 044 //log.debug("{} selected", tw.getThrottleFrameAt(row_tf).getTitle()); 045 return tw.getThrottleControllerAt(row_tf); 046 } 047 048 public void moveThrottleController(ThrottleControllerUI tf, int row_tf, int col_tw ) { 049 tf.getThrottleControllersContainer().removeThrottleController(tf); 050 tf.setThrottleControllersContainer(throttleFrameManager.getThrottleControllersContainerAt(col_tw)); 051 throttleFrameManager.getThrottleControllersContainerAt(col_tw).addThrottleControllerAt(tf, row_tf); 052 fireTableStructureChanged(); 053 } 054 055 public ThrottleControllersUIContainer getThrottleControllersContainerAt( int col_tw) { 056 return throttleFrameManager.getThrottleControllersContainerAt(col_tw); 057 } 058 059 @Override 060 public void propertyChange(java.beans.PropertyChangeEvent e) { 061 if ((e.getPropertyName().equals(Throttle.SPEEDSETTING)) || 062 (e.getPropertyName().equals(Throttle.SPEEDSTEPS)) || 063 (e.getPropertyName().equals(Throttle.ISFORWARD))) { 064 fireTableDataChanged(); 065 } 066 if (e.getPropertyName().equals("ThrottleFrameChanged")) { 067 fireTableDataChanged(); 068 } else if (e.getPropertyName().startsWith("ThrottleFrame")) { 069 fireTableStructureChanged(); 070 } 071 } 072 073 @Override 074 public void notifyConsistListChanged() { 075 fireTableDataChanged(); 076 } 077 078}