Ignore:
Timestamp:
2007-07-18T23:12:56+02:00 (17 years ago)
Author:
imi
Message:
  • added support for multiple data layers
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/gui/MapView.java

    r283 r290  
    2121import org.openstreetmap.josm.data.coor.EastNorth;
    2222import org.openstreetmap.josm.data.coor.LatLon;
     23import org.openstreetmap.josm.data.osm.DataSet;
    2324import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2425import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
     
    8182
    8283                // listend to selection changes to redraw the map
    83                 Main.ds.listeners.add(new SelectionChangedListener(){
     84                DataSet.listeners.add(new SelectionChangedListener(){
    8485                        public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
    8586                                repaint();
     
    102103        public void addLayer(Layer layer) {
    103104                if (layer instanceof OsmDataLayer) {
    104                         final OsmDataLayer dataLayer = (OsmDataLayer)layer;
    105                         if (editLayer != null) {
    106                                 editLayer.mergeFrom(layer);
    107                                 repaint();
    108                                 return;
    109                         }
    110                         editLayer = dataLayer;
    111                         dataLayer.data.listeners.addAll(Main.ds.listeners);
    112                         Main.ds = dataLayer.data;
    113                         dataLayer.listenerModified.add(new ModifiedChangedListener(){
     105                        editLayer = (OsmDataLayer)layer;
     106                        Main.ds = editLayer.data;
     107                        editLayer.listenerModified.add(new ModifiedChangedListener(){
    114108                                public void modifiedChanged(boolean value, OsmDataLayer source) {
    115109                                        JOptionPane.getFrameForComponent(Main.parent).setTitle((value?"*":"")+tr("Java OpenStreetMap - Editor"));
     
    118112                }
    119113
    120                 // add as a new layer
    121                 if (layer instanceof OsmDataLayer)
    122                         layers.add(0, layer);
    123                 else
    124                         layers.add(layers.size(), layer);
     114                layers.add(layers.size(), layer);
    125115
    126116                for (LayerChangeListener l : listeners)
     
    176166                for (int i = layers.size()-1; i >= 0; --i) {
    177167                        Layer l = layers.get(i);
    178                         if (l.visible)
     168                        if (l.visible && l != getActiveLayer())
    179169                                l.paint(g, this);
    180170                }
     171                if (getActiveLayer().visible)
     172                        getActiveLayer().paint(g, this);
    181173
    182174                // draw world borders
     
    261253                if (!layers.contains(layer))
    262254                        throw new IllegalArgumentException("Layer must be in layerlist");
     255                if (layer instanceof OsmDataLayer) {
     256                        editLayer = (OsmDataLayer)layer;
     257                        Main.ds = editLayer.data;
     258                        DataSet.fireSelectionChanged(Main.ds.getSelected());
     259                }
    263260                Layer old = activeLayer;
    264261                activeLayer = layer;
     
    266263                        for (LayerChangeListener l : listeners)
    267264                                l.activeLayerChange(old, layer);
     265                repaint();
    268266        }
    269267
Note: See TracChangeset for help on using the changeset viewer.