Ignore:
Timestamp:
2014-02-08T01:19:08+01:00 (6 years ago)
Author:
Don-vip
Message:

fix #9659 - show changeset source in history dialog

Location:
trunk/src/org/openstreetmap/josm/gui/history
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/history/PointInTimeType.java

    r5835 r6827  
    1414    CURRENT_POINT_IN_TIME;
    1515
     16    /**
     17     * Returns the opposite point in time.
     18     * @return the opposite point in time
     19     */
    1620    public PointInTimeType opposite() {
    1721        if (this.equals(REFERENCE_POINT_IN_TIME))
  • trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java

    r6643 r6827  
    2020import org.openstreetmap.josm.Main;
    2121import org.openstreetmap.josm.actions.AbstractInfoAction;
     22import org.openstreetmap.josm.data.osm.Changeset;
    2223import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2324import org.openstreetmap.josm.data.osm.User;
     
    4142    private UrlLabel lblChangeset;
    4243    private JTextArea lblChangesetComment;
     44    private JTextArea lblChangesetSource;
     45
     46    protected static JTextArea buildTextArea(String tooltip) {
     47        JTextArea lbl = new JTextArea();
     48        lbl.setLineWrap(true);
     49        lbl.setWrapStyleWord(true);
     50        lbl.setEditable(false);
     51        lbl.setOpaque(false);
     52        lbl.setToolTipText(tooltip);
     53        return lbl;
     54    }
    4355
    4456    protected void build() {
     
    5769        pnlUserAndChangeset.add(lblChangeset);
    5870
    59         lblChangesetComment = new JTextArea();
    60         lblChangesetComment.setLineWrap(true);
    61         lblChangesetComment.setWrapStyleWord(true);
    62         lblChangesetComment.setEditable(false);
    63         lblChangesetComment.setOpaque(false);
     71        lblChangesetComment = buildTextArea(tr("Changeset comment"));
     72        lblChangesetSource = buildTextArea(tr("Changeset source"));
    6473
    6574        setLayout(new GridBagLayout());
     
    7584        gc.gridy = 2;
    7685        add(lblChangesetComment, gc);
     86        gc.gridy = 3;
     87        add(lblChangesetSource, gc);
    7788    }
    7889
     
    134145    }
    135146
     147    protected static String getUserUrl(String username) throws UnsupportedEncodingException {
     148        return AbstractInfoAction.getBaseUserUrl() + "/" +  URLEncoder.encode(username, "UTF-8").replaceAll("\\+", "%20");
     149    }
     150
    136151    @Override
    137152    public void update(Observable o, Object arg) {
    138153        lblInfo.setText(getInfoText());
    139154
    140         if (!model.isLatest(getPrimitive())) {
    141             String url = AbstractInfoAction.getBaseBrowseUrl() + "/changeset/" + getPrimitive().getChangesetId();
     155        HistoryOsmPrimitive primitive = getPrimitive();
     156        Changeset cs = primitive.getChangeset();
     157
     158        if (!model.isLatest(primitive)) {
     159            User user = primitive.getUser();
     160            String url = AbstractInfoAction.getBaseBrowseUrl() + "/changeset/" + primitive.getChangesetId();
    142161            lblChangeset.setUrl(url);
    143             lblChangeset.setDescription(Long.toString(getPrimitive().getChangesetId()));
    144             final String comment = getPrimitive().getChangeset() != null ? getPrimitive().getChangeset().get("comment") : null;
    145             lblChangesetComment.setText(comment);
    146             lblChangesetComment.setToolTipText(tr("Changeset comment"));
    147 
     162            lblChangeset.setDescription(Long.toString(primitive.getChangesetId()));
     163
     164            String username = "";
     165            if (user != null) {
     166                username = user.getName();
     167            }
     168            lblUser.setDescription(username);
    148169            try {
    149                 if (getPrimitive().getUser() != null && getPrimitive().getUser() != User.getAnonymous()) {
    150                     url = AbstractInfoAction.getBaseUserUrl() + "/" +  URLEncoder.encode(getPrimitive().getUser().getName(), "UTF-8").replaceAll("\\+", "%20");
    151                     lblUser.setUrl(url);
     170                if (user != null && user != User.getAnonymous()) {
     171                    lblUser.setUrl(getUserUrl(username));
    152172                } else {
    153173                    lblUser.setUrl(null);
     
    157177                lblUser.setUrl(null);
    158178            }
    159             String username = "";
    160             if (getPrimitive().getUser() != null) {
    161                 username = getPrimitive().getUser().getName();
    162             }
    163             lblUser.setDescription(username);
    164179        } else {
    165             String user = JosmUserIdentityManager.getInstance().getUserName();
    166             if (user == null) {
     180            String username = JosmUserIdentityManager.getInstance().getUserName();
     181            if (username == null) {
    167182                lblUser.setDescription(tr("anonymous"));
    168183                lblUser.setUrl(null);
    169184            } else {
     185                lblUser.setDescription(username);
    170186                try {
    171                     String url = AbstractInfoAction.getBaseUserUrl() + "/" +  URLEncoder.encode(user, "UTF-8").replaceAll("\\+", "%20");
    172                     lblUser.setUrl(url);
     187                    lblUser.setUrl(getUserUrl(username));
    173188                } catch(UnsupportedEncodingException e) {
    174189                    Main.error(e);
    175190                    lblUser.setUrl(null);
    176191                }
    177                 lblUser.setDescription(user);
    178192            }
    179193            lblChangeset.setDescription(tr("none"));
    180194            lblChangeset.setUrl(null);
    181195        }
     196
     197        final String comment = cs != null ? cs.get("comment") : null;
     198        final String source = cs != null ? cs.get("source") : null;
     199        lblChangesetComment.setText(comment);
     200        lblChangesetSource.setText(source);
     201
     202        // Hide comment / source if both values are empty
     203        final Changeset oppCs = model.getPointInTime(pointInTimeType.opposite()).getChangeset();
     204        lblChangesetComment.setVisible(comment != null || (oppCs != null && oppCs.get("comment") != null));
     205        lblChangesetSource.setVisible(source != null || (oppCs != null && oppCs.get("source") != null));
    182206    }
    183207}
Note: See TracChangeset for help on using the changeset viewer.