Ticket #6776: 6776.patch

File 6776.patch, 3.5 KB (added by simon04, 14 years ago)
  • src/org/openstreetmap/josm/gui/history/HistoryBrowser.java

    diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
    index 6f7a972..ffa8d5b 100644
    a b public class HistoryBrowser extends JPanel {  
    2929    private RelationMemberListViewer relationMemberListViewer;
    3030    private CoordinateInfoViewer coordinateInfoViewer;
    3131    private JTabbedPane tpViewers;
     32    private VersionTable versionTable;
    3233
    3334    /**
    3435     * embedds table in a {@see JScrollPane}
    public class HistoryBrowser extends JPanel {  
    5253        JPanel pnl = new JPanel();
    5354        pnl.setLayout(new BorderLayout());
    5455
    55         VersionTable tbl = new VersionTable(model);
    56         pnl.add(embeddInScrollPane(tbl), BorderLayout.CENTER);
     56        versionTable = new VersionTable(model);
     57        pnl.add(embeddInScrollPane(versionTable), BorderLayout.CENTER);
    5758        return pnl;
    5859    }
    5960
    public class HistoryBrowser extends JPanel {  
    125126     */
    126127    public void populate(History history) {
    127128        model.setHistory(history);
     129        versionTable.updateSelection();
    128130
    129131        tpViewers.removeAll();
    130132
  • src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java

    diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
    index 4614c68..335f000 100644
    a b public class HistoryBrowserModel extends Observable implements LayerChangeListen  
    173173    public void setHistory(History history) {
    174174        this.history = history;
    175175        if (history.getNumVersions() > 0) {
    176             current = history.getEarliest();
    177             reference = history.getEarliest();
    178             setLatest(null);
     176            HistoryOsmPrimitive newLatest = null;
    179177            if (getEditLayer() != null) {
    180178                OsmPrimitive p = getEditLayer().data.getPrimitiveById(history.getId(), history.getType());
    181179                if (canShowAsLatest(p)) {
    182                     HistoryOsmPrimitive latest = new HistoryPrimitiveBuilder().build(p);
    183                     setLatest(latest);
     180                    newLatest = new HistoryPrimitiveBuilder().build(p);
    184181                }
    185182            }
     183            if (newLatest == null) {
     184                current = history.getLatest();
     185                int prevIndex = history.getNumVersions() - 2;
     186                reference = prevIndex < 0 ? history.getEarliest() : history.get(prevIndex);
     187            } else {
     188                reference = history.getLatest();
     189                current = newLatest;
     190            }
     191            setLatest(newLatest);
    186192        }
    187193        initTagTableModels();
    188194        fireModelChange();
  • src/org/openstreetmap/josm/gui/history/VersionTable.java

    diff --git a/src/org/openstreetmap/josm/gui/history/VersionTable.java b/src/org/openstreetmap/josm/gui/history/VersionTable.java
    index 603f26a..41bc66f 100644
    a b public class VersionTable extends JTable implements Observer{  
    9494        }
    9595    }
    9696
     97    public void updateSelection() {
     98        final int row = getVersionTableModel().getRowCount() - 1;
     99        setRowSelectionInterval(row, row);
     100    }
     101
    97102    class PopupMenuTrigger extends MouseAdapter {
    98103        @Override
    99104        public void mousePressed(MouseEvent e) {