Ignore:
Timestamp:
2009-07-08T21:50:32+02:00 (15 years ago)
Author:
Gubaer
Message:

new: replaced global conflict list by conflict list per layer, similar to datasets

File:
1 edited

Legend:

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

    r1722 r1750  
    99import java.awt.Graphics2D;
    1010import java.awt.Point;
     11import java.awt.event.ComponentAdapter;
     12import java.awt.event.ComponentEvent;
    1113import java.awt.event.MouseEvent;
    1214import java.awt.event.MouseMotionListener;
    13 import java.awt.event.ComponentAdapter;
    14 import java.awt.event.ComponentEvent;
    1515import java.awt.image.BufferedImage;
    1616import java.util.ArrayList;
    17 import java.util.Enumeration;
    1817import java.util.Collection;
    1918import java.util.Collections;
     19import java.util.Enumeration;
    2020import java.util.LinkedList;
    2121
     
    2727import org.openstreetmap.josm.actions.AutoScaleAction;
    2828import org.openstreetmap.josm.actions.JosmAction;
     29import org.openstreetmap.josm.actions.MoveAction;
    2930import org.openstreetmap.josm.actions.mapmode.MapMode;
    30 import org.openstreetmap.josm.actions.MoveAction;
    31 import org.openstreetmap.josm.data.Bounds;
    3231import org.openstreetmap.josm.data.ProjectionBounds;
    3332import org.openstreetmap.josm.data.SelectionChangedListener;
    34 import org.openstreetmap.josm.data.coor.EastNorth;
    35 import org.openstreetmap.josm.data.coor.LatLon;
    3633import org.openstreetmap.josm.data.osm.DataSet;
    3734import org.openstreetmap.josm.data.osm.DataSource;
    3835import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3936import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    40 import org.openstreetmap.josm.data.projection.Projection;
    4137import org.openstreetmap.josm.gui.layer.Layer;
    4238import org.openstreetmap.josm.gui.layer.MapViewPaintable;
     
    6157public class MapView extends NavigatableComponent {
    6258
     59
    6360    /**
    6461     * A list of all layers currently loaded.
     
    6966     */
    7067    public PlayHeadMarker playHeadMarker = null;
    71     /**
    72      * Direct link to the edit layer (if any) in the layers list.
    73      */
    74     public OsmDataLayer editLayer;
     68
    7569    /**
    7670     * The layer from the layers list that is currently active.
     
    10094                scaler.setLocation(10,30);
    10195
    102                 if (!zoomToEditLayerBoundingBox())
     96                if (!zoomToEditLayerBoundingBox()) {
    10397                    new AutoScaleAction("data").actionPerformed(null);
     98                }
    10499
    105100                new MapMover(MapView.this, Main.contentPane);
     
    152147    public void addLayer(Layer layer) {
    153148        if (layer instanceof OsmDataLayer) {
    154             editLayer = (OsmDataLayer)layer;
     149            OsmDataLayer editLayer = (OsmDataLayer)layer;
    155150            Main.ds = editLayer.data;
    156151            editLayer.listenerModified.add(new ModifiedChangedListener(){
    157152                public void modifiedChanged(boolean value, OsmDataLayer source) {
    158153                    JOptionPane.getFrameForComponent(Main.parent).setTitle((value?"*":"")
    159                     +tr("Java OpenStreetMap Editor"));
     154                            +tr("Java OpenStreetMap Editor"));
    160155                }
    161156            });
    162157        }
    163         if (layer instanceof MarkerLayer && playHeadMarker == null)
     158        if (layer instanceof MarkerLayer && playHeadMarker == null) {
    164159            playHeadMarker = PlayHeadMarker.create();
     160        }
    165161        int pos = layers.size();
    166         while(pos > 0 && layers.get(pos-1).background)
     162        while(pos > 0 && layers.get(pos-1).background) {
    167163            --pos;
     164        }
    168165        layers.add(pos, layer);
    169166
    170         for (Layer.LayerChangeListener l : Layer.listeners)
     167        for (Layer.LayerChangeListener l : Layer.listeners) {
    171168            l.layerAdded(layer);
     169        }
    172170        if (layer instanceof OsmDataLayer || activeLayer == null) {
    173171            // autoselect the new layer
    174172            Layer old = activeLayer;
    175173            setActiveLayer(layer);
    176             for (Layer.LayerChangeListener l : Layer.listeners)
     174            for (Layer.LayerChangeListener l : Layer.listeners) {
    177175                l.activeLayerChange(old, layer);
     176            }
    178177        }
    179178        AudioPlayer.reset();
     
    182181
    183182    @Override
    184     protected DataSet getData()
    185     {
     183    protected DataSet getData() {
    186184        if(activeLayer != null && activeLayer instanceof OsmDataLayer)
    187185            return ((OsmDataLayer)activeLayer).data;
     
    189187    }
    190188
    191     public Boolean isDrawableLayer()
    192     {
     189    /**
     190     * Replies true if the active layer is drawable.
     191     *
     192     * @return true if the active layer is drawable, false otherwise
     193     */
     194    public boolean isActiveLayerDrawable() {
    193195        return activeLayer != null && activeLayer instanceof OsmDataLayer;
    194196    }
    195197
    196     public Boolean isVisibleDrawableLayer() {
    197         return isDrawableLayer() && activeLayer.visible;
     198    /**
     199     * Replies true if the active layer is visible.
     200     *
     201     * @return true if the active layer is visible, false otherwise
     202     */
     203    public boolean isActiveLayerVisible() {
     204        return isActiveLayerDrawable() && activeLayer.visible;
    198205    }
    199206
     
    204211    public void removeLayer(Layer layer) {
    205212        if (layers.remove(layer)) {
    206             for (Layer.LayerChangeListener l : Layer.listeners)
     213            for (Layer.LayerChangeListener l : Layer.listeners) {
    207214                l.layerRemoved(layer);
    208         }
    209         if (layer == editLayer) {
    210             editLayer = null;
    211             Main.ds.setSelected();
     215            }
     216        }
     217        if (layer == activeLayer) {
     218            if (layer instanceof OsmDataLayer) {
     219                Main.ds.setSelected();
     220            }
    212221        }
    213222        layer.destroy();
     
    215224    }
    216225
    217     private Boolean virtualnodes = false;
    218     public void enableVirtualNodes(Boolean state)
    219     {
    220         if(virtualnodes != state)
    221         {
    222             virtualnodes = state;
     226    private boolean virtualNodesEnabled = false;
     227    public void setVirtualNodesEnabled(boolean enabled) {
     228        if(virtualNodesEnabled != enabled) {
     229            virtualNodesEnabled = enabled;
    223230            repaint();
    224231        }
    225232    }
    226     public Boolean useVirtualNodes()
    227     {
    228         return virtualnodes;
     233    public boolean isVirtualNodesEnabled() {
     234        return virtualNodesEnabled;
    229235    }
    230236
     
    241247            return; // already in place.
    242248        layers.remove(curLayerPos);
    243         if (pos >= layers.size())
     249        if (pos >= layers.size()) {
    244250            layers.add(layer);
    245         else
     251        } else {
    246252            layers.add(pos, layer);
     253        }
    247254        AudioPlayer.reset();
    248255    }
     
    266273        // just re-use it.
    267274        if (null == offscreenBuffer || offscreenBuffer.getWidth() != getWidth()
    268                 || offscreenBuffer.getHeight() != getHeight())
     275                || offscreenBuffer.getHeight() != getHeight()) {
    269276            offscreenBuffer = new BufferedImage(getWidth(), getHeight(),
    270277                    BufferedImage.TYPE_INT_ARGB);
     278        }
    271279
    272280        Graphics2D tempG = offscreenBuffer.createGraphics();
     
    276284        for (int i = layers.size()-1; i >= 0; --i) {
    277285            Layer l = layers.get(i);
    278             if (l.visible/* && l != getActiveLayer()*/)
     286            if (l.visible/* && l != getActiveLayer()*/) {
    279287                l.paint(tempG, this);
     288            }
    280289        }
    281290
     
    296305        int x2 = Math.max(min.x, max.x);
    297306        int y2 = Math.max(min.y, max.y);
    298         if (x1 > 0 || y1 > 0 || x2 < getWidth() || y2 < getHeight())
     307        if (x1 > 0 || y1 > 0 || x2 < getWidth() || y2 < getHeight()) {
    299308            tempG.drawRect(x1, y1, x2-x1+1, y2-y1+1);
    300 
    301         if (playHeadMarker != null)
     309        }
     310
     311        if (playHeadMarker != null) {
    302312            playHeadMarker.paint(tempG, this);
     313        }
    303314
    304315        g.drawImage(offscreenBuffer, 0, 0, null);
     
    310321     */
    311322    public void recalculateCenterScale(BoundingXYVisitor box) {
    312         if(box == null)
     323        if(box == null) {
    313324            box = new BoundingXYVisitor();
    314         if(box.getBounds() == null)
     325        }
     326        if(box.getBounds() == null) {
    315327            box.visit(getProjection().getWorldBounds());
    316         if(!box.hasExtend())
    317              box.enlargeBoundingBox();
     328        }
     329        if(!box.hasExtend()) {
     330            box.enlargeBoundingBox();
     331        }
    318332
    319333        zoomTo(box.getBounds());
     
    321335
    322336    /**
    323      * @return An unmodificable list of all layers
     337     * @return An unmodifiable collection of all layers
    324338     */
    325339    public Collection<Layer> getAllLayers() {
     
    328342
    329343    /**
    330      * Set the active selection to the given value and raise an layerchange event.
     344     * Sets the active layer to <code>layer</code>. If <code>layer</code> is an instance
     345     * of {@see OsmDataLayer} also sets {@see #editLayer} to <code>layer</code>.
     346     *
     347     * @param layer the layer to be activate; must be one of the layers in the list of layers
     348     * @exception IllegalArgumentException thrown if layer is not in the lis of layers
    331349     */
    332350    public void setActiveLayer(Layer layer) {
    333351        if (!layers.contains(layer))
    334             throw new IllegalArgumentException("Layer must be in layerlist");
     352            throw new IllegalArgumentException(tr("Layer {0} must be in list of layers", layer.toString()));
    335353        if (layer instanceof OsmDataLayer) {
    336             editLayer = (OsmDataLayer)layer;
     354            OsmDataLayer editLayer = (OsmDataLayer)layer;
    337355            Main.ds = editLayer.data;
    338         }
    339         else
     356        } else {
    340357            Main.ds.setSelected();
     358        }
    341359        DataSet.fireSelectionChanged(Main.ds.getSelected());
    342360        Layer old = activeLayer;
    343361        activeLayer = layer;
    344362        if (old != layer) {
    345             for (Layer.LayerChangeListener l : Layer.listeners)
     363            for (Layer.LayerChangeListener l : Layer.listeners) {
    346364                l.activeLayerChange(old, layer);
     365            }
    347366        }
    348367
     
    360379
    361380    /**
    362      * @return The current active layer
     381     * Replies the currently active layer
     382     *
     383     * @return the currently active layer (may be null)
    363384     */
    364385    public Layer getActiveLayer() {
    365386        return activeLayer;
     387    }
     388
     389    /**
     390     * Replies the current edit layer, if any
     391     *
     392     * @return the current edit layer. May be null.
     393     */
     394    public OsmDataLayer getEditLayer() {
     395        if (activeLayer instanceof OsmDataLayer)
     396            return (OsmDataLayer)activeLayer;
     397        return null;
     398    }
     399
     400    /**
     401     * replies true if the list of layers managed by this map view contain layer
     402     *
     403     * @param layer the layer
     404     * @return true if the list of layers managed by this map view contain layer
     405     */
     406    public boolean hasLayer(Layer layer) {
     407        return layers.contains(layer);
    366408    }
    367409
     
    377419        // workaround for #1461 (zoom to download bounding box instead of all data)
    378420        // In case we already have an existing data layer ...
    379         Collection<DataSource> dataSources = Main.main.editLayer().data.dataSources;
     421        Collection<DataSource> dataSources = Main.main.createOrGetEditLayer().data.dataSources;
    380422        // ... with bounding box[es] of data loaded from OSM or a file...
    381423        BoundingXYVisitor bbox = new BoundingXYVisitor();
Note: See TracChangeset for help on using the changeset viewer.