source: josm/trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberMerger.java@ 3034

Last change on this file since 3034 was 3034, checked in by jttt, 14 years ago

Fix #4467 Don't silently drop locally deleted member primitives from downloaded ways and relation (fix the issue when deleted primitive is referenced)

File size: 2.7 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.conflict.pair.relation;
3
4import javax.swing.JScrollPane;
5import javax.swing.JTable;
6
7import org.openstreetmap.josm.data.conflict.Conflict;
8import org.openstreetmap.josm.data.osm.OsmPrimitive;
9import org.openstreetmap.josm.data.osm.Relation;
10import org.openstreetmap.josm.data.osm.RelationMember;
11import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver;
12import org.openstreetmap.josm.gui.conflict.pair.ListMerger;
13
14/**
15 * A UI component for resolving conflicts in the member lists of two {@see Relation}
16 */
17public class RelationMemberMerger extends ListMerger<RelationMember> implements IConflictResolver {
18 //private static final Logger logger = Logger.getLogger(RelationMemberMerger.class.getName());
19
20 @Override
21 protected JScrollPane buildMyElementsTable() {
22 myEntriesTable = new JTable(
23 model.getMyTableModel(),
24 new RelationMemberListColumnModel(),
25 model.getMySelectionModel()
26 );
27 myEntriesTable.setName("table.mynodes");
28 myEntriesTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
29 return embeddInScrollPane(myEntriesTable);
30 }
31
32 @Override
33 protected JScrollPane buildMergedElementsTable() {
34 mergedEntriesTable = new JTable(
35 model.getMergedTableModel(),
36 new RelationMemberListColumnModel(),
37 model.getMergedSelectionModel()
38 );
39 mergedEntriesTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
40 mergedEntriesTable.setName("table.mergednodes");
41 mergedEntriesTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
42 return embeddInScrollPane(mergedEntriesTable);
43 }
44
45 @Override
46 protected JScrollPane buildTheirElementsTable() {
47 theirEntriesTable = new JTable(
48 model.getTheirTableModel(),
49 new RelationMemberListColumnModel(),
50 model.getTheirSelectionModel()
51 );
52 theirEntriesTable.setName("table.theirnodes");
53 theirEntriesTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
54 return embeddInScrollPane(theirEntriesTable);
55 }
56
57 public void populate(Conflict<? extends OsmPrimitive> conflict) {
58 RelationMemberListMergeModel model = (RelationMemberListMergeModel)getModel();
59 model.populate((Relation)conflict.getMy(), (Relation)conflict.getTheir());
60 }
61
62 public RelationMemberMerger() {
63 super(new RelationMemberListMergeModel());
64 }
65
66 public void deletePrimitive(boolean deleted) {
67 if (deleted) {
68 model.clearMerged();
69 model.setFrozen(true);
70 } else {
71 model.setFrozen(false);
72 }
73 }
74}
Note: See TracBrowser for help on using the repository browser.