// License: GPL. For details, see LICENSE file. package public_transport; import static org.openstreetmap.josm.tools.I18n.tr; import java.util.Vector; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.data.coor.LatLon; import org.openstreetmap.josm.data.gpx.WayPoint; import org.openstreetmap.josm.data.osm.Node; public class WaypointTableModel extends DefaultTableModel implements TableModelListener { private StopImporterAction controller = null; public boolean inEvent = false; public Vector<Node> nodes = new Vector<>(); public Vector<LatLon> coors = new Vector<>(); public WaypointTableModel(StopImporterAction controller) { this.controller = controller; addColumn(tr("Time")); addColumn(tr("Stopname")); addColumn(tr("Shelter")); addTableModelListener(this); } @Override public boolean isCellEditable(int row, int column) { if (column >= 1) return true; return false; } @Override public void addRow(Object[] obj) { throw new UnsupportedOperationException(); } @Override public void insertRow(int insPos, Object[] obj) { throw new UnsupportedOperationException(); } public void addRow(WayPoint wp) { insertRow(-1, wp); } public void insertRow(int insPos, WayPoint wp) { String time = wp.getString("time"); if (time == null) time = ""; String name = wp.getString("name"); if (name == null) name = ""; Node node = controller.createNode(wp.getCoor(), name); Object[] buf = {time, name, new TransText(null)}; if (insPos == -1) { nodes.addElement(node); coors.addElement(wp.getCoor()); super.addRow(buf); } else { nodes.insertElementAt(node, insPos); coors.insertElementAt(wp.getCoor(), insPos); super.insertRow(insPos, buf); } } public void clear() { nodes.clear(); super.setRowCount(0); } @Override public void tableChanged(TableModelEvent e) { if (e.getType() == TableModelEvent.UPDATE) { if (inEvent) return; Main.main.undoRedo.add(new WaypointsNameCommand(this, e.getFirstRow(), (String) getValueAt(e.getFirstRow(), 1), (TransText) getValueAt(e.getFirstRow(), 2))); } } }