diff --git a/src/org/openstreetmap/josm/actions/UploadAction.java b/src/org/openstreetmap/josm/actions/UploadAction.java
index 9d085ae856..4c80c15f92 100644
|
a
|
b
|
import static org.openstreetmap.josm.tools.I18n.tr;
|
| 6 | 6 | |
| 7 | 7 | import java.awt.event.ActionEvent; |
| 8 | 8 | import java.awt.event.KeyEvent; |
| | 9 | import java.util.HashMap; |
| 9 | 10 | import java.util.LinkedList; |
| 10 | 11 | import java.util.List; |
| 11 | 12 | import java.util.Map; |
| … |
… |
public class UploadAction extends AbstractUploadAction {
|
| 242 | 243 | final UploadDialog dialog = UploadDialog.getUploadDialog(); |
| 243 | 244 | dialog.setUploadedPrimitives(apiData); |
| 244 | 245 | dialog.initLifeCycle(layer.getDataSet()); |
| | 246 | Map<String, String> changesetTags = dialog.getChangeset().getKeys(); |
| | 247 | Map<String, String> originalChangesetTags = new HashMap<>(changesetTags); |
| | 248 | for (UploadHook hook : UPLOAD_HOOKS) { |
| | 249 | hook.modifyChangesetTags(changesetTags); |
| | 250 | } |
| | 251 | dialog.getModel().putAll(changesetTags); |
| | 252 | if (!originalChangesetTags.equals(changesetTags)) { |
| | 253 | dialog.setChangesetTagsModifiedProgramatically(); |
| | 254 | } |
| 245 | 255 | dialog.setVisible(true); |
| 246 | 256 | dialog.rememberUserInput(); |
| 247 | 257 | if (dialog.isCanceled()) { |
| … |
… |
public class UploadAction extends AbstractUploadAction {
|
| 258 | 268 | |
| 259 | 269 | // Any hooks want to change the changeset tags? |
| 260 | 270 | Changeset cs = dialog.getChangeset(); |
| 261 | | Map<String, String> changesetTags = cs.getKeys(); |
| 262 | | for (UploadHook hook : UPLOAD_HOOKS) { |
| 263 | | hook.modifyChangesetTags(changesetTags); |
| 264 | | } |
| | 271 | changesetTags = cs.getKeys(); |
| 265 | 272 | for (UploadHook hook : LATE_UPLOAD_HOOKS) { |
| 266 | 273 | hook.modifyChangesetTags(changesetTags); |
| 267 | 274 | } |
diff --git a/src/org/openstreetmap/josm/gui/io/UploadDialog.java b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
index 94b852d758..9eb21ecea2 100644
|
a
|
b
|
|
| 2 | 2 | package org.openstreetmap.josm.gui.io; |
| 3 | 3 | |
| 4 | 4 | import static org.openstreetmap.josm.gui.help.HelpUtil.ht; |
| | 5 | import static org.openstreetmap.josm.tools.I18n.marktr; |
| 5 | 6 | import static org.openstreetmap.josm.tools.I18n.tr; |
| 6 | 7 | import static org.openstreetmap.josm.tools.I18n.trn; |
| 7 | 8 | |
| 8 | 9 | import java.awt.BorderLayout; |
| | 10 | import java.awt.Color; |
| 9 | 11 | import java.awt.Component; |
| 10 | 12 | import java.awt.Dimension; |
| 11 | 13 | import java.awt.FlowLayout; |
| … |
… |
import javax.swing.JOptionPane;
|
| 33 | 35 | import javax.swing.JPanel; |
| 34 | 36 | import javax.swing.JSplitPane; |
| 35 | 37 | import javax.swing.JTabbedPane; |
| | 38 | import javax.swing.event.TableModelListener; |
| 36 | 39 | |
| 37 | 40 | import org.openstreetmap.josm.data.APIDataSet; |
| 38 | 41 | import org.openstreetmap.josm.data.osm.Changeset; |
| 39 | 42 | import org.openstreetmap.josm.data.osm.DataSet; |
| 40 | 43 | import org.openstreetmap.josm.data.osm.OsmPrimitive; |
| | 44 | import org.openstreetmap.josm.data.preferences.NamedColorProperty; |
| 41 | 45 | import org.openstreetmap.josm.gui.HelpAwareOptionPane; |
| 42 | 46 | import org.openstreetmap.josm.gui.MainApplication; |
| 43 | 47 | import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction; |
| … |
… |
import org.openstreetmap.josm.tools.Utils;
|
| 64 | 68 | * @since 2025 |
| 65 | 69 | */ |
| 66 | 70 | public class UploadDialog extends AbstractUploadDialog implements PreferenceChangedListener, PropertyChangeListener { |
| | 71 | /** A warning color to indicate something is non-default in the changeset tags */ |
| | 72 | private static final Color WARNING_BACKGROUND = new NamedColorProperty( |
| | 73 | marktr("Changesets: Non-default advanced settings"), new Color(0xF89042)).get(); |
| 67 | 74 | /** the unique instance of the upload dialog */ |
| 68 | 75 | private static UploadDialog uploadDialog; |
| 69 | 76 | |
| … |
… |
public class UploadDialog extends AbstractUploadDialog implements PreferenceChan
|
| 89 | 96 | private final transient UploadDialogModel model = new UploadDialogModel(); |
| 90 | 97 | |
| 91 | 98 | private transient DataSet dataSet; |
| | 99 | private TableModelListener changesetTagListener; |
| 92 | 100 | |
| 93 | 101 | /** |
| 94 | 102 | * Constructs a new {@code UploadDialog}. |
| … |
… |
public class UploadDialog extends AbstractUploadDialog implements PreferenceChan
|
| 147 | 155 | pnlSettings.add(pnlUploadStrategySelectionPanel, GBC.eop().fill(GridBagConstraints.HORIZONTAL)); |
| 148 | 156 | pnlSettings.add(pnlTagEditorBorder, GBC.eol().fill(GridBagConstraints.BOTH)); |
| 149 | 157 | |
| | 158 | // if another tab is added, please don't forget to update setChangesetTagsModifiedProgramatically |
| 150 | 159 | tpConfigPanels.add(pnlSettings); |
| 151 | 160 | tpConfigPanels.setTitleAt(1, tr("Settings")); |
| 152 | 161 | tpConfigPanels.setToolTipTextAt(1, tr("Decide how to upload the data and which changeset to use")); |
| … |
… |
public class UploadDialog extends AbstractUploadDialog implements PreferenceChan
|
| 354 | 363 | super.setVisible(visible); |
| 355 | 364 | } |
| 356 | 365 | |
| | 366 | /** |
| | 367 | * This is called by {@link UploadAction} if {@link org.openstreetmap.josm.actions.upload.UploadHook}s change |
| | 368 | * the changeset tags. |
| | 369 | */ |
| | 370 | public void setChangesetTagsModifiedProgramatically() { |
| | 371 | final Color originalColor = this.tpConfigPanels.getBackgroundAt(1); |
| | 372 | this.tpConfigPanels.setBackgroundAt(1, WARNING_BACKGROUND); |
| | 373 | if (this.changesetTagListener != null) { |
| | 374 | this.model.removeTableModelListener(this.changesetTagListener); |
| | 375 | } |
| | 376 | this.changesetTagListener = event -> { |
| | 377 | tpConfigPanels.setBackgroundAt(1, originalColor); |
| | 378 | this.model.removeTableModelListener(changesetTagListener); |
| | 379 | changesetTagListener = null; |
| | 380 | }; |
| | 381 | |
| | 382 | this.model.addTableModelListener(this.changesetTagListener); |
| | 383 | } |
| | 384 | |
| 357 | 385 | static final class CompactTabbedPane extends JTabbedPane { |
| 358 | 386 | @Override |
| 359 | 387 | public Dimension getPreferredSize() { |
| … |
… |
public class UploadDialog extends AbstractUploadDialog implements PreferenceChan
|
| 606 | 634 | public void clean() { |
| 607 | 635 | setUploadedPrimitives(null); |
| 608 | 636 | dataSet = null; |
| | 637 | if (this.changesetTagListener != null) { |
| | 638 | this.changesetTagListener.tableChanged(null); |
| | 639 | this.model.removeTableModelListener(this.changesetTagListener); |
| | 640 | this.changesetTagListener = null; |
| | 641 | } |
| 609 | 642 | } |
| 610 | 643 | } |