Ignore:
Timestamp:
2018-06-14T09:52:42+02:00 (6 years ago)
Author:
michael2402
Message:

Fix #16343: Add methods to register query wizards.

Location:
trunk/src/org/openstreetmap/josm/gui/download
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java

    r13927 r13930  
    1111import java.awt.event.FocusEvent;
    1212import java.util.Collection;
     13import java.util.Objects;
    1314import java.util.concurrent.Future;
    1415import java.util.function.Consumer;
     
    3637import org.openstreetmap.josm.gui.MainApplication;
    3738import org.openstreetmap.josm.gui.download.DownloadSourceSizingPolicy.AdjustableDownloadSizePolicy;
     39import org.openstreetmap.josm.gui.download.overpass.OverpassWizardRegistration;
     40import org.openstreetmap.josm.gui.download.overpass.OverpassWizardRegistration.OverpassQueryWizard;
     41import org.openstreetmap.josm.gui.download.overpass.OverpassWizardRegistration.OverpassWizardCallbacks;
    3842import org.openstreetmap.josm.gui.util.GuiHelper;
    3943import org.openstreetmap.josm.gui.widgets.JosmTextArea;
     
    8286     * @since 12652
    8387     */
    84     public static class OverpassDownloadSourcePanel extends AbstractDownloadSourcePanel<OverpassDownloadData> {
     88    public static class OverpassDownloadSourcePanel extends AbstractDownloadSourcePanel<OverpassDownloadData>
     89            implements OverpassWizardCallbacks {
    8590
    8691        private static final String SIMPLE_NAME = "overpassdownloadpanel";
     
    104109            super(ds);
    105110            setLayout(new BorderLayout());
    106 
    107             String tooltip = tr("Build an Overpass query using the Overpass Turbo Query Wizard tool");
    108 
    109             JButton openQueryWizard = new JButton(tr("Query Wizard"));
    110             openQueryWizard.setToolTipText(tooltip);
    111             openQueryWizard.addActionListener(new AbstractAction() {
    112                 @Override
    113                 public void actionPerformed(ActionEvent e) {
    114                     new OverpassQueryWizardDialog(OverpassDownloadSourcePanel.this).showDialog();
    115                 }
    116             });
    117111
    118112            this.overpassQuery = new JosmTextArea(DOWNLOAD_QUERY.get(), 8, 80);
     
    165159            leftPanel.add(new JLabel(tr("Overpass query:")), GBC.eol().insets(5, 1, 5, 1).anchor(GBC.NORTHWEST));
    166160            leftPanel.add(new JLabel(), GBC.eol().fill(GBC.VERTICAL));
    167             leftPanel.add(openQueryWizard, GBC.eol().anchor(GBC.CENTER));
     161            OverpassWizardRegistration.getWizards()
     162                .stream()
     163                .map(this::generateWizardButton)
     164                .forEach(button -> leftPanel.add(button, GBC.eol().anchor(GBC.CENTER)));
    168165            leftPanel.add(new JLabel(), GBC.eol().fill(GBC.VERTICAL));
    169166
     
    173170
    174171            setMinimumSize(new Dimension(450, 240));
     172        }
     173
     174        private JButton generateWizardButton(OverpassQueryWizard wizard) {
     175            JButton openQueryWizard = new JButton(wizard.getWizardName());
     176            openQueryWizard.setToolTipText(wizard.getWizardTooltip().orElse(null));
     177            openQueryWizard.addActionListener(new AbstractAction() {
     178                @Override
     179                public void actionPerformed(ActionEvent e) {
     180                    wizard.startWizard(OverpassDownloadSourcePanel.this);
     181                }
     182            });
     183            return openQueryWizard;
    175184        }
    176185
     
    260269         */
    261270        public void setOverpassQuery(String query) {
     271            Objects.requireNonNull(query, "query");
    262272            this.overpassQuery.setText(query);
    263273        }
     
    360370                checkEnabled();
    361371            }
     372        }
     373
     374        @Override
     375        public void submitWizardResult(String resultingQuery) {
     376            setOverpassQuery(resultingQuery);
    362377        }
    363378    }
     
    383398        }
    384399    }
     400
    385401}
  • trunk/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java

    r13761 r13930  
    2323import org.openstreetmap.josm.data.preferences.ListProperty;
    2424import org.openstreetmap.josm.gui.ExtendedDialog;
     25import org.openstreetmap.josm.gui.download.overpass.OverpassWizardRegistration.OverpassWizardCallbacks;
    2526import org.openstreetmap.josm.gui.util.GuiHelper;
    2627import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
     
    6566            + "</style>\n";
    6667
    67     private final OverpassDownloadSource.OverpassDownloadSourcePanel dsPanel;
     68    private final OverpassWizardCallbacks dsPanel;
    6869
    6970    /**
    7071     * Create a new {@link OverpassQueryWizardDialog}
    71      * @param dsPanel The Overpass download source panel.
    72      */
    73     public OverpassQueryWizardDialog(OverpassDownloadSource.OverpassDownloadSourcePanel dsPanel) {
    74         super(dsPanel.getParent(), tr("Overpass Turbo Query Wizard"),
     72     * @param callbacks The Overpass download source panel.
     73     */
     74    public OverpassQueryWizardDialog(OverpassWizardCallbacks callbacks) {
     75        super(callbacks.getParent(), tr("Overpass Turbo Query Wizard"),
    7576                tr("Build query"), tr("Build query and execute"), tr("Cancel"));
    76         this.dsPanel = dsPanel;
     77        this.dsPanel = callbacks;
    7778
    7879        this.queryWizard = new HistoryComboBox();
     
    168169
    169170        Optional<String> q = this.tryParseSearchTerm(wizardSearchTerm);
    170         if (q.isPresent()) {
    171             String query = q.get();
    172             dsPanel.setOverpassQuery(query);
    173 
    174             return true;
    175         }
    176 
    177         return false;
     171        q.ifPresent(dsPanel::submitWizardResult);
     172        return q.isPresent();
    178173    }
    179174
Note: See TracChangeset for help on using the changeset viewer.