source: josm/trunk/src/org/openstreetmap/josm/gui/io/OpenChangesetComboBoxModel.java@ 2613

Last change on this file since 2613 was 2613, checked in by Gubaer, 14 years ago

new: global in-memory cache for downloaded changesets
new: toggle dialog for changesets
new: downloading of changesets (currently without changeset content, will follow later)

File size: 3.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.io;
3
4import java.util.ArrayList;
5import java.util.List;
6
7import javax.swing.DefaultComboBoxModel;
8
9import org.openstreetmap.josm.data.osm.Changeset;
10import org.openstreetmap.josm.data.osm.ChangesetCache;
11import org.openstreetmap.josm.data.osm.ChangesetCacheEvent;
12import org.openstreetmap.josm.data.osm.ChangesetCacheListener;
13
14/**
15 * A combobox model for the list of open changesets
16 *
17 */
18public class OpenChangesetComboBoxModel extends DefaultComboBoxModel implements ChangesetCacheListener {
19 private List<Changeset> changesets;
20 private long uid;
21 private Changeset selectedChangeset = null;
22
23 protected Changeset getChangesetById(long id) {
24 for (Changeset cs : changesets) {
25 if (cs.getId() == id) return cs;
26 }
27 return null;
28 }
29
30 public OpenChangesetComboBoxModel() {
31 this.changesets = new ArrayList<Changeset>();
32 }
33
34 public void refresh() {
35 changesets.clear();
36 changesets.addAll(ChangesetCache.getInstance().getOpenChangesets());
37 fireContentsChanged(this, 0, getSize());
38 int idx = changesets.indexOf(selectedChangeset);
39 if (idx < 0) {
40 setSelectedItem(null);
41 } else {
42 setSelectedItem(changesets.get(idx));
43 }
44 }
45
46 public void setUserId(long uid) {
47 this.uid = uid;
48 }
49
50 public long getUserId() {
51 return uid;
52 }
53
54 public void selectFirstChangeset() {
55 if (changesets == null || changesets.isEmpty()) {
56 setSelectedItem(null);
57 } else {
58 setSelectedItem(changesets.get(0));
59 }
60 }
61
62 /* ------------------------------------------------------------------------------------ */
63 /* ChangesetCacheListener */
64 /* ------------------------------------------------------------------------------------ */
65 public void changesetCacheUpdated(ChangesetCacheEvent event) {
66 refresh();
67 }
68
69 /* ------------------------------------------------------------------------------------ */
70 /* ComboBoxModel */
71 /* ------------------------------------------------------------------------------------ */
72 @Override
73 public Object getElementAt(int index) {
74 return changesets.get(index);
75 }
76
77 @Override
78 public int getIndexOf(Object anObject) {
79 return changesets.indexOf(anObject);
80 }
81
82 @Override
83 public int getSize() {
84 return changesets.size();
85 }
86
87 @Override
88 public Object getSelectedItem() {
89 return selectedChangeset;
90 }
91
92 @Override
93 public void setSelectedItem(Object anObject) {
94 if (anObject == null) {
95 this.selectedChangeset = null;
96 super.setSelectedItem(null);
97 return;
98 }
99 if (! (anObject instanceof Changeset)) return;
100 Changeset cs = (Changeset)anObject;
101 if (cs.getId() == 0 || ! cs.isOpen()) return;
102 Changeset candidate = getChangesetById(cs.getId());
103 if (candidate == null) return;
104 this.selectedChangeset = candidate;
105 super.setSelectedItem(selectedChangeset);
106 }
107}
Note: See TracBrowser for help on using the repository browser.