Ignore:
Timestamp:
2009-11-14T17:59:10+01:00 (16 years ago)
Author:
Gubaer
Message:

fixed #3352: History doesn't get invalidated on upload?
fixed #3912: Extend history dialog to contain the currently modified version
new: zoom to node in list of nodes in history dialog (popup menu)
new: load history of node from node list in history dialog (popup menu or double click)
fixed: close all history dialogs when the number of layers drop to 0
fixed: implemented equals() and hashCode() on SimplePrimitiveId
fixed: history features now usePrimitiveId instead of long.

File:
1 edited

Legend:

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

    r2318 r2448  
    22package org.openstreetmap.josm.gui.history;
    33
     4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
    45import static org.openstreetmap.josm.tools.I18n.marktr;
    56import static org.openstreetmap.josm.tools.I18n.tr;
     
    1718
    1819import org.openstreetmap.josm.Main;
     20import org.openstreetmap.josm.data.osm.PrimitiveId;
    1921import org.openstreetmap.josm.data.osm.history.History;
    2022import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
     
    2426import org.openstreetmap.josm.gui.help.HelpUtil;
    2527import org.openstreetmap.josm.tools.ImageProvider;
    26 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
    2728
    2829/**
     
    3536    /** the embedded browser */
    3637    private HistoryBrowser browser;
     38    private CloseAction closeAction;
    3739
    3840    /**
     
    4446        String title = "";
    4547        switch(h.getEarliest().getType()) {
    46             case NODE:  title = marktr("History for node {0}"); break;
    47             case WAY: title = marktr("History for way {0}"); break;
    48             case RELATION:  title = marktr("History for relation {0}"); break;
     48        case NODE:  title = marktr("History for node {0}"); break;
     49        case WAY: title = marktr("History for way {0}"); break;
     50        case RELATION:  title = marktr("History for relation {0}"); break;
    4951        }
    5052        setTitle(tr(
     
    7072        pnl.add(btn);
    7173
    72         btn = new SideButton(new CloseAction());
     74        btn = new SideButton(closeAction = new CloseAction());
    7375        btn.setName("btn.close");
    7476        pnl.add(btn);
     
    106108    }
    107109
    108     public void historyUpdated(HistoryDataSet source, long primitiveId) {
    109         if (primitiveId == browser.getHistory().getId()) {
     110    public void historyUpdated(HistoryDataSet source, PrimitiveId primitiveId) {
     111        if (primitiveId == null) {
     112            browser.populate(source.getHistory(browser.getHistory().getPrimitmiveId()));
     113        } else if (primitiveId.equals(browser.getHistory().getPrimitmiveId())) {
    110114            browser.populate(source.getHistory(primitiveId));
    111         } else if (primitiveId == 0) {
    112             browser.populate(source.getHistory(browser.getHistory().getId()));
    113115        }
     116    }
     117
     118    public void unlinkAsListener() {
     119        getHistoryBrowser().getModel().unlinkAsListener();
    114120    }
    115121
     
    121127        }
    122128
    123         public void actionPerformed(ActionEvent e) {
     129        public void run() {
     130            getHistoryBrowser().getModel().unlinkAsListener();
    124131            HistoryDataSet.getInstance().removeHistoryDataSetListener(HistoryBrowserDialog.this);
    125132            HistoryBrowserDialogManager.getInstance().hide(HistoryBrowserDialog.this);
     133        }
     134
     135        public void actionPerformed(ActionEvent e) {
     136            run();
    126137        }
    127138    }
     
    144155        @Override
    145156        public void windowClosing(WindowEvent e) {
    146             HistoryDataSet.getInstance().removeHistoryDataSetListener(HistoryBrowserDialog.this);
    147             HistoryBrowserDialogManager.getInstance().hide(HistoryBrowserDialog.this);
     157            closeAction.run();
    148158        }
    149159    }
Note: See TracChangeset for help on using the changeset viewer.