Ignore:
Timestamp:
2009-09-03T21:54:04+02:00 (15 years ago)
Author:
Gubaer
Message:

fixed #3383: changeset tags in history dialog

File:
1 edited

Legend:

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

    r2019 r2044  
    22package org.openstreetmap.josm.gui.history;
    33
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5
     6import java.awt.event.ActionEvent;
    47import java.awt.event.MouseAdapter;
    58import java.awt.event.MouseEvent;
     
    912
    1013import javax.swing.DefaultListSelectionModel;
     14import javax.swing.JPopupMenu;
    1115import javax.swing.JTable;
    1216import javax.swing.ListSelectionModel;
    1317import javax.swing.event.ListSelectionEvent;
    1418import javax.swing.event.ListSelectionListener;
     19
     20import org.openstreetmap.josm.actions.AbstractInfoAction;
     21import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
     22import org.openstreetmap.josm.tools.ImageProvider;
    1523
    1624/**
     
    2230
    2331    private static Logger logger = Logger.getLogger(VersionTable.class.getName());
     32    private VersionTablePopupMenu popupMenu;
    2433
    2534    protected void build() {
     
    2736        addMouseListener(new MouseHandler());
    2837        getSelectionModel().addListSelectionListener(new SelectionHandler());
     38        popupMenu = new VersionTablePopupMenu();
     39        addMouseListener(new PopupMenuTrigger());
    2940    }
    3041
     
    3647
    3748    protected void handleSelectReferencePointInTime(int row) {
    38         getVesionTableModel().setReferencePointInTime(row);
     49        getVersionTableModel().setReferencePointInTime(row);
    3950    }
    4051
    4152    protected void handleSelectCurrentPointInTime(int row) {
    42         getVesionTableModel().setCurrentPointInTime(row);
     53        getVersionTableModel().setCurrentPointInTime(row);
    4354    }
    4455
    45     protected HistoryBrowserModel.VersionTableModel getVesionTableModel() {
     56    protected HistoryBrowserModel.VersionTableModel getVersionTableModel() {
    4657        return (HistoryBrowserModel.VersionTableModel) getModel();
    4758    }
     
    7384        repaint();
    7485    }
     86
     87    protected void showPopupMenu(MouseEvent evt) {
     88        HistoryBrowserModel.VersionTableModel model = getVersionTableModel();
     89        int row = getSelectedRow();
     90        if (row == -1) {
     91            row = rowAtPoint(evt.getPoint());
     92        }
     93        HistoryOsmPrimitive primitive = model.getPrimitive(row);
     94        popupMenu.prepare(primitive);
     95        popupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
     96    }
     97
     98    class PopupMenuTrigger extends MouseAdapter {
     99        @Override
     100        public void mousePressed(MouseEvent e) {
     101            showPopup(e);
     102        }
     103        @Override
     104        public void mouseReleased(MouseEvent e) {
     105            showPopup(e);
     106        }
     107        private void showPopup(MouseEvent e) {
     108            if (e.isPopupTrigger()) {
     109                showPopupMenu(e);
     110            }
     111        }
     112    }
     113
     114    class ChangesetInfoAction extends AbstractInfoAction {
     115        private HistoryOsmPrimitive primitive;
     116
     117        public ChangesetInfoAction() {
     118            putValue(NAME, tr("Changeset info"));
     119            putValue(SHORT_DESCRIPTION, tr("Launch browser with information about the changeset"));
     120            putValue(SMALL_ICON, ImageProvider.get("about"));
     121        }
     122
     123        @Override
     124        protected String createInfoUrl(Object infoObject) {
     125            HistoryOsmPrimitive primitive = (HistoryOsmPrimitive) infoObject;
     126            return getBaseBrowseUrl() + "/changeset/" + primitive.getChangesetId();
     127        }
     128
     129        @Override
     130        public void actionPerformed(ActionEvent e) {
     131            if (!isEnabled())
     132                return;
     133            String url = createInfoUrl(primitive);
     134            launchBrowser(url);
     135        }
     136
     137        public void prepare(HistoryOsmPrimitive primitive) {
     138            putValue(NAME, tr("Show changeset {0}", primitive.getChangesetId()));
     139            this.primitive = primitive;
     140        }
     141    }
     142
     143    class VersionTablePopupMenu extends JPopupMenu {
     144
     145        private ChangesetInfoAction changesetInfoAction;
     146
     147        protected void build() {
     148            changesetInfoAction = new ChangesetInfoAction();
     149            add(changesetInfoAction);
     150        }
     151        public VersionTablePopupMenu() {
     152            super();
     153            build();
     154        }
     155
     156        public void prepare(HistoryOsmPrimitive primitive) {
     157            changesetInfoAction.prepare(primitive);
     158            invalidate();
     159        }
     160    }
    75161}
Note: See TracChangeset for help on using the changeset viewer.