// 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.table.DefaultTableModel; import org.openstreetmap.josm.data.osm.Node; public class TrackStoplistTableModel extends DefaultTableModel { private Vector<Node> nodes = null; private Vector<String> times = null; private static Vector<String> columns = null; public TrackStoplistTableModel(TrackReference tr) { if (columns == null) { columns = new Vector<>(); columns.add(tr("Time")); columns.add(tr("Name")); columns.add(tr("Shelter")); } nodes = new Vector<>(); times = new Vector<>(); setColumnIdentifiers(columns); addTableModelListener(tr); } @Override public boolean isCellEditable(int row, int column) { return true; } @Override public void addRow(Object[] obj) { throw new UnsupportedOperationException(); } @Override public void insertRow(int insPos, Object[] obj) { throw new UnsupportedOperationException(); } public void addRow(String time) { insertRow(-1, time); } public void insertRow(int insPos, String time) { insertRow(insPos, null, time, "", new TransText(null)); } @Override public void removeRow(int pos) { super.removeRow(pos); nodes.removeElementAt(pos); times.removeElementAt(pos); } public Node nodeAt(int i) { return nodes.elementAt(i); } public void setNodeAt(int i, Node node) { nodes.set(i, node); } public final Vector<Node> getNodes() { return nodes; } public void setNodes(Vector<Node> nodes) { this.nodes = nodes; } public String timeAt(int i) { return times.elementAt(i); } public void setTimeAt(int i, String time) { times.set(i, time); } public final Vector<String> getTimes() { return times; } public void setTimes(Vector<String> times) { this.times = times; } public void insertRow(int insPos, Node node, String time, String name, TransText shelter) { Object[] buf = {time, name, shelter}; if (insPos == -1) { nodes.addElement(node); times.addElement(time); super.addRow(buf); } else { nodes.insertElementAt(node, insPos); times.insertElementAt(time, insPos); super.insertRow(insPos, buf); } } public void clear() { nodes.clear(); times.clear(); super.setRowCount(0); } public void setDataVector(Vector<Vector<Object>> dataVector) { setDataVector(dataVector, columns); } }