Ignore:
Timestamp:
2012-07-14T03:25:45+02:00 (12 years 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.