Revision 148

View differences:

org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/DefaultEditingSwingManager.java
19 19
import javax.swing.JOptionPane;
20 20
import javax.swing.JPanel;
21 21

  
22
import org.gvsig.fmap.mapcontext.MapContext;
22 23
import org.gvsig.fmap.mapcontrol.MapControl;
23 24
import org.gvsig.tools.ToolsLocator;
24 25
import org.gvsig.tools.dynobject.DynObject;
......
33 34
public class DefaultEditingSwingManager extends AbstractManager implements
34 35
    EditingSwingManager {
35 36

  
36
    Map<MapControl, EditingContext> editingContexts =
37
        new HashMap<MapControl, EditingContext>();
37
    Map<MapContext, EditingContext> editingContexts =
38
        new HashMap<MapContext, EditingContext>();
38 39

  
39 40
    public DefaultEditingSwingManager() {
40 41
        super(new DefaultEditingProviderManager());
41
        
42

  
42 43
    }
43 44

  
44 45
    public EditingContext getEditingContext(MapControl mapControl) {
45
        if (editingContexts.containsKey(mapControl)) {
46
            return editingContexts.get(mapControl);
46
        MapContext mapContext = mapControl.getMapContext();
47
        
48
        if (editingContexts.containsKey(mapContext)) {
49
            EditingContext editingContext = editingContexts.get(mapContext);
50
            
51
            if(editingContext.getMapControl() != null){
52
                return editingContext;
53
            } else {
54
                editingContexts.remove(mapContext);
55
            }
56
            
47 57
        }
48 58
        return null;
49 59
    }
......
105 115
    }
106 116

  
107 117
    public void registerEditingContext(MapControl mapControl) {
108
        if (!editingContexts.containsKey(mapControl)) {
118
        MapContext mapContext = mapControl.getMapContext();
119
        if (!editingContexts.containsKey(mapContext)) {
109 120
            EditingContext editingContext =
110 121
                new DefaultEditingContext(mapControl);
111
            editingContexts.put(mapControl, editingContext);
122
            editingContexts.put(mapContext, editingContext);
123
        } else {
124
            // MapContext registered. Update mapControl reference of editing
125
            // context
126
            EditingContext editingContext = editingContexts.get(mapContext);
127
            editingContext.setMapControl(mapControl);
112 128
        }
113 129
    }
114 130

  
......
164 180
                i18nManager.getTranslation("end_editing"),
165 181
                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
166 182
                null, options, options[2]);
167
        
183

  
168 184
        if (resp == JOptionPane.YES_OPTION) {
169 185
            return EditingContext.SAVE_CHANGES;
170 186
        } else if (resp == JOptionPane.NO_OPTION) {

Also available in: Unified diff