Ticket #18463: 18463.patch

File 18463.patch, 8.2 KB (added by GerdP, 4 years ago)
  • src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java

     
    220220    }
    221221
    222222    protected void tryToPasteFromClipboard(OsmIdTextField tfId, OsmPrimitiveTypesComboBox cbType) {
    223         String buf = ClipboardUtils.getClipboardStringContent();
     223        tryToPasteFromBuf(ClipboardUtils.getClipboardStringContent(), tfId, cbType);
     224    }
     225
     226    protected void tryToPasteFromBuf(String buf, OsmIdTextField tfId, OsmPrimitiveTypesComboBox cbType) {
    224227        if (buf == null || buf.isEmpty()) return;
    225228        if (buf.length() > Config.getPref().getInt("downloadprimitive.max-autopaste-length", 2000)) return;
    226229        final List<SimplePrimitiveId> ids = SimplePrimitiveId.fuzzyParse(buf);
    227230        if (!ids.isEmpty()) {
    228             final String parsedText = ids.stream().map(x -> x.getType().getAPIName().charAt(0) + String.valueOf(x.getUniqueId()))
    229                     .collect(Collectors.joining(", "));
     231            final String parsedText = idsToString(ids);
    230232            tfId.tryToPasteFrom(parsedText);
    231233            final EnumSet<OsmPrimitiveType> types = ids.stream().map(SimplePrimitiveId::getType).collect(
    232234                    Collectors.toCollection(() -> EnumSet.noneOf(OsmPrimitiveType.class)));
     
    243245        }
    244246    }
    245247
     248    protected String idsToString(Collection<? extends PrimitiveId> primitiveIds) {
     249        return primitiveIds.stream().map(pid -> pid.getType().getAPIName().substring(0, 1) + pid.getUniqueId())
     250                .collect(Collectors.joining(", "));
     251    }
     252
    246253    @Override public void windowClosed(WindowEvent e) {
    247254        if (e != null && e.getComponent() == this && getValue() == getContinueButtonIndex()) {
    248255            Config.getPref().putInt("downloadprimitive.lasttype", cbType.getSelectedIndex());
  • src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java

     
    5757import org.openstreetmap.josm.gui.datatransfer.ChangesetTransferable;
    5858import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
    5959import org.openstreetmap.josm.gui.dialogs.changeset.query.ChangesetQueryDialog;
     60import org.openstreetmap.josm.gui.download.DownloadObjectDialog;
    6061import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
    6162import org.openstreetmap.josm.gui.help.HelpUtil;
    6263import org.openstreetmap.josm.gui.io.CloseChangesetTask;
     
    569570    private class DownloadSelectedChangesetObjectsAction extends AbstractAction implements ListSelectionListener {
    570571
    571572        DownloadSelectedChangesetObjectsAction() {
    572             putValue(NAME, tr("Download changed objects"));
     573            putValue(NAME, tr("Download changed objects ..."));
    573574            new ImageProvider("downloadprimitive").getResource().attachImageIcon(this);
    574575            putValue(SHORT_DESCRIPTION, tr("Download the current version of the changed objects in the selected changesets"));
    575576            updateEnabledState();
     
    579580        public void actionPerformed(ActionEvent e) {
    580581            if (!GraphicsEnvironment.isHeadless()) {
    581582                actDownloadSelectedContent.actionPerformed(e);
    582                 MainApplication.worker.submit(() -> {
     583                GuiHelper.executeByMainWorkerInEDT(() -> {
    583584                    final List<PrimitiveId> primitiveIds = model.getSelectedChangesets().stream()
    584585                            .map(Changeset::getContent)
    585586                            .filter(Objects::nonNull)
     
    588589                            .map(HistoryOsmPrimitive::getPrimitiveId)
    589590                            .distinct()
    590591                            .collect(Collectors.toList());
    591                     new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null).run();
     592                    if (primitiveIds.isEmpty())
     593                        return;
     594                    DownloadObjectDialog dialog = new DownloadObjectDialog(getInstance());
     595                    dialog.setupDialog(primitiveIds);
     596                    if (dialog.showDialog().getValue() != dialog.getContinueButtonIndex())
     597                        return;
     598                    new DownloadPrimitivesWithReferrersTask(false, dialog.getOsmIds(), dialog.isReferrersRequested(),
     599                            dialog.isFullRelationRequested(), null, null).run();
    592600                });
    593601            }
    594602        }
  • src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java

     
    4545import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
    4646import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    4747import org.openstreetmap.josm.gui.MainApplication;
     48import org.openstreetmap.josm.gui.download.DownloadObjectDialog;
    4849import org.openstreetmap.josm.gui.help.HelpUtil;
    4950import org.openstreetmap.josm.gui.history.HistoryBrowserDialogManager;
    5051import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
     
    250251    class DownloadObjectAction extends AbstractAction implements ListSelectionListener {
    251252
    252253        DownloadObjectAction() {
    253             putValue(NAME, tr("Download objects"));
     254            putValue(NAME, tr("Download objects ..."));
    254255            new ImageProvider("downloadprimitive").getResource().attachImageIcon(this, true);
    255256            putValue(SHORT_DESCRIPTION, tr("Download the current version of the selected objects"));
    256257            updateEnabledState();
     
    260261        public void actionPerformed(ActionEvent e) {
    261262            final List<PrimitiveId> primitiveIds = getSelectedPrimitives().stream().map(HistoryOsmPrimitive::getPrimitiveId)
    262263                    .collect(Collectors.toList());
    263             MainApplication.worker.submit(new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null));
     264            if (primitiveIds.isEmpty())
     265                return;
     266            DownloadObjectDialog dialog = new DownloadObjectDialog(ChangesetContentPanel.this);
     267            dialog.setupDialog(primitiveIds);
     268            if (dialog.showDialog().getValue() != dialog.getContinueButtonIndex())
     269                return;
     270            MainApplication.worker.submit(new DownloadPrimitivesWithReferrersTask(false, dialog.getOsmIds(),
     271                    dialog.isReferrersRequested(), dialog.isFullRelationRequested(), null, null));
    264272        }
    265273
    266274        protected final void updateEnabledState() {
  • src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java

     
    1111import javax.swing.JCheckBox;
    1212
    1313import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     14import org.openstreetmap.josm.data.osm.PrimitiveId;
    1415import org.openstreetmap.josm.gui.MainApplication;
    1516import org.openstreetmap.josm.gui.dialogs.OsmIdSelectionDialog;
    1617import org.openstreetmap.josm.io.NetworkManager;
     
    5758        buttons.get(0).setEnabled(!NetworkManager.isOffline(OnlineResource.OSM_API));
    5859    }
    5960
     61    /**
     62     * Fill dialog with ids from given collection.
     63     * @param primitiveIds collection of primitive ids used to fill the dialog
     64     * @since xxx
     65     */
     66    public void setupDialog(Collection<? extends PrimitiveId> primitiveIds) {
     67        setupDialog();
     68        tryToPasteFromBuf(idsToString(primitiveIds), tfId, cbType);
     69    }
     70
    6071    @Override
    6172    protected Collection<Component> getComponentsBeforeHelp() {
    6273        newLayer.setToolTipText(tr("Select if the data should be downloaded into a new layer"));