Changeset 14027 in josm for trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
- Timestamp:
- 2018-07-12T23:02:02+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
r13842 r14027 22 22 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec; 23 23 import org.openstreetmap.josm.gui.MainApplication; 24 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;25 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;26 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;27 24 import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager; 28 25 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor; 29 import org.openstreetmap.josm.gui.layer.OsmDataLayer;30 26 import org.openstreetmap.josm.gui.tagging.TagEditorModel; 31 27 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField; … … 38 34 */ 39 35 abstract class SavingAction extends AbstractRelationEditorAction { 36 private static final long serialVersionUID = 1L; 40 37 41 protected final TagEditorModel tagModel;42 38 protected final AutoCompletingTextField tfRole; 43 39 44 protected SavingAction(MemberTable memberTable, MemberTableModel memberTableModel, TagEditorModel tagModel, OsmDataLayer layer, 45 IRelationEditor editor, AutoCompletingTextField tfRole) { 46 super(memberTable, memberTableModel, null, layer, editor); 47 this.tagModel = tagModel; 48 this.tfRole = tfRole; 40 protected SavingAction(IRelationEditorActionAccess editorAccess, IRelationEditorUpdateOn... updateOn) { 41 super(editorAccess, updateOn); 42 this.tfRole = editorAccess.getTextFieldRole(); 49 43 } 50 44 … … 56 50 final Relation newRelation = new Relation(); 57 51 tagEditorModel.applyToPrimitive(newRelation); 58 memberTableModel.applyToRelation(newRelation);52 getMemberTableModel().applyToRelation(newRelation); 59 53 List<RelationMember> newMembers = new ArrayList<>(); 60 54 for (RelationMember rm: newRelation.getMembers()) { … … 73 67 if (newRelation.getMembersCount() == 0 && !newRelation.hasKeys()) 74 68 return; 75 MainApplication.undoRedo.add(new AddCommand( layer.getDataSet(), newRelation));69 MainApplication.undoRedo.add(new AddCommand(getLayer().getDataSet(), newRelation)); 76 70 77 71 // make sure everybody is notified about the changes 78 72 // 79 editor.setRelation(newRelation);80 if ( editorinstanceof RelationEditor) {73 getEditor().setRelation(newRelation); 74 if (getEditor() instanceof RelationEditor) { 81 75 RelationDialogManager.getRelationDialogManager().updateContext( 82 layer, editor.getRelation(), (RelationEditor)editor);76 getLayer(), getEditor().getRelation(), (RelationEditor) getEditor()); 83 77 } 84 78 // Relation list gets update in EDT so selecting my be postponed to following EDT run … … 91 85 */ 92 86 protected void applyExistingConflictingRelation(TagEditorModel tagEditorModel) { 93 Relation editedRelation = new Relation(editor.getRelation()); 87 Relation editedRelation = new Relation(editorAccess.getEditor().getRelation()); 94 88 tagEditorModel.applyToPrimitive(editedRelation); 95 memberTableModel.applyToRelation(editedRelation);96 Conflict<Relation> conflict = new Conflict<>(editor.getRelation(), editedRelation); 97 MainApplication.undoRedo.add(new ConflictAddCommand( layer.getDataSet(), conflict));89 editorAccess.getMemberTableModel().applyToRelation(editedRelation); 90 Conflict<Relation> conflict = new Conflict<>(editorAccess.getEditor().getRelation(), editedRelation); 91 MainApplication.undoRedo.add(new ConflictAddCommand(getLayer().getDataSet(), conflict)); 98 92 } 99 93 … … 103 97 */ 104 98 protected void applyExistingNonConflictingRelation(TagEditorModel tagEditorModel) { 105 Relation originRelation = editor.getRelation(); 99 Relation originRelation = editorAccess.getEditor().getRelation(); 106 100 Relation editedRelation = new Relation(originRelation); 107 101 tagEditorModel.applyToPrimitive(editedRelation); 108 memberTableModel.applyToRelation(editedRelation);102 getMemberTableModel().applyToRelation(editedRelation); 109 103 if (!editedRelation.hasEqualSemanticAttributes(originRelation, false)) { 110 104 MainApplication.undoRedo.add(new ChangeCommand(originRelation, editedRelation)); … … 153 147 + "''{1}''.<br>" 154 148 + "Please resolve this conflict first, then try again.</html>", 155 Utils.escapeReservedCharactersHTML( layer.getName()),156 Utils.escapeReservedCharactersHTML( editor.getRelation().getDisplayName(DefaultNameFormatter.getInstance()))149 Utils.escapeReservedCharactersHTML(getLayer().getName()), 150 Utils.escapeReservedCharactersHTML(getEditor().getRelation().getDisplayName(DefaultNameFormatter.getInstance())) 157 151 ), 158 152 tr("Double conflict"), … … 167 161 168 162 protected boolean applyChanges() { 169 if (editor.getRelation() == null) { 170 applyNewRelation( tagModel);163 if (editorAccess.getEditor().getRelation() == null) { 164 applyNewRelation(getTagModel()); 171 165 } else if (isEditorDirty()) { 172 if (editor.isDirtyRelation()) { 166 if (editorAccess.getEditor().isDirtyRelation()) { 173 167 if (confirmClosingBecauseOfDirtyState()) { 174 if ( layer.getConflicts().hasConflictForMy(editor.getRelation())) {168 if (getLayer().getConflicts().hasConflictForMy(editorAccess.getEditor().getRelation())) { 175 169 warnDoubleConflict(); 176 170 return false; 177 171 } 178 applyExistingConflictingRelation( tagModel);172 applyExistingConflictingRelation(getTagModel()); 179 173 hideEditor(); 180 174 } else 181 175 return false; 182 176 } else { 183 applyExistingNonConflictingRelation( tagModel);177 applyExistingNonConflictingRelation(getTagModel()); 184 178 } 185 179 } 186 editor.setRelation(editor.getRelation()); 180 editorAccess.getEditor().setRelation(editorAccess.getEditor().getRelation()); 187 181 return true; 188 182 } 189 183 190 184 protected void hideEditor() { 191 if (editor instanceof Component) { 192 ((Component) editor).setVisible(false); 185 if (editorAccess.getEditor() instanceof Component) { 186 ((Component) editorAccess.getEditor()).setVisible(false); 193 187 } 194 188 } 195 189 196 190 protected boolean isEditorDirty() { 197 Relation snapshot = editor.getRelationSnapshot(); 198 return (snapshot != null && ! memberTableModel.hasSameMembersAs(snapshot)) ||tagModel.isDirty();191 Relation snapshot = editorAccess.getEditor().getRelationSnapshot(); 192 return (snapshot != null && !getMemberTableModel().hasSameMembersAs(snapshot)) || getTagModel().isDirty(); 199 193 } 200 194 }
Note:
See TracChangeset
for help on using the changeset viewer.
