Ignore:
Timestamp:
2009-11-14T17:59:10+01:00 (14 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/HistoryBrowserDialogManager.java

    r2019 r2448  
    44import java.awt.Dimension;
    55import java.awt.Point;
     6import java.util.ArrayList;
    67import java.util.HashMap;
    78import java.util.Map;
    89
     10import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.data.osm.history.History;
     12import org.openstreetmap.josm.gui.layer.Layer;
     13import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
    914import org.openstreetmap.josm.tools.WindowGeometry;
    1015
    11 public class HistoryBrowserDialogManager {
     16public class HistoryBrowserDialogManager implements LayerChangeListener {
    1217    static private HistoryBrowserDialogManager instance;
    1318    static public HistoryBrowserDialogManager getInstance() {
     
    2227    protected HistoryBrowserDialogManager() {
    2328        dialogs = new HashMap<Long, HistoryBrowserDialog>();
     29        Layer.listeners.add(this);
    2430    }
    2531
     
    7985        dialog.dispose();
    8086    }
     87
     88    /**
     89     * Hides and destroys all currently visible history browser dialogs
     90     *
     91     */
     92    public void hideAll() {
     93        ArrayList<HistoryBrowserDialog> dialogs = new ArrayList<HistoryBrowserDialog>();
     94        dialogs.addAll(this.dialogs.values());
     95        for (HistoryBrowserDialog dialog: dialogs) {
     96            dialog.unlinkAsListener();
     97            hide(dialog);
     98        }
     99    }
     100
     101    public void show(History h) {
     102        if (h == null)
     103            return;
     104        if (existsDialog(h.getId())) {
     105            show(h.getId());
     106        } else {
     107            HistoryBrowserDialog dialog = new HistoryBrowserDialog(h);
     108            show(h.getId(), dialog);
     109        }
     110    }
     111
     112    /* ----------------------------------------------------------------------------- */
     113    /* LayerChangeListener                                                           */
     114    /* ----------------------------------------------------------------------------- */
     115    public void activeLayerChange(Layer oldLayer, Layer newLayer) {}
     116    public void layerAdded(Layer newLayer) {}
     117
     118    public void layerRemoved(Layer oldLayer) {
     119        // remove all history browsers if the number of layers drops to 0
     120        //
     121        if (Main.map.mapView.getNumLayers() == 0) {
     122            hideAll();
     123        }
     124    }
    81125}
Note: See TracChangeset for help on using the changeset viewer.