Changeset 5335 in josm


Ignore:
Timestamp:
Jul 14, 2012 3:25:45 AM (11 months ago)
Author:
Don-vip
Message:

fix #7855 - conflict dialog: CCE selecting a way in members tab

Location:
trunk/src/org/openstreetmap/josm/gui/conflict/pair
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java

    r5301 r5335  
    3131import org.openstreetmap.josm.data.osm.OsmPrimitive; 
    3232import org.openstreetmap.josm.data.osm.PrimitiveId; 
     33import org.openstreetmap.josm.data.osm.RelationMember; 
    3334import org.openstreetmap.josm.gui.HelpAwareOptionPane; 
    3435import org.openstreetmap.josm.gui.help.HelpUtil; 
     
    713714        @Override 
    714715        public OsmPrimitive getReferredPrimitive(int idx) { 
    715             return (OsmPrimitive) getValueAt(idx, 1); 
     716            Object value = getValueAt(idx, 1); 
     717            if (value instanceof OsmPrimitive) { 
     718                return (OsmPrimitive) value; 
     719            } else if (value instanceof RelationMember) { 
     720                return ((RelationMember)value).getMember(); 
     721            } else { 
     722                System.err.println("Unknown object type: "+value); 
     723                return null; 
     724            } 
    716725        } 
    717726    } 
  • trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java

    r5298 r5335  
    1818import java.beans.PropertyChangeListener; 
    1919import java.util.ArrayList; 
     20import java.util.Collection; 
    2021import java.util.HashMap; 
     22import java.util.List; 
    2123import java.util.Observable; 
    2224import java.util.Observer; 
     
    3638import javax.swing.event.ListSelectionListener; 
    3739 
     40import org.openstreetmap.josm.Main; 
     41import org.openstreetmap.josm.data.osm.OsmPrimitive; 
    3842import org.openstreetmap.josm.data.osm.PrimitiveId; 
     43import org.openstreetmap.josm.data.osm.Relation; 
     44import org.openstreetmap.josm.data.osm.Way; 
     45import org.openstreetmap.josm.gui.layer.OsmDataLayer; 
    3946import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable; 
    4047import org.openstreetmap.josm.tools.CheckParameterUtil; 
     
    10241031        } 
    10251032    } 
     1033     
     1034    protected final <P extends OsmPrimitive> OsmDataLayer findLayerFor(P primitive) { 
     1035        if (primitive != null) { 
     1036            List<OsmDataLayer> layers = Main.map.mapView.getLayersOfType(OsmDataLayer.class); 
     1037            // Find layer with same dataset 
     1038            for (OsmDataLayer layer : layers) { 
     1039                if (layer.data == primitive.getDataSet()) { 
     1040                    return layer; 
     1041                } 
     1042            } 
     1043            // Conflict after merging layers: a dataset could be no more in any layer, try to find another layer with same primitive 
     1044            for (OsmDataLayer layer : layers) { 
     1045                final Collection<? extends OsmPrimitive> collection; 
     1046                if (primitive instanceof Way) { 
     1047                    collection = layer.data.getWays(); 
     1048                } else if (primitive instanceof Relation) { 
     1049                    collection = layer.data.getRelations(); 
     1050                } else { 
     1051                    collection = layer.data.allPrimitives(); 
     1052                } 
     1053                for (OsmPrimitive p : collection) { 
     1054                    if (p.getPrimitiveId().equals(primitive.getPrimitiveId())) { 
     1055                        return layer; 
     1056                    } 
     1057                } 
     1058            } 
     1059        } 
     1060        return null; 
     1061    } 
    10261062} 
  • trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMerger.java

    r5301 r5335  
    22package org.openstreetmap.josm.gui.conflict.pair.nodes; 
    33 
    4 import java.util.List; 
    5  
    64import javax.swing.JScrollPane; 
    75 
    8 import org.openstreetmap.josm.Main; 
    96import org.openstreetmap.josm.data.conflict.Conflict; 
    107import org.openstreetmap.josm.data.osm.Node; 
     
    1310import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver; 
    1411import org.openstreetmap.josm.gui.conflict.pair.ListMerger; 
    15 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 
    1612 
    1713/** 
     
    6561    } 
    6662     
    67     protected OsmDataLayer findLayerFor(Way w) { 
    68         List<OsmDataLayer> layers = Main.map.mapView.getLayersOfType(OsmDataLayer.class); 
    69         // Find layer with same dataset 
    70         for (OsmDataLayer layer : layers) { 
    71             if (layer.data == w.getDataSet()) { 
    72                 return layer; 
    73             } 
    74         } 
    75         // Conflict after merging layers: a dataset could be no more in any layer, try to find another layer with same primitive 
    76         for (OsmDataLayer layer : layers) { 
    77             for (Way way : layer.data.getWays()) { 
    78                 if (way.getPrimitiveId().equals(w.getPrimitiveId())) { 
    79                     return layer; 
    80                 } 
    81             } 
    82         } 
    83         return null; 
    84     } 
    85  
    8663    public void deletePrimitive(boolean deleted) { 
    8764        if (deleted) { 
  • trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberMerger.java

    r5301 r5335  
    5050 
    5151    public void populate(Conflict<? extends OsmPrimitive> conflict) { 
    52         RelationMemberListMergeModel model = (RelationMemberListMergeModel)getModel(); 
    53         model.populate((Relation)conflict.getMy(), (Relation)conflict.getTheir(), conflict.getMergedMap()); 
     52        Relation myRel = (Relation)conflict.getMy(); 
     53        Relation theirRel = (Relation)conflict.getTheir(); 
     54        ((RelationMemberListMergeModel)model).populate(myRel, theirRel, conflict.getMergedMap()); 
     55        myEntriesTable.setLayer(findLayerFor(myRel)); 
     56        theirEntriesTable.setLayer(findLayerFor(theirRel)); 
    5457    } 
    5558 
Note: See TracChangeset for help on using the changeset viewer.