package org.osm2world.viewer.control.actions;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;
import org.osm2world.core.map_data.creation.LatLonBounds;
import org.osm2world.core.osm.creation.OSMDataReader;
import org.osm2world.core.osm.creation.OverpassReader;
import org.osm2world.viewer.model.Data;
import org.osm2world.viewer.model.RenderOptions;
import org.osm2world.viewer.view.ViewerFrame;
public class DownloadOverpassAction extends AbstractLoadOSMAction {
ViewerFrame viewerFrame;
Data data;
RenderOptions renderOptions;
public DownloadOverpassAction(ViewerFrame viewerFrame, Data data, RenderOptions renderOptions) {
super("Download OSM data", viewerFrame, data, renderOptions);
putValue(SHORT_DESCRIPTION, "Download OpenStreetMap data from Overpass API");
putValue(MNEMONIC_KEY, KeyEvent.VK_D);
}
@Override
public void actionPerformed(ActionEvent arg0) {
LatLonBounds bounds = askLatLonBounds();
if (bounds != null) {
OSMDataReader reader = new OverpassReader(bounds.getMin(), bounds.getMax());
loadOSMData(reader, true);
}
}
private LatLonBounds askLatLonBounds() {
double minLat = Double.parseDouble(
JOptionPane.showInputDialog(viewerFrame, "minLat"));
double minLon = Double.parseDouble(
JOptionPane.showInputDialog(viewerFrame, "minLon"));
double maxLat = Double.parseDouble(
JOptionPane.showInputDialog(viewerFrame, "maxLat"));
double maxLon = Double.parseDouble(
JOptionPane.showInputDialog(viewerFrame, "maxLon"));
return new LatLonBounds(minLat, minLon, maxLat, maxLon);
/*
JDialog dialog = new JDialog(viewerFrame);
dialog.setTitle("Select data bounds");
dialog.setSize(600, 300);
JXMapKit map = new JXMapKit();
map.setDefaultProvider(DefaultProviders.OpenStreetMaps);
map.setCenterPosition(new GeoPosition(50.746, 7.154));
map.setZoom(3);
dialog.add(map, java.awt.BorderLayout.CENTER);
JPanel settingsPanel = new JPanel();
dialog.add(settingsPanel, java.awt.BorderLayout.EAST);
BoxLayout settingsPanelLayout = new BoxLayout(settingsPanel, BoxLayout.PAGE_AXIS);
settingsPanel.setLayout(settingsPanelLayout);
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton coordinatesRB = new JRadioButton("Coordinates");
JRadioButton customQueryRB = new JRadioButton("Custom Query");
buttonGroup.add(coordinatesRB);
buttonGroup.add(customQueryRB);
settingsPanel.add(coordinatesRB);
JTextField minLatField = new JTextField();
settingsPanel.add(new JLabel("minimum latitude"));
settingsPanel.add(minLatField);
JTextField minLonField = new JTextField();
settingsPanel.add(new JLabel("minimum longitude"));
settingsPanel.add(minLonField);
JTextField maxLatField = new JTextField();
settingsPanel.add(new JLabel("maximum latitude"));
settingsPanel.add(maxLatField);
JTextField maxLonField = new JTextField();
settingsPanel.add(new JLabel("maximum longitude"));
settingsPanel.add(maxLonField);
settingsPanel.add(customQueryRB);
JTextArea queryArea = new JTextArea();
settingsPanel.add(queryArea);
dialog.setVisible(true);
*/
}
}