Ignore:
Timestamp:
2009-07-12T13:11:06+02:00 (17 years ago)
Author:
Gubaer
Message:

fixed #2911: Relation editor doesn't notice all members downloaded via Download members
fixed problems with references to Main.ds in IO subsystem
relation editor is now aware of layers. Deleting a layer will close open editors for relations in this layer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java

    r1762 r1772  
    1010
    1111import org.openstreetmap.josm.Main;
     12import org.openstreetmap.josm.data.osm.OsmPrimitive;
     13import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    1214import org.openstreetmap.josm.data.osm.Relation;
    1315import org.openstreetmap.josm.data.osm.RelationMember;
    1416import org.openstreetmap.josm.gui.ExtendedDialog;
     17import org.openstreetmap.josm.gui.layer.Layer;
     18import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1519
    1620public abstract class RelationEditor extends ExtendedDialog {
     
    2731        if (relationDialogManager == null) {
    2832            relationDialogManager = new RelationDialogManager();
     33            Layer.listeners.add(relationDialogManager);
    2934        }
    3035        return relationDialogManager;
     
    3944    private Relation relation;
    4045    private Relation clone;
     46
     47    /** the data layer the relation belongs to */
     48    private OsmDataLayer layer;
    4149
    4250    /**
     
    5866     * @return an instance of RelationEditor suitable for editing that kind of relation
    5967     */
    60     public static RelationEditor getEditor(Relation r, Collection<RelationMember> selectedMembers) {
     68    public static RelationEditor getEditor(OsmDataLayer layer, Relation r, Collection<RelationMember> selectedMembers) {
    6169        for (Class<RelationEditor> e : editors) {
    6270            try {
     
    6573                if (canEdit) {
    6674                    Constructor<RelationEditor> con = e.getConstructor(Relation.class, Collection.class);
    67                     RelationEditor editor = con.newInstance(r, selectedMembers);
     75                    RelationEditor editor = con.newInstance(layer, r, selectedMembers);
    6876                    return editor;
    6977                }
     
    7280            }
    7381        }
    74         if (getRelationDialogManager().isOpenInEditor(r))
    75             return getRelationDialogManager().getEditorForRelation(r);
     82        if (getRelationDialogManager().isOpenInEditor(layer, r))
     83            return getRelationDialogManager().getEditorForRelation(layer, r);
    7684        else {
    77             RelationEditor editor = new GenericRelationEditor(r, selectedMembers);
    78             getRelationDialogManager().register(r, editor);
     85            RelationEditor editor = new GenericRelationEditor(layer, r, selectedMembers);
     86            getRelationDialogManager().register(layer, r, editor);
    7987            return editor;
    8088        }
    8189    }
    8290
    83     protected RelationEditor(Relation relation, Collection<RelationMember> selectedMembers)
     91    protected RelationEditor(OsmDataLayer layer, Relation relation, Collection<RelationMember> selectedMembers)
    8492    {
    8593        // Initalizes ExtendedDialog
    8694        super(Main.parent,
    8795                relation == null
    88                 ? tr("Create new relation")
     96                ? tr("Create new relation in layer ''{0}''", layer.getName())
    8997                        : (relation.id == 0
    90                                 ? tr ("Edit new relation")
    91                                         : tr("Edit relation #{0}", relation.id)
     98                                ? tr ("Edit new relation in layer ''{0}''", layer.getName())
     99                                        : tr("Edit relation #{0} in layer ''{1}''", relation.id, layer.getName())
    92100                        ),
    93101                        new String[] { tr("Apply Changes"), tr("Cancel")},
    94102                        false
    95103        );
     104        System.out.println("-- in super  constructor");
     105        for (OsmPrimitive primitive : layer.data.allNonDeletedPrimitives()) {
     106            System.out.println(OsmPrimitiveType.from(primitive) + " " + primitive.id + " incomplete=" + primitive.incomplete);
     107        }
     108        System.out.println("-------------");
     109
    96110
    97111        this.relation = relation;
     112        this.layer = layer;
    98113
    99114        if (relation == null) {
     
    113128        return clone;
    114129    }
     130
     131    protected OsmDataLayer getLayer() {
     132        return layer;
     133    }
    115134}
Note: See TracChangeset for help on using the changeset viewer.