- Timestamp:
- 2016-12-08T00:54:43+01:00 (8 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
r11357 r11366 12 12 import java.awt.event.WindowAdapter; 13 13 import java.awt.event.WindowEvent; 14 import java.io.Serializable; 14 15 import java.util.ArrayList; 15 16 import java.util.Collection; … … 185 186 */ 186 187 public static class RelationMemberTableModel extends DefaultTableModel { 187 private static class RelationToChildReferenceComparator implements Comparator<RelationToChildReference> { 188 private NameFormatter nf = DefaultNameFormatter.getInstance(); 188 private static class RelationToChildReferenceComparator implements Comparator<RelationToChildReference>, Serializable { 189 private final NameFormatter nf = DefaultNameFormatter.getInstance(); 189 190 190 191 @Override -
trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
r11357 r11366 25 25 import javax.swing.table.JTableHeader; 26 26 import javax.swing.table.TableCellRenderer; 27 import javax.swing.table.TableColumnModel; 27 28 import javax.swing.table.TableModel; 28 29 … … 243 244 244 245 static final class UserTable extends JTable { 246 static final class UserTableHeader extends JTableHeader { 247 UserTableHeader(TableColumnModel cm) { 248 super(cm); 249 } 250 251 @Override 252 public String getToolTipText(MouseEvent e) { 253 int index = columnModel.getColumnIndexAtX(e.getPoint().x); 254 int realIndex = columnModel.getColumn(index).getModelIndex(); 255 return COLUMN_TOOLTIPS[realIndex]; 256 } 257 } 258 245 259 UserTable(TableModel dm) { 246 260 super(dm); … … 249 263 @Override 250 264 protected JTableHeader createDefaultTableHeader() { 251 return new JTableHeader(columnModel) { 252 @Override 253 public String getToolTipText(MouseEvent e) { 254 int index = columnModel.getColumnIndexAtX(e.getPoint().x); 255 int realIndex = columnModel.getColumn(index).getModelIndex(); 256 return COLUMN_TOOLTIPS[realIndex]; 257 } 258 }; 265 return new UserTableHeader(columnModel); 259 266 } 260 267 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
r11357 r11366 326 326 TableColumnModel mod = membershipTable.getColumnModel(); 327 327 membershipTable.getTableHeader().setReorderingAllowed(false); 328 mod.getColumn(0).setCellRenderer(new DefaultTableCellRenderer() { 329 @Override public Component getTableCellRendererComponent(JTable table, Object value, 330 boolean isSelected, boolean hasFocus, int row, int column) { 331 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column); 332 if (value == null) 333 return this; 334 if (c instanceof JLabel) { 335 JLabel label = (JLabel) c; 336 Relation r = (Relation) value; 337 label.setText(r.getDisplayName(DefaultNameFormatter.getInstance())); 338 if (r.isDisabledAndHidden()) { 339 label.setFont(label.getFont().deriveFont(Font.ITALIC)); 340 } 341 } 342 return c; 343 } 344 }); 345 346 mod.getColumn(1).setCellRenderer(new DefaultTableCellRenderer() { 347 @Override public Component getTableCellRendererComponent(JTable table, Object value, 348 boolean isSelected, boolean hasFocus, int row, int column) { 349 if (value == null) 350 return this; 351 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column); 352 boolean isDisabledAndHidden = ((Relation) table.getValueAt(row, 0)).isDisabledAndHidden(); 353 if (c instanceof JLabel) { 354 JLabel label = (JLabel) c; 355 label.setText(((MemberInfo) value).getRoleString()); 356 if (isDisabledAndHidden) { 357 label.setFont(label.getFont().deriveFont(Font.ITALIC)); 358 } 359 } 360 return c; 361 } 362 }); 363 364 mod.getColumn(2).setCellRenderer(new DefaultTableCellRenderer() { 365 @Override public Component getTableCellRendererComponent(JTable table, Object value, 366 boolean isSelected, boolean hasFocus, int row, int column) { 367 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column); 368 boolean isDisabledAndHidden = ((Relation) table.getValueAt(row, 0)).isDisabledAndHidden(); 369 if (c instanceof JLabel) { 370 JLabel label = (JLabel) c; 371 label.setText(((MemberInfo) table.getValueAt(row, 1)).getPositionString()); 372 if (isDisabledAndHidden) { 373 label.setFont(label.getFont().deriveFont(Font.ITALIC)); 374 } 375 } 376 return c; 377 } 378 }); 328 mod.getColumn(0).setCellRenderer(new MemberOfCellRenderer()); 329 mod.getColumn(1).setCellRenderer(new RoleCellRenderer()); 330 mod.getColumn(2).setCellRenderer(new PositionCellRenderer()); 379 331 mod.getColumn(2).setPreferredWidth(20); 380 332 mod.getColumn(1).setPreferredWidth(40); … … 388 340 if (Main.pref.getBoolean("properties.menu.add_edit_delete", true)) { 389 341 blankSpaceMenuHandler.addAction(addAction); 390 PopupMenuLauncher launcher = new PopupMenuLauncher(blankSpaceMenu) { 391 @Override 392 protected boolean checkSelection(Component component, Point p) { 393 if (component instanceof JTable) { 394 return ((JTable) component).rowAtPoint(p) == -1; 395 } 396 return true; 397 } 398 }; 342 PopupMenuLauncher launcher = new BlankSpaceMenuLauncher(blankSpaceMenu); 399 343 bothTables.addMouseListener(launcher); 400 344 tagTable.addMouseListener(launcher); … … 818 762 } 819 763 764 static final class MemberOfCellRenderer extends DefaultTableCellRenderer { 765 @Override 766 public Component getTableCellRendererComponent(JTable table, Object value, 767 boolean isSelected, boolean hasFocus, int row, int column) { 768 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column); 769 if (value == null) 770 return this; 771 if (c instanceof JLabel) { 772 JLabel label = (JLabel) c; 773 Relation r = (Relation) value; 774 label.setText(r.getDisplayName(DefaultNameFormatter.getInstance())); 775 if (r.isDisabledAndHidden()) { 776 label.setFont(label.getFont().deriveFont(Font.ITALIC)); 777 } 778 } 779 return c; 780 } 781 } 782 783 static final class RoleCellRenderer extends DefaultTableCellRenderer { 784 @Override 785 public Component getTableCellRendererComponent(JTable table, Object value, 786 boolean isSelected, boolean hasFocus, int row, int column) { 787 if (value == null) 788 return this; 789 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column); 790 boolean isDisabledAndHidden = ((Relation) table.getValueAt(row, 0)).isDisabledAndHidden(); 791 if (c instanceof JLabel) { 792 JLabel label = (JLabel) c; 793 label.setText(((MemberInfo) value).getRoleString()); 794 if (isDisabledAndHidden) { 795 label.setFont(label.getFont().deriveFont(Font.ITALIC)); 796 } 797 } 798 return c; 799 } 800 } 801 802 static final class PositionCellRenderer extends DefaultTableCellRenderer { 803 @Override 804 public Component getTableCellRendererComponent(JTable table, Object value, 805 boolean isSelected, boolean hasFocus, int row, int column) { 806 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column); 807 boolean isDisabledAndHidden = ((Relation) table.getValueAt(row, 0)).isDisabledAndHidden(); 808 if (c instanceof JLabel) { 809 JLabel label = (JLabel) c; 810 label.setText(((MemberInfo) table.getValueAt(row, 1)).getPositionString()); 811 if (isDisabledAndHidden) { 812 label.setFont(label.getFont().deriveFont(Font.ITALIC)); 813 } 814 } 815 return c; 816 } 817 } 818 819 static final class BlankSpaceMenuLauncher extends PopupMenuLauncher { 820 BlankSpaceMenuLauncher(JPopupMenu menu) { 821 super(menu); 822 } 823 824 @Override 825 protected boolean checkSelection(Component component, Point p) { 826 if (component instanceof JTable) { 827 return ((JTable) component).rowAtPoint(p) == -1; 828 } 829 return true; 830 } 831 } 832 820 833 static final class TaggingPresetCommandHandler implements TaggingPresetHandler { 821 834 @Override -
trunk/src/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollection.java
r11339 r11366 15 15 class RecentTagCollection { 16 16 17 /** 18 * LRU cache for recently added tags (http://java-planet.blogspot.com/2005/08/how-to-set-up-simple-lru-cache-using.html) 19 */ 20 static final class LruCache extends LinkedHashMap<Tag, Void> { 21 private final int capacity; 22 23 LruCache(int capacity) { 24 super(capacity + 1, 1.1f, true); 25 this.capacity = capacity; 26 } 27 28 @Override 29 protected boolean removeEldestEntry(Map.Entry<Tag, Void> eldest) { 30 return size() > capacity; 31 } 32 } 33 17 34 private final Map<Tag, Void> recentTags; 18 35 private SearchCompiler.Match tagsToIgnore; 19 36 20 37 RecentTagCollection(final int capacity) { 21 // LRU cache for recently added tags (http://java-planet.blogspot.com/2005/08/how-to-set-up-simple-lru-cache-using.html) 22 recentTags = new LinkedHashMap<Tag, Void>(capacity + 1, 1.1f, true) { 23 @Override 24 protected boolean removeEldestEntry(Map.Entry<Tag, Void> eldest) { 25 return size() > capacity; 26 } 27 }; 38 recentTags = new LruCache(capacity); 28 39 tagsToIgnore = SearchCompiler.Never.INSTANCE; 29 40 } -
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(newReversedChangeListener(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(newReversedChangeListener(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; -
trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
r11288 r11366 131 131 public void setHistoryComboBoxDownFocusTraversalHandler(final Action handler, final HistoryComboBox hcb) { 132 132 hcb.getEditor().addActionListener(handler); 133 hcb.getEditorComponent().addKeyListener( 134 new KeyAdapter() { 135 @Override 136 public void keyTyped(KeyEvent e) { 137 if (e.getKeyCode() == KeyEvent.VK_TAB) { 138 handler.actionPerformed(new ActionEvent(hcb, 0, "focusDown")); 139 } 140 } 141 } 142 ); 133 hcb.getEditorComponent().addKeyListener(new HistoryComboBoxKeyAdapter(hcb, handler)); 143 134 } 144 135 … … 184 175 } 185 176 177 static final class HistoryComboBoxKeyAdapter extends KeyAdapter { 178 private final HistoryComboBox hcb; 179 private final Action handler; 180 181 HistoryComboBoxKeyAdapter(HistoryComboBox hcb, Action handler) { 182 this.hcb = hcb; 183 this.handler = handler; 184 } 185 186 @Override 187 public void keyTyped(KeyEvent e) { 188 if (e.getKeyCode() == KeyEvent.VK_TAB) { 189 handler.actionPerformed(new ActionEvent(hcb, 0, "focusDown")); 190 } 191 } 192 } 193 186 194 /** 187 195 * Updates the changeset comment model upon changes in the input field. -
trunk/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java
r10428 r11366 60 60 61 61 for (final String file : fileHistory) { 62 add(new AbstractAction() { 63 { 64 putValue(NAME, file); 65 putValue("help", ht("/Action/OpenRecent")); 66 putValue("toolbar", Boolean.FALSE); 67 } 68 @Override 69 public void actionPerformed(ActionEvent e) { 70 File f = new File(file); 71 OpenFileTask task = new OpenFileTask(Collections.singletonList(f), null); 72 task.setRecordHistory(true); 73 Main.worker.submit(task); 74 } 75 }); 62 add(new OpenRecentAction(file)); 76 63 } 77 64 add(new JSeparator()); … … 82 69 clearItem.setEnabled(!fileHistory.isEmpty()); 83 70 add(clearItem); 71 } 72 73 static final class OpenRecentAction extends AbstractAction { 74 private final String file; 75 76 OpenRecentAction(String file) { 77 this.file = file; 78 putValue(NAME, file); 79 putValue("help", ht("/Action/OpenRecent")); 80 putValue("toolbar", Boolean.FALSE); 81 } 82 83 @Override 84 public void actionPerformed(ActionEvent e) { 85 OpenFileTask task = new OpenFileTask(Collections.singletonList(new File(file)), null); 86 task.setRecordHistory(true); 87 Main.worker.submit(task); 88 } 84 89 } 85 90 -
trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
r11323 r11366 225 225 226 226 private static class LayerListWarningMessagePanel extends JPanel { 227 static final class LayerCellRenderer implements ListCellRenderer<SaveLayerInfo> { 228 private final DefaultListCellRenderer def = new DefaultListCellRenderer(); 229 230 @Override 231 public Component getListCellRendererComponent(JList<? extends SaveLayerInfo> list, SaveLayerInfo info, int index, 232 boolean isSelected, boolean cellHasFocus) { 233 def.setIcon(info.getLayer().getIcon()); 234 def.setText(info.getName()); 235 return def; 236 } 237 } 238 227 239 private final JLabel lblMessage = new JLabel(); 228 240 private final JList<SaveLayerInfo> lstLayers = new JList<>(); 229 241 230 242 LayerListWarningMessagePanel(String msg, List<SaveLayerInfo> infos) { 243 super(new GridBagLayout()); 231 244 build(); 232 245 lblMessage.setText(msg); … … 235 248 236 249 protected void build() { 237 setLayout(new GridBagLayout());238 250 GridBagConstraints gc = new GridBagConstraints(); 239 251 gc.gridx = 0; … … 244 256 add(lblMessage, gc); 245 257 lblMessage.setHorizontalAlignment(JLabel.LEFT); 246 lstLayers.setCellRenderer( 247 new ListCellRenderer<SaveLayerInfo>() { 248 private final DefaultListCellRenderer def = new DefaultListCellRenderer(); 249 @Override 250 public Component getListCellRendererComponent(JList<? extends SaveLayerInfo> list, SaveLayerInfo info, int index, 251 boolean isSelected, boolean cellHasFocus) { 252 def.setIcon(info.getLayer().getIcon()); 253 def.setText(info.getName()); 254 return def; 255 } 256 } 257 ); 258 lstLayers.setCellRenderer(new LayerCellRenderer()); 258 259 gc.gridx = 0; 259 260 gc.gridy = 1; -
trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
r11293 r11366 55 55 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes; 56 56 import org.openstreetmap.josm.tools.InputMapUtils; 57 import org.openstreetmap.josm.tools.MultiLineFlowLayout; 57 58 import org.openstreetmap.josm.tools.Utils; 58 59 import org.openstreetmap.josm.tools.WindowGeometry; 59 import org.openstreetmap.josm.tools.MultiLineFlowLayout;60 60 61 61 /** … … 135 135 136 136 // a tabbed pane with configuration panels in the lower half 137 tpConfigPanels = new JTabbedPane() { 138 @Override 139 public Dimension getPreferredSize() { 140 // make sure the tabbed pane never grabs more space than necessary 141 return super.getMinimumSize(); 142 } 143 }; 137 tpConfigPanels = new CompactTabbedPane(); 144 138 145 139 pnlBasicUploadSettings = new BasicUploadSettingsPanel(changesetCommentModel, changesetSourceModel); … … 414 408 } 415 409 410 static final class CompactTabbedPane extends JTabbedPane { 411 @Override 412 public Dimension getPreferredSize() { 413 // make sure the tabbed pane never grabs more space than necessary 414 return super.getMinimumSize(); 415 } 416 } 417 416 418 /** 417 419 * Handles an upload. -
trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
r10791 r11366 10 10 import java.awt.event.WindowAdapter; 11 11 import java.awt.event.WindowEvent; 12 import java.io.Serializable; 12 13 import java.util.ArrayList; 13 14 import java.util.Collection; … … 196 197 197 198 static class OsmPrimitiveListModel extends AbstractListModel<OsmPrimitive> { 199 static final class OsmPrimitiveComparator implements Comparator<OsmPrimitive>, Serializable { 200 private final DefaultNameFormatter formatter = DefaultNameFormatter.getInstance(); 201 202 @Override 203 public int compare(OsmPrimitive o1, OsmPrimitive o2) { 204 int ret = OsmPrimitiveType.from(o1).compareTo(OsmPrimitiveType.from(o2)); 205 if (ret != 0) 206 return ret; 207 return o1.getDisplayName(formatter).compareTo(o1.getDisplayName(formatter)); 208 } 209 } 210 198 211 private transient List<OsmPrimitive> data; 199 212 200 213 protected void sort() { 201 if (data == null) 202 return; 203 data.sort(new Comparator<OsmPrimitive>() { 204 private DefaultNameFormatter formatter = DefaultNameFormatter.getInstance(); 205 @Override 206 public int compare(OsmPrimitive o1, OsmPrimitive o2) { 207 int ret = OsmPrimitiveType.from(o1).compareTo(OsmPrimitiveType.from(o2)); 208 if (ret != 0) 209 return ret; 210 return o1.getDisplayName(formatter).compareTo(o1.getDisplayName(formatter)); 211 } 212 } 213 ); 214 if (data != null) 215 data.sort(new OsmPrimitiveComparator()); 214 216 } 215 217 -
trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
r11277 r11366 141 141 142 142 /** List of recent relations */ 143 private final Map<Relation, Void> recentRelations = new LinkedHashMap<Relation, Void>(PROPERTY_RECENT_RELATIONS_NUMBER.get()+1, 1.1f, true) { 144 @Override 145 protected boolean removeEldestEntry(Map.Entry<Relation, Void> eldest) { 146 return size() > PROPERTY_RECENT_RELATIONS_NUMBER.get(); 147 } 148 }; 143 private final Map<Relation, Void> recentRelations = new LruCache(PROPERTY_RECENT_RELATIONS_NUMBER.get()+1); 149 144 150 145 /** … … 213 208 static String createLayerName(Object arg) { 214 209 return tr("Data Layer {0}", arg); 210 } 211 212 static final class LruCache extends LinkedHashMap<Relation, Void> { 213 LruCache(int initialCapacity) { 214 super(initialCapacity, 1.1f, true); 215 } 216 217 @Override 218 protected boolean removeEldestEntry(Map.Entry<Relation, Void> eldest) { 219 return size() > PROPERTY_RECENT_RELATIONS_NUMBER.get(); 220 } 215 221 } 216 222 -
trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
r10647 r11366 41 41 private final transient GpxLayer layer; 42 42 43 static final class AudioFileFilter extends FileFilter { 44 @Override 45 public boolean accept(File f) { 46 return f.isDirectory() || Utils.hasExtension(f, "wav"); 47 } 48 49 @Override 50 public String getDescription() { 51 return tr("Wave Audio files (*.wav)"); 52 } 53 } 54 43 55 private static class Markers { 44 56 public boolean timedMarkersOmitted; … … 70 82 return; 71 83 } 72 FileFilter filter = new FileFilter() { 73 @Override 74 public boolean accept(File f) { 75 return f.isDirectory() || Utils.hasExtension(f, "wav"); 76 } 77 78 @Override 79 public String getDescription() { 80 return tr("Wave Audio files (*.wav)"); 81 } 82 }; 83 AbstractFileChooser fc = DiskAccessAction.createAndOpenFileChooser(true, true, null, filter, 84 AbstractFileChooser fc = DiskAccessAction.createAndOpenFileChooser(true, true, null, new AudioFileFilter(), 84 85 JFileChooser.FILES_ONLY, "markers.lastaudiodirectory"); 85 86 if (fc != null) { -
trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
r11365 r11366 73 73 import javax.swing.table.DefaultTableCellRenderer; 74 74 import javax.swing.table.TableCellEditor; 75 import javax.swing.table.TableModel; 75 76 76 77 import org.openstreetmap.josm.Main; … … 138 139 selectionModel = new DefaultListSelectionModel(); 139 140 activeSourcesModel = new ActiveSourcesModel(selectionModel); 140 tblActiveSources = new JTable(activeSourcesModel) { 141 // some kind of hack to prevent the table from scrolling slightly to the right when clicking on the text 142 @Override 143 public void scrollRectToVisible(Rectangle aRect) { 144 super.scrollRectToVisible(new Rectangle(0, aRect.y, aRect.width, aRect.height)); 145 } 146 }; 141 tblActiveSources = new ScrollHackTable(activeSourcesModel); 147 142 tblActiveSources.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); 148 143 tblActiveSources.setSelectionModel(selectionModel); … … 421 416 */ 422 417 protected abstract String getStr(I18nString ident); 418 419 static final class ScrollHackTable extends JTable { 420 ScrollHackTable(TableModel dm) { 421 super(dm); 422 } 423 424 // some kind of hack to prevent the table from scrolling slightly to the right when clicking on the text 425 @Override 426 public void scrollRectToVisible(Rectangle aRect) { 427 super.scrollRectToVisible(new Rectangle(0, aRect.y, aRect.width, aRect.height)); 428 } 429 } 423 430 424 431 /** -
trunk/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
r10627 r11366 45 45 public class LafPreference implements SubPreferenceSetting { 46 46 47 static final class LafListCellRenderer implements ListCellRenderer<LookAndFeelInfo> { 48 private final DefaultListCellRenderer def = new DefaultListCellRenderer(); 49 50 @Override 51 public Component getListCellRendererComponent(JList<? extends LookAndFeelInfo> list, LookAndFeelInfo value, 52 int index, boolean isSelected, boolean cellHasFocus) { 53 return def.getListCellRendererComponent(list, value.getName(), index, isSelected, cellHasFocus); 54 } 55 } 56 47 57 /** 48 58 * Factory used to create a new {@code LafPreference}. … … 98 108 } 99 109 100 lafCombo.setRenderer(new ListCellRenderer<LookAndFeelInfo>() { 101 private final DefaultListCellRenderer def = new DefaultListCellRenderer(); 102 @Override 103 public Component getListCellRendererComponent(JList<? extends LookAndFeelInfo> list, LookAndFeelInfo value, 104 int index, boolean isSelected, boolean cellHasFocus) { 105 return def.getListCellRendererComponent(list, value.getName(), index, isSelected, cellHasFocus); 106 } 107 }); 110 lafCombo.setRenderer(new LafListCellRenderer()); 108 111 109 112 panel = new VerticallyScrollablePanel(new GridBagLayout()); -
trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
r10828 r11366 26 26 */ 27 27 public class PluginListPanel extends VerticallyScrollablePanel { 28 static final class PluginCheckBoxMouseAdapter extends MouseAdapter { 29 private final PluginCheckBox cbPlugin; 30 31 PluginCheckBoxMouseAdapter(PluginCheckBox cbPlugin) { 32 this.cbPlugin = cbPlugin; 33 } 34 35 @Override 36 public void mouseClicked(MouseEvent e) { 37 cbPlugin.doClick(); 38 } 39 } 40 28 41 private transient PluginPreferencesModel model; 29 42 … … 129 142 pi.getScaledIcon(), 130 143 SwingConstants.LEFT); 131 lblPlugin.addMouseListener(new MouseAdapter() { 132 @Override 133 public void mouseClicked(MouseEvent e) { 134 cbPlugin.doClick(); 135 } 136 }); 144 lblPlugin.addMouseListener(new PluginCheckBoxMouseAdapter(cbPlugin)); 137 145 138 146 gbc.gridx = 0; -
trunk/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java
r10179 r11366 41 41 */ 42 42 public class ProxyPreferencesPanel extends VerticallyScrollablePanel { 43 44 static final class AutoSizePanel extends JPanel { 45 AutoSizePanel() { 46 super(new GridBagLayout()); 47 } 48 49 @Override 50 public Dimension getMinimumSize() { 51 return getPreferredSize(); 52 } 53 } 43 54 44 55 /** … … 118 129 */ 119 130 protected final JPanel buildHttpProxyConfigurationPanel() { 120 JPanel pnl = new JPanel(new GridBagLayout()) { 121 @Override 122 public Dimension getMinimumSize() { 123 return getPreferredSize(); 124 } 125 }; 131 JPanel pnl = new AutoSizePanel(); 126 132 GridBagConstraints gc = new GridBagConstraints(); 127 133 … … 194 200 */ 195 201 protected final JPanel buildSocksProxyConfigurationPanel() { 196 JPanel pnl = new JPanel(new GridBagLayout()) { 197 @Override 198 public Dimension getMinimumSize() { 199 return getPreferredSize(); 200 } 201 }; 202 JPanel pnl = new AutoSizePanel(); 202 203 GridBagConstraints gc = new GridBagConstraints(); 203 204 gc.anchor = GridBagConstraints.WEST; -
trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
r10604 r11366 40 40 41 41 private final transient InputContext privateInputContext = InputContext.getInstance(); 42 43 static final class InnerFocusListener implements FocusListener { 44 private final JTextComponent editorComponent; 45 46 InnerFocusListener(JTextComponent editorComponent) { 47 this.editorComponent = editorComponent; 48 } 49 50 @Override 51 public void focusLost(FocusEvent e) { 52 if (Main.map != null) { 53 Main.map.keyDetector.setEnabled(true); 54 } 55 } 56 57 @Override 58 public void focusGained(FocusEvent e) { 59 if (Main.map != null) { 60 Main.map.keyDetector.setEnabled(false); 61 } 62 // save unix system selection (middle mouse paste) 63 Clipboard sysSel = ClipboardUtils.getSystemSelection(); 64 if (sysSel != null) { 65 Transferable old = ClipboardUtils.getClipboardContent(sysSel); 66 editorComponent.selectAll(); 67 if (old != null) { 68 sysSel.setContents(old, null); 69 } 70 } else { 71 editorComponent.selectAll(); 72 } 73 } 74 } 42 75 43 76 /** … … 185 218 final JTextComponent editorComponent = this.getEditorComponent(); 186 219 editorComponent.setDocument(new AutoCompletingComboBoxDocument(this)); 187 editorComponent.addFocusListener( 188 new FocusListener() { 189 @Override 190 public void focusLost(FocusEvent e) { 191 if (Main.map != null) { 192 Main.map.keyDetector.setEnabled(true); 193 } 194 } 195 196 @Override 197 public void focusGained(FocusEvent e) { 198 if (Main.map != null) { 199 Main.map.keyDetector.setEnabled(false); 200 } 201 // save unix system selection (middle mouse paste) 202 Clipboard sysSel = ClipboardUtils.getSystemSelection(); 203 if (sysSel != null) { 204 Transferable old = ClipboardUtils.getClipboardContent(sysSel); 205 editorComponent.selectAll(); 206 if (old != null) { 207 sysSel.setContents(old, null); 208 } 209 } else { 210 editorComponent.selectAll(); 211 } 212 } 213 } 214 ); 220 editorComponent.addFocusListener(new InnerFocusListener(editorComponent)); 215 221 } 216 222 -
trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java
r10590 r11366 25 25 public class PresetLink extends TaggingPresetItem { 26 26 27 static final class TaggingPresetMouseAdapter extends MouseAdapter { 28 private final TaggingPreset t; 29 30 TaggingPresetMouseAdapter(TaggingPreset t) { 31 this.t = t; 32 } 33 34 @Override 35 public void mouseClicked(MouseEvent e) { 36 t.actionPerformed(null); 37 } 38 } 39 27 40 /** The exact name of the preset to link to. Required. */ 28 41 public String preset_name = ""; // NOSONAR … … 36 49 TaggingPreset t = found.get(); 37 50 JLabel lbl = new TaggingPresetLabel(t); 38 lbl.addMouseListener(new MouseAdapter() { 39 @Override 40 public void mouseClicked(MouseEvent arg0) { 41 t.actionPerformed(null); 42 } 43 }); 51 lbl.addMouseListener(new TaggingPresetMouseAdapter(t)); 44 52 p.add(lbl, GBC.eol().fill(GBC.HORIZONTAL)); 45 53 return false; -
trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
r11288 r11366 33 33 */ 34 34 public class OverpassDownloadReader extends BoundingBoxDownloader { 35 36 static final class OverpassOsmReader extends OsmReader { 37 @Override 38 protected void parseUnknown(boolean printWarning) throws XMLStreamException { 39 if ("remark".equals(parser.getLocalName()) && parser.getEventType() == XMLStreamConstants.START_ELEMENT) { 40 final String text = parser.getElementText(); 41 if (text.contains("runtime error")) { 42 throw new XMLStreamException(text); 43 } 44 } 45 super.parseUnknown(printWarning); 46 } 47 } 35 48 36 49 final String overpassServer; … … 148 161 @Override 149 162 protected DataSet parseDataSet(InputStream source, ProgressMonitor progressMonitor) throws IllegalDataException { 150 return new OsmReader() { 151 @Override 152 protected void parseUnknown(boolean printWarning) throws XMLStreamException { 153 if ("remark".equals(parser.getLocalName()) && parser.getEventType() == XMLStreamConstants.START_ELEMENT) { 154 final String text = parser.getElementText(); 155 if (text.contains("runtime error")) { 156 throw new XMLStreamException(text); 157 } 158 } 159 super.parseUnknown(printWarning); 160 } 161 }.doParseDataSet(source, progressMonitor); 163 return new OverpassOsmReader().doParseDataSet(source, progressMonitor); 162 164 } 163 165 -
trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
r11184 r11366 53 53 private static final Set<String> trustedSenders = new HashSet<>(); 54 54 55 static final class PropertyTableModel extends DefaultTableModel { 56 private final Class<?>[] types = {Boolean.class, String.class, Object.class, ExistingValues.class}; 57 58 PropertyTableModel(int rowCount) { 59 super(new String[] {tr("Assume"), tr("Key"), tr("Value"), tr("Existing values")}, rowCount); 60 } 61 62 @Override 63 public Class<?> getColumnClass(int c) { 64 return types[c]; 65 } 66 } 67 55 68 /** 56 69 * Class for displaying "delete from ... objects" in the table … … 131 144 this.sender = senderName; 132 145 133 final DefaultTableModel tm = new DefaultTableModel(new String[] {tr("Assume"), tr("Key"), tr("Value"), tr("Existing values")}, 134 tags.length) { 135 private final Class<?>[] types = {Boolean.class, String.class, Object.class, ExistingValues.class}; 136 @Override 137 public Class<?> getColumnClass(int c) { 138 return types[c]; 139 } 140 }; 146 final DefaultTableModel tm = new PropertyTableModel(tags.length); 141 147 142 148 sel = primitives; -
trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
r10616 r11366 33 33 private final Map<MultikeyShortcutAction, MyAction> myActions = new HashMap<>(); 34 34 35 private static final class ShowLayersPopupWorker implements Runnable { 35 static final class ShowLayersPopupWorker implements Runnable { 36 static final class StatusLinePopupMenuListener implements PopupMenuListener { 37 @Override 38 public void popupMenuWillBecomeVisible(PopupMenuEvent e) { 39 // Do nothing 40 } 41 42 @Override 43 public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { 44 Main.map.statusLine.resetHelpText(STATUS_BAR_ID); 45 } 46 47 @Override 48 public void popupMenuCanceled(PopupMenuEvent e) { 49 // Do nothing 50 } 51 } 52 36 53 private final MyAction action; 37 54 38 privateShowLayersPopupWorker(MyAction action) {55 ShowLayersPopupWorker(MyAction action) { 39 56 this.action = action; 40 57 } … … 77 94 } 78 95 } 79 layers.addPopupMenuListener(new PopupMenuListener() { 80 81 @Override 82 public void popupMenuWillBecomeVisible(PopupMenuEvent e) { 83 // Do nothing 84 } 85 86 @Override 87 public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { 88 Main.map.statusLine.resetHelpText(STATUS_BAR_ID); 89 } 90 91 @Override 92 public void popupMenuCanceled(PopupMenuEvent e) { 93 // Do nothing 94 } 95 }); 96 96 layers.addPopupMenuListener(new StatusLinePopupMenuListener()); 97 97 layers.show(Main.parent, Integer.MAX_VALUE, Integer.MAX_VALUE); 98 98 layers.setLocation(Main.parent.getX() + Main.parent.getWidth() - layers.getWidth(), 99 Main.parent.getY() + Main.parent.getHeight() - layers.getHeight()); 99 Main.parent.getY() + Main.parent.getHeight() - layers.getHeight()); 100 100 } 101 101 }
Note:
See TracChangeset
for help on using the changeset viewer.