source: josm/trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/OKAction.java@ 9496

Last change on this file since 9496 was 9496, checked in by Don-vip, 8 years ago

massive refactoring of GenericRelationEditor. As JDialog cannot be instantiated in headless mode, extract all actions to separate classes in new package gui.dialogs.relation.actions in order to test them with JUnit

File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation.actions;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Component;
7import java.awt.event.ActionEvent;
8
9import org.openstreetmap.josm.Main;
10import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
11import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
12import org.openstreetmap.josm.gui.dialogs.relation.RelationAware;
13import org.openstreetmap.josm.gui.layer.OsmDataLayer;
14import org.openstreetmap.josm.gui.tagging.TagEditorModel;
15import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
16import org.openstreetmap.josm.tools.ImageProvider;
17
18/**
19 * Apply the updates and close the dialog.
20 */
21public class OKAction extends SavingAction {
22
23 /**
24 * Constructs a new {@code OKAction}.
25 * @param memberTable member table
26 * @param memberTableModel member table model
27 * @param tagModel tag editor model
28 * @param layer OSM data layer
29 * @param editor relation editor
30 * @param tfRole role text field
31 */
32 public OKAction(MemberTable memberTable, MemberTableModel memberTableModel, TagEditorModel tagModel, OsmDataLayer layer,
33 RelationAware editor, AutoCompletingTextField tfRole) {
34 super(memberTable, memberTableModel, tagModel, layer, editor, tfRole);
35 putValue(SHORT_DESCRIPTION, tr("Apply the updates and close the dialog"));
36 putValue(SMALL_ICON, ImageProvider.get("ok"));
37 putValue(NAME, tr("OK"));
38 setEnabled(true);
39 }
40
41 @Override
42 public void actionPerformed(ActionEvent e) {
43 Main.pref.put("relation.editor.generic.lastrole", tfRole.getText());
44 memberTable.stopHighlighting();
45 if (editor.getRelation() == null) {
46 applyNewRelation(tagModel);
47 } else if (!memberTableModel.hasSameMembersAs(editor.getRelationSnapshot()) || tagModel.isDirty()) {
48 if (editor.isDirtyRelation()) {
49 if (confirmClosingBecauseOfDirtyState()) {
50 if (layer.getConflicts().hasConflictForMy(editor.getRelation())) {
51 warnDoubleConflict();
52 return;
53 }
54 applyExistingConflictingRelation(tagModel);
55 } else
56 return;
57 } else {
58 applyExistingNonConflictingRelation(tagModel);
59 }
60 }
61 if (editor instanceof Component) {
62 ((Component) editor).setVisible(false);
63 }
64 }
65}
Note: See TracBrowser for help on using the repository browser.