// License: GPL. For details, see LICENSE file. package public_transport; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.KeyStroke; public class GTFSImporterDialog extends AbstractImporterDialog<GTFSImporterAction> { private JTable gtfsStopTable = null; public GTFSImporterDialog(GTFSImporterAction controller) { super(controller, tr("Create Stops from GTFS"), "gtfsImporter"); } @Override protected void initDialog(GTFSImporterAction controller) { JPanel tabSettings = new JPanel(); tabbedPane.addTab(tr("Settings"), tabSettings); JPanel tabWaypoints = new JPanel(); tabbedPane.addTab(tr("GTFS-Stops"), tabWaypoints); tabbedPane.setEnabledAt(0, false); tabbedPane.setEnabledAt(1, true); // Settings Tab JPanel contentPane = tabSettings; GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints layoutCons = new GridBagConstraints(); contentPane.setLayout(gridbag); JLabel label = new JLabel(tr("Type of stops to add")); layoutCons.gridx = 0; layoutCons.gridy = 0; layoutCons.gridwidth = 2; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); layoutCons.gridx = 0; layoutCons.gridy = 1; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(cbStoptype, layoutCons); contentPane.add(cbStoptype); label = new JLabel(tr("Time on your GPS device")); layoutCons.gridx = 0; layoutCons.gridy = 2; layoutCons.gridwidth = 2; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); layoutCons.gridx = 0; layoutCons.gridy = 3; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(tfGPSTimeStart, layoutCons); contentPane.add(tfGPSTimeStart); /* I18n: Don't change the time format, you only may translate the letters */ label = new JLabel(tr("HH:MM:SS.sss")); layoutCons.gridx = 1; layoutCons.gridy = 3; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); label = new JLabel(tr("Time on your stopwatch")); layoutCons.gridx = 0; layoutCons.gridy = 4; layoutCons.gridwidth = 2; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); layoutCons.gridx = 0; layoutCons.gridy = 5; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(tfStopwatchStart, layoutCons); contentPane.add(tfStopwatchStart); /* I18n: Don't change the time format, you only may translate the letters */ label = new JLabel(tr("HH:MM:SS.sss")); layoutCons.gridx = 1; layoutCons.gridy = 5; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); label = new JLabel(tr("Time window")); layoutCons.gridx = 0; layoutCons.gridy = 6; layoutCons.gridwidth = 2; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); layoutCons.gridx = 0; layoutCons.gridy = 7; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(tfTimeWindow, layoutCons); contentPane.add(tfTimeWindow); label = new JLabel(tr("seconds")); layoutCons.gridx = 1; layoutCons.gridy = 7; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); label = new JLabel(tr("Move Threshold")); layoutCons.gridx = 0; layoutCons.gridy = 8; layoutCons.gridwidth = 2; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); layoutCons.gridx = 0; layoutCons.gridy = 9; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(tfThreshold, layoutCons); contentPane.add(tfThreshold); label = new JLabel(tr("meters")); layoutCons.gridx = 1; layoutCons.gridy = 9; layoutCons.gridwidth = 1; layoutCons.weightx = 0.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(label, layoutCons); contentPane.add(label); JButton bSuggestStops = new JButton(tr("Suggest Stops")); bSuggestStops.setActionCommand("gtfsImporter.settingsSuggestStops"); bSuggestStops.addActionListener(controller); layoutCons.gridx = 0; layoutCons.gridy = 10; layoutCons.gridwidth = 3; layoutCons.weightx = 1.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(bSuggestStops, layoutCons); contentPane.add(bSuggestStops); // Waypoints Tab contentPane = tabWaypoints; gridbag = new GridBagLayout(); layoutCons = new GridBagConstraints(); contentPane.setLayout(gridbag); contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke("alt N"), "gtfsImporter.gtfsStopsFocusAdd"); contentPane.getActionMap().put("gtfsImporter.gtfsStopsFocusAdd", controller.getFocusAddAction()); /* contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put (KeyStroke.getKeyStroke("alt S"), "gtfsImporter.focusShelterYes"); contentPane.getActionMap().put ("gtfsImporter.focusShelterYes", controller.getFocusWaypointShelterAction("yes")); contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put (KeyStroke.getKeyStroke("alt T"), "gtfsImporter.focusShelterNo"); contentPane.getActionMap().put ("gtfsImporter.focusShelterNo", controller.getFocusWaypointShelterAction("no")); contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put (KeyStroke.getKeyStroke("alt U"), "gtfsImporter.focusShelterImplicit"); contentPane.getActionMap().put ("gtfsImporter.focusShelterImplicit", controller.getFocusWaypointShelterAction("implicit")); contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put (KeyStroke.getKeyStroke("alt D"), "gtfsImporter.gtfsStopsDelete"); contentPane.getActionMap().put ("gtfsImporter.gtfsStopsDelete", controller.getFocusWaypointDeleteAction());*/ gtfsStopTable = new JTable(); JScrollPane tableSP = new JScrollPane(gtfsStopTable); layoutCons.gridx = 0; layoutCons.gridy = 0; layoutCons.gridwidth = 4; layoutCons.weightx = 1.0; layoutCons.weighty = 1.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(tableSP, layoutCons); contentPane.add(tableSP); JButton bFind = new JButton(tr("Find")); bFind.setActionCommand("gtfsImporter.gtfsStopsFind"); bFind.addActionListener(controller); layoutCons.gridx = 0; layoutCons.gridy = 1; layoutCons.gridwidth = 1; layoutCons.weightx = 1.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(bFind, layoutCons); contentPane.add(bFind); JButton bShow = new JButton(tr("Show")); bShow.setActionCommand("gtfsImporter.gtfsStopsShow"); bShow.addActionListener(controller); layoutCons.gridx = 0; layoutCons.gridy = 2; layoutCons.gridwidth = 1; layoutCons.weightx = 1.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(bShow, layoutCons); contentPane.add(bShow); JButton bMark = new JButton(tr("Mark")); bMark.setActionCommand("gtfsImporter.gtfsStopsMark"); bMark.addActionListener(controller); layoutCons.gridx = 1; layoutCons.gridy = 1; layoutCons.gridheight = 2; layoutCons.gridwidth = 1; layoutCons.weightx = 1.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(bMark, layoutCons); contentPane.add(bMark); JButton bCatch = new JButton(tr("Catch")); bCatch.setActionCommand("gtfsImporter.gtfsStopsCatch"); bCatch.addActionListener(controller); layoutCons.gridx = 2; layoutCons.gridy = 1; layoutCons.gridheight = 1; layoutCons.gridwidth = 1; layoutCons.weightx = 1.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(bCatch, layoutCons); contentPane.add(bCatch); JButton bJoin = new JButton(tr("Join")); bJoin.setActionCommand("gtfsImporter.gtfsStopsJoin"); bJoin.addActionListener(controller); layoutCons.gridx = 2; layoutCons.gridy = 2; layoutCons.gridheight = 1; layoutCons.gridwidth = 1; layoutCons.weightx = 1.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(bJoin, layoutCons); contentPane.add(bJoin); JButton bAdd = new JButton(tr("Enable")); bAdd.setActionCommand("gtfsImporter.gtfsStopsAdd"); bAdd.addActionListener(controller); layoutCons.gridx = 3; layoutCons.gridy = 1; layoutCons.gridheight = 1; layoutCons.gridwidth = 1; layoutCons.weightx = 1.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(bAdd, layoutCons); contentPane.add(bAdd); JButton bDelete = new JButton(tr("Disable")); bDelete.setActionCommand("gtfsImporter.gtfsStopsDelete"); bDelete.addActionListener(controller); layoutCons.gridx = 3; layoutCons.gridy = 2; layoutCons.gridwidth = 1; layoutCons.weightx = 1.0; layoutCons.weighty = 0.0; layoutCons.fill = GridBagConstraints.BOTH; gridbag.setConstraints(bDelete, layoutCons); contentPane.add(bDelete); } public JTable getGTFSStopTable() { return gtfsStopTable; } public void setGTFSStopTableModel(GTFSStopTableModel model) { gtfsStopTable.setModel(model); int width = gtfsStopTable.getPreferredSize().width; gtfsStopTable.getColumnModel().getColumn(0).setPreferredWidth((int) (width * 0.3)); gtfsStopTable.getColumnModel().getColumn(1).setPreferredWidth((int) (width * 0.6)); gtfsStopTable.getColumnModel().getColumn(2).setPreferredWidth((int) (width * 0.1)); } /* private class TracksLSL implements ListSelectionListener { GTFSImporterAction root = null; public TracksLSL(GTFSImporterAction sia) { root = sia; } public void valueChanged(ListSelectionEvent e) { int selectedPos = tracksList.getAnchorSelectionIndex(); if (tracksList.isSelectedIndex(selectedPos)) root.tracksSelectionChanged(selectedPos); else root.tracksSelectionChanged(-1); } };*/ }