Ignore:
Timestamp:
2021-02-21T01:02:50+01:00 (3 years ago)
Author:
Don-vip
Message:

see #20493 - add initial support to comment changesets directly from JOSM

Doesn't seem to work yet, server always answer HTTP 401 even if OAuth authorization headers are set?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java

    r17371 r17500  
    1515import javax.swing.AbstractAction;
    1616import javax.swing.BorderFactory;
     17import javax.swing.JOptionPane;
    1718import javax.swing.JPanel;
    1819import javax.swing.JScrollPane;
    1920import javax.swing.JTable;
    2021import javax.swing.JToolBar;
     22import javax.swing.SwingConstants;
    2123
    2224import org.openstreetmap.josm.actions.downloadtasks.ChangesetHeaderDownloadTask;
     
    2426import org.openstreetmap.josm.data.osm.Changeset;
    2527import org.openstreetmap.josm.gui.MainApplication;
     28import org.openstreetmap.josm.gui.NoteInputDialog;
    2629import org.openstreetmap.josm.io.NetworkManager;
    2730import org.openstreetmap.josm.io.OnlineResource;
     31import org.openstreetmap.josm.io.OsmApi;
     32import org.openstreetmap.josm.io.OsmTransferException;
     33import org.openstreetmap.josm.tools.ExceptionUtil;
    2834import org.openstreetmap.josm.tools.ImageProvider;
     35import org.openstreetmap.josm.tools.Logging;
    2936
    3037/**
     
    3946
    4047    private final UpdateChangesetDiscussionAction actUpdateChangesets = new UpdateChangesetDiscussionAction();
     48    private final AddChangesetCommentAction actAddChangesetComment = new AddChangesetCommentAction();
    4149
    4250    private final ChangesetDiscussionTableModel model = new ChangesetDiscussionTableModel();
     
    4957        JPanel pnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
    5058
    51         JToolBar tb = new JToolBar(JToolBar.VERTICAL);
     59        JToolBar tb = new JToolBar(SwingConstants.VERTICAL);
    5260        tb.setFloatable(false);
    5361
    5462        // -- changeset discussion update
    5563        tb.add(actUpdateChangesets);
    56         actUpdateChangesets.initProperties(current);
     64        // -- add a comment to changeset discussion
     65        tb.add(actAddChangesetComment);
     66
     67        initProperties();
    5768
    5869        pnl.add(tb);
    5970        return pnl;
     71    }
     72
     73    void initProperties() {
     74        actUpdateChangesets.initProperties(current);
     75        actAddChangesetComment.initProperties(current);
    6076    }
    6177
     
    8298        }
    8399
    84         public void initProperties(Changeset cs) {
     100        void initProperties(Changeset cs) {
    85101            setEnabled(cs != null && !NetworkManager.isOffline(OnlineResource.OSM_API));
     102        }
     103    }
     104
     105    /**
     106     * Adds a discussion comment to the current changeset
     107     */
     108    class AddChangesetCommentAction extends AbstractAction {
     109        AddChangesetCommentAction() {
     110            putValue(NAME, tr("Comment"));
     111            new ImageProvider("dialogs/notes", "note_comment").getResource().attachImageIcon(this);
     112            putValue(SHORT_DESCRIPTION, tr("Add comment"));
     113        }
     114
     115        @Override
     116        public void actionPerformed(ActionEvent evt) {
     117            if (current == null)
     118                return;
     119            NoteInputDialog dialog = new NoteInputDialog(MainApplication.getMainFrame(), tr("Comment on changeset"), tr("Add comment"));
     120            dialog.showNoteDialog(tr("Add comment to changeset:"), ImageProvider.get("dialogs/notes", "note_comment"));
     121            if (dialog.getValue() != 1) {
     122                return;
     123            }
     124            try {
     125                OsmApi.getOsmApi().addCommentToChangeset(current, dialog.getInputText(), null);
     126            } catch (OsmTransferException e) {
     127                Logging.error(e);
     128                JOptionPane.showMessageDialog(
     129                        MainApplication.getMainFrame(),
     130                        ExceptionUtil.explainOsmTransferException(e),
     131                        tr("Error"),
     132                        JOptionPane.ERROR_MESSAGE);
     133            }
     134        }
     135
     136        void initProperties(Changeset cs) {
     137            setEnabled(cs != null && !cs.isOpen() && !NetworkManager.isOffline(OnlineResource.OSM_API));
    86138        }
    87139    }
     
    101153            updateView(cs);
    102154        }
    103         actUpdateChangesets.initProperties(current);
     155        initProperties();
    104156        if (cs != null && cs.getDiscussion().size() < cs.getCommentsCount()) {
    105157            actUpdateChangesets.actionPerformed(null);
Note: See TracChangeset for help on using the changeset viewer.