source: josm/trunk/src/org/openstreetmap/josm/gui/history/VersionTableModel.java@ 11878

Last change on this file since 11878 was 11646, checked in by Don-vip, 7 years ago

see #14175 - refactor HistoryBrowserModel

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.history;
3
4import java.text.DateFormat;
5
6import javax.swing.table.AbstractTableModel;
7
8import org.openstreetmap.josm.data.osm.Changeset;
9import org.openstreetmap.josm.data.osm.User;
10import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
11import org.openstreetmap.josm.tools.date.DateUtils;
12
13/**
14 * The table model for the list of versions in the current history
15 * @since 11646 (extracted from HistoryBrowserModel)
16 */
17public final class VersionTableModel extends AbstractTableModel {
18
19 private final HistoryBrowserModel model;
20
21 /**
22 * Constructs a new {@code VersionTableModel}.
23 * @param model parent {@code HistoryBrowserModel}
24 */
25 public VersionTableModel(HistoryBrowserModel model) {
26 this.model = model;
27 }
28
29 @Override
30 public int getRowCount() {
31 if (model.getHistory() == null)
32 return 0;
33 int ret = model.getHistory().getNumVersions();
34 if (model.getLatest() != null) {
35 ret++;
36 }
37 return ret;
38 }
39
40 @Override
41 public Object getValueAt(int row, int column) {
42 switch (column) {
43 case VersionTableColumnModel.COL_VERSION:
44 HistoryOsmPrimitive p1 = model.getPrimitive(row);
45 if (p1 != null)
46 return Long.toString(p1.getVersion());
47 return null;
48 case VersionTableColumnModel.COL_REFERENCE:
49 return model.isReferencePointInTime(row);
50 case VersionTableColumnModel.COL_CURRENT:
51 return model.isCurrentPointInTime(row);
52 case VersionTableColumnModel.COL_DATE:
53 HistoryOsmPrimitive p3 = model.getPrimitive(row);
54 if (p3 != null && p3.getTimestamp() != null)
55 return DateUtils.formatDateTime(p3.getTimestamp(), DateFormat.SHORT, DateFormat.SHORT);
56 return null;
57 case VersionTableColumnModel.COL_USER:
58 HistoryOsmPrimitive p4 = model.getPrimitive(row);
59 if (p4 != null) {
60 User user = p4.getUser();
61 if (user != null)
62 return user.getName();
63 }
64 return null;
65 case VersionTableColumnModel.COL_EDITOR:
66 HistoryOsmPrimitive p5 = model.getPrimitive(row);
67 if (p5 != null) {
68 Changeset cs = p5.getChangeset();
69 if (cs != null) {
70 return cs.get("created_by");
71 }
72 }
73 return null;
74 default:
75 return null;
76 }
77 }
78
79 @Override
80 public void setValueAt(Object aValue, int row, int column) {
81 if (!((Boolean) aValue))
82 return;
83 switch (column) {
84 case 1:
85 model.setReferencePointInTime(row);
86 break;
87 case 2:
88 model.setCurrentPointInTime(row);
89 break;
90 default:
91 return;
92 }
93 fireTableDataChanged();
94 }
95
96 @Override
97 public boolean isCellEditable(int row, int column) {
98 return column >= 1 && column <= 2;
99 }
100
101 @Override
102 public int getColumnCount() {
103 return 6;
104 }
105}
Note: See TracBrowser for help on using the repository browser.