1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.gui.history;
|
---|
3 |
|
---|
4 | import javax.swing.JTable;
|
---|
5 | import javax.swing.event.TableModelEvent;
|
---|
6 | import javax.swing.event.TableModelListener;
|
---|
7 | import javax.swing.table.TableColumnModel;
|
---|
8 |
|
---|
9 | /**
|
---|
10 | * Updates the column header text and indicates a normal/reversed diff sorting
|
---|
11 | */
|
---|
12 | final class ReversedChangeListener implements TableModelListener {
|
---|
13 | private final TableColumnModel columnModel;
|
---|
14 | private final JTable table;
|
---|
15 | private Boolean reversed;
|
---|
16 | private final String nonReversedText;
|
---|
17 | private final String reversedText;
|
---|
18 | private final String reversedTooltip;
|
---|
19 |
|
---|
20 | ReversedChangeListener(JTable table, TableColumnModel columnModel, String reversedTooltip) {
|
---|
21 | this.columnModel = columnModel;
|
---|
22 | this.table = table;
|
---|
23 | Object columnName = columnModel.getColumn(0).getHeaderValue();
|
---|
24 | this.nonReversedText = columnName + (table.getFont().canDisplay('\u25bc') ? " \u25bc" : " (1-n)");
|
---|
25 | this.reversedText = columnName + (table.getFont().canDisplay('\u25b2') ? " \u25b2" : " (n-1)");
|
---|
26 | this.reversedTooltip = reversedTooltip;
|
---|
27 | }
|
---|
28 |
|
---|
29 | @Override
|
---|
30 | public void tableChanged(TableModelEvent e) {
|
---|
31 | if (e.getSource() instanceof DiffTableModel) {
|
---|
32 | final DiffTableModel mod = (DiffTableModel) e.getSource();
|
---|
33 | if (reversed == null || reversed != mod.isReversed()) {
|
---|
34 | reversed = mod.isReversed();
|
---|
35 | columnModel.getColumn(0).setHeaderValue(reversed ? reversedText : nonReversedText);
|
---|
36 | table.getTableHeader().setToolTipText(reversed ? reversedTooltip : null);
|
---|
37 | table.getTableHeader().repaint();
|
---|
38 | }
|
---|
39 | }
|
---|
40 | }
|
---|
41 | }
|
---|