source: josm/trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java@ 7005

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

see #8465 - use diamond operator where applicable

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation;
3
4import java.util.ArrayList;
5import java.util.List;
6
7import javax.swing.AbstractListModel;
8
9import org.openstreetmap.josm.data.osm.DataSet;
10import org.openstreetmap.josm.data.osm.Relation;
11import org.openstreetmap.josm.data.osm.RelationMember;
12
13public class ReferringRelationsBrowserModel extends AbstractListModel<Relation> {
14
15 /** the relation */
16 private Relation relation;
17 private List<Relation> referrers;
18
19 /**
20 * Constructs a new {@code ReferringRelationsBrowserModel}.
21 */
22 public ReferringRelationsBrowserModel() {
23 relation = null;
24 referrers = new ArrayList<>();
25 }
26
27 public ReferringRelationsBrowserModel(Relation relation) {
28 this();
29 this.relation = relation;
30 }
31
32 protected void fireModelUpdate() {
33 int upper = Math.max(0, referrers.size() -1);
34 fireContentsChanged(this, 0, upper);
35 }
36
37 public void setRelation(Relation relation) {
38 this.relation = relation;
39 referrers.clear();
40 fireModelUpdate();
41 }
42
43 @Override
44 public Relation getElementAt(int index) {
45 return referrers.get(index);
46 }
47
48 @Override
49 public int getSize() {
50 return referrers.size();
51 }
52
53 protected boolean isReferringRelation(Relation parent) {
54 if (parent == null) return false;
55 for (RelationMember m: parent.getMembers()) {
56 if (m.isRelation()) {
57 Relation child = m.getRelation();
58 if (child.equals(relation)) return true;
59 }
60 }
61 return false;
62 }
63
64 public void populate(List<Relation> parents) {
65 referrers.clear();
66 if (parents != null) {
67 for (Relation relation: parents) {
68 if (isReferringRelation(relation)) {
69 referrers.add(relation);
70 }
71 }
72 }
73 fireModelUpdate();
74 }
75
76 /**
77 * Populates the browser with the list of referring relations in the {@link DataSet} ds.
78 *
79 * @param ds the data set
80 */
81 public void populate(DataSet ds) {
82 referrers.clear();
83 if (ds == null) {
84 fireModelUpdate();
85 return;
86 }
87 for (Relation parent : ds.getRelations()) {
88 if (isReferringRelation(parent)) {
89 referrers.add(parent);
90 }
91 }
92 fireModelUpdate();
93 }
94
95 public boolean canReload() {
96 return relation != null && !relation.isNew();
97 }
98
99 public Relation getRelation() {
100 return relation;
101 }
102}
Note: See TracBrowser for help on using the repository browser.