001package jmri.jmrit.beantable.routetable; 002 003import javax.swing.table.AbstractTableModel; 004import java.beans.PropertyChangeListener; 005 006/** 007 * Base table model for selecting outputs. 008 * 009 * Split from {@link jmri.jmrit.beantable.RouteTableAction} 010 * 011 * @author Dave Duchamp Copyright (C) 2004 012 * @author Bob Jacobsen Copyright (C) 2007 013 * @author Simon Reader Copyright (C) 2008 014 * @author Pete Cressman Copyright (C) 2009 015 * @author Egbert Broerse Copyright (C) 2016 016 * @author Paul Bender Copyright (C) 2020 017 */ 018abstract class RouteOutputModel extends AbstractTableModel implements PropertyChangeListener { 019 020 @Override 021 public Class<?> getColumnClass(int c) { 022 if (c == INCLUDE_COLUMN) { 023 return Boolean.class; 024 } else { 025 return String.class; 026 } 027 } 028 029 @Override 030 public void propertyChange(java.beans.PropertyChangeEvent e) { 031 if (jmri.Manager.PROPERTY_LENGTH.equals(e.getPropertyName())) { 032 // a new NamedBean is available in the manager 033 fireTableDataChanged(); 034 } 035 } 036 037 protected abstract void dispose(); 038 039 @Override 040 public String getColumnName(int c) { 041 return RouteAddFrame.COLUMN_NAMES[c]; 042 } 043 044 @Override 045 public int getColumnCount() { 046 return 4; 047 } 048 049 @Override 050 public boolean isCellEditable(int r, int c) { 051 return ((c == INCLUDE_COLUMN) || (c == STATE_COLUMN)); 052 } 053 054 static final int SNAME_COLUMN = 0; 055 static final int UNAME_COLUMN = 1; 056 static final int INCLUDE_COLUMN = 2; 057 static final int STATE_COLUMN = 3; 058 059}