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

Last change on this file since 6901 was 6084, checked in by bastiK, 11 years ago

see #8902 - add missing @Override annotations (patch by shinigami)

  • Property svn:eol-style set to native
File size: 3.4 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. The model is populated with the list
16 * of open changesets kept in the {@link ChangesetCache}.
17 *
18 */
19public class OpenChangesetComboBoxModel extends DefaultComboBoxModel implements ChangesetCacheListener {
20 private List<Changeset> changesets;
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 /**
35 * Refreshes the content of the combobox model with the current list of open
36 * changesets from the {@link ChangesetCache}.
37 */
38 public void refresh() {
39 changesets.clear();
40 changesets.addAll(ChangesetCache.getInstance().getOpenChangesets());
41 fireContentsChanged(this, 0, getSize());
42 int idx = changesets.indexOf(selectedChangeset);
43 if (idx < 0) {
44 selectFirstChangeset();
45 } else {
46 setSelectedItem(changesets.get(idx));
47 }
48 }
49
50 /**
51 * Selects the first changeset in the current list of open changesets
52 */
53 public void selectFirstChangeset() {
54 if (changesets == null || changesets.isEmpty()) {
55 setSelectedItem(null);
56 } else {
57 setSelectedItem(changesets.get(0));
58 }
59 }
60
61 /* ------------------------------------------------------------------------------------ */
62 /* ChangesetCacheListener */
63 /* ------------------------------------------------------------------------------------ */
64 @Override
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.