001package jmri.jmrit.operations.locations.gui; 002 003import java.beans.PropertyChangeEvent; 004 005import javax.swing.JTable; 006import javax.swing.SwingUtilities; 007 008import jmri.jmrit.operations.locations.Location; 009import jmri.jmrit.operations.locations.Track; 010import jmri.jmrit.operations.setup.Control; 011 012import org.slf4j.Logger; 013import org.slf4j.LoggerFactory; 014 015/** 016 * Table Model for edit of yards used by operations 017 * 018 * @author Daniel Boudreau Copyright (C) 2008 019 */ 020public class YardTableModel extends TrackTableModel { 021 022 public YardTableModel() { 023 super(); 024 } 025 026 public void initTable(JTable table, Location location) { 027 super.initTable(table, location, Track.YARD); 028 } 029 030 @Override 031 protected void editTrack(int row) { 032 log.debug("Edit yard"); 033 if (tef != null) { 034 tef.dispose(); 035 } 036 // use invokeLater so new window appears on top 037 SwingUtilities.invokeLater(() -> { 038 Track yard = _tracksList.get(row); 039 tef = new YardEditFrame(yard); 040 }); 041 } 042 043 @Override 044 public String getColumnName(int col) { 045 switch (col) { 046 case NAME_COLUMN: 047 return Bundle.getMessage("YardName"); 048 default: 049 return super.getColumnName(col); 050 } 051 } 052 053 // this table listens for changes to a location and its yards 054 @Override 055 public void propertyChange(PropertyChangeEvent e) { 056 if (Control.SHOW_PROPERTY) { 057 log.debug("Property change: ({}) old: ({}) new: ({})", e.getPropertyName(), e.getOldValue(), e 058 .getNewValue()); 059 } 060 super.propertyChange(e); 061 if (e.getSource().getClass().equals(Track.class)) { 062 Track track = ((Track) e.getSource()); 063 if (track.isYard()) { 064 int row = _tracksList.indexOf(track); 065 if (Control.SHOW_PROPERTY) { 066 log.debug("Update yard table row: {} track: ({})", row, track.getName()); 067 } 068 if (row >= 0) { 069 fireTableRowsUpdated(row, row); 070 } 071 } 072 } 073 } 074 075 private static final Logger log = LoggerFactory.getLogger(YardTableModel.class); 076}