Changeset 11366 in josm for trunk/src/org/openstreetmap/josm/gui/history
- Timestamp:
- 2016-12-08T00:54:43+01:00 (7 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/history
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
r10763 r11366 37 37 public final class HistoryBrowserDialogManager implements LayerChangeListener { 38 38 39 static final class UnloadedHistoryPredicate implements Predicate<PrimitiveId> { 40 private final HistoryDataSet hds = HistoryDataSet.getInstance(); 41 42 @Override 43 public boolean test(PrimitiveId p) { 44 History h = hds.getHistory(p); 45 if (h == null) 46 // reload if the history is not in the cache yet 47 return true; 48 else 49 // reload if the history object of the selected object is not in the cache yet 50 return !p.isNew() && h.getByVersion(p.getUniqueId()) == null; 51 } 52 } 53 39 54 private static final String WINDOW_GEOMETRY_PREF = HistoryBrowserDialogManager.class.getName() + ".geometry"; 40 55 41 56 private static HistoryBrowserDialogManager instance; 57 58 private final Map<Long, HistoryBrowserDialog> dialogs; 59 60 private final Predicate<PrimitiveId> unloadedHistoryPredicate = new UnloadedHistoryPredicate(); 61 62 private final Predicate<PrimitiveId> notNewPredicate = p -> !p.isNew(); 63 64 protected HistoryBrowserDialogManager() { 65 dialogs = new HashMap<>(); 66 Main.getLayerManager().addLayerChangeListener(this); 67 } 42 68 43 69 /** … … 50 76 } 51 77 return instance; 52 }53 54 private final Map<Long, HistoryBrowserDialog> dialogs;55 56 protected HistoryBrowserDialogManager() {57 dialogs = new HashMap<>();58 Main.getLayerManager().addLayerChangeListener(this);59 78 } 60 79 … … 211 230 Main.worker.submit(r); 212 231 } 213 214 private final Predicate<PrimitiveId> unloadedHistoryPredicate = new Predicate<PrimitiveId>() {215 216 private HistoryDataSet hds = HistoryDataSet.getInstance();217 218 @Override219 public boolean test(PrimitiveId p) {220 History h = hds.getHistory(p);221 if (h == null)222 // reload if the history is not in the cache yet223 return true;224 else225 // reload if the history object of the selected object is not in the cache yet226 return !p.isNew() && h.getByVersion(p.getUniqueId()) == null;227 }228 };229 230 private final Predicate<PrimitiveId> notNewPredicate = p -> !p.isNew();231 232 } -
trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
r10611 r11366 44 44 * <li>on the right, it displays the node list for the version at {@link PointInTimeType#CURRENT_POINT_IN_TIME}</li> 45 45 * </ul> 46 * 46 * @since 1709 47 47 */ 48 48 public class NodeListViewer extends JPanel { … … 74 74 final NodeListTableColumnModel columnModel = new NodeListTableColumnModel(); 75 75 final JTable table = new JTable(tableModel, columnModel); 76 tableModel.addTableModelListener(new ReversedChangeListener(table, columnModel));76 tableModel.addTableModelListener(new ReversedChangeListener(table, columnModel)); 77 77 table.setName("table.referencenodelisttable"); 78 78 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); … … 87 87 final NodeListTableColumnModel columnModel = new NodeListTableColumnModel(); 88 88 final JTable table = new JTable(tableModel, columnModel); 89 tableModel.addTableModelListener(new ReversedChangeListener(table, columnModel));89 tableModel.addTableModelListener(new ReversedChangeListener(table, columnModel)); 90 90 table.setName("table.currentnodelisttable"); 91 91 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); … … 94 94 table.addMouseListener(new DoubleClickAdapter(table)); 95 95 return table; 96 }97 98 protected TableModelListener newReversedChangeListener(final JTable table, final NodeListTableColumnModel columnModel) {99 return new TableModelListener() {100 private Boolean reversed;101 private final String nonReversedText = tr("Nodes") + (table.getFont().canDisplay('\u25bc') ? " \u25bc" : " (1-n)");102 private final String reversedText = tr("Nodes") + (table.getFont().canDisplay('\u25b2') ? " \u25b2" : " (n-1)");103 104 @Override105 public void tableChanged(TableModelEvent e) {106 if (e.getSource() instanceof DiffTableModel) {107 final DiffTableModel mod = (DiffTableModel) e.getSource();108 if (reversed == null || reversed != mod.isReversed()) {109 reversed = mod.isReversed();110 columnModel.getColumn(0).setHeaderValue(reversed ? reversedText : nonReversedText);111 table.getTableHeader().setToolTipText(112 reversed ? tr("The nodes of this way are in reverse order") : null);113 table.getTableHeader().repaint();114 }115 }116 }117 };118 96 } 119 97 … … 205 183 } 206 184 185 static final class ReversedChangeListener implements TableModelListener { 186 private final NodeListTableColumnModel columnModel; 187 private final JTable table; 188 private Boolean reversed; 189 private final String nonReversedText; 190 private final String reversedText; 191 192 ReversedChangeListener(JTable table, NodeListTableColumnModel columnModel) { 193 this.columnModel = columnModel; 194 this.table = table; 195 nonReversedText = tr("Nodes") + (table.getFont().canDisplay('\u25bc') ? " \u25bc" : " (1-n)"); 196 reversedText = tr("Nodes") + (table.getFont().canDisplay('\u25b2') ? " \u25b2" : " (n-1)"); 197 } 198 199 @Override 200 public void tableChanged(TableModelEvent e) { 201 if (e.getSource() instanceof DiffTableModel) { 202 final DiffTableModel mod = (DiffTableModel) e.getSource(); 203 if (reversed == null || reversed != mod.isReversed()) { 204 reversed = mod.isReversed(); 205 columnModel.getColumn(0).setHeaderValue(reversed ? reversedText : nonReversedText); 206 table.getTableHeader().setToolTipText( 207 reversed ? tr("The nodes of this way are in reverse order") : null); 208 table.getTableHeader().repaint(); 209 } 210 } 211 } 212 } 213 207 214 static class NodeListPopupMenu extends JPopupMenu { 208 215 private final ZoomToNodeAction zoomToNodeAction;
Note:
See TracChangeset
for help on using the changeset viewer.