Changeset 13608 in josm for trunk/src/org
- Timestamp:
- 2018-04-08T01:45:57+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
r13285 r13608 43 43 import org.openstreetmap.josm.Main; 44 44 import org.openstreetmap.josm.actions.MergeLayerAction; 45 import org.openstreetmap.josm.data.coor.EastNorth; 46 import org.openstreetmap.josm.data.imagery.OffsetBookmark; 45 47 import org.openstreetmap.josm.data.preferences.AbstractProperty; 46 48 import org.openstreetmap.josm.gui.MainApplication; … … 57 59 import org.openstreetmap.josm.gui.dialogs.layer.MoveUpAction; 58 60 import org.openstreetmap.josm.gui.dialogs.layer.ShowHideLayerAction; 61 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer; 59 62 import org.openstreetmap.josm.gui.layer.JumpToMarkerActions; 60 63 import org.openstreetmap.josm.gui.layer.Layer; … … 67 70 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener; 68 71 import org.openstreetmap.josm.gui.layer.NativeScaleLayer; 72 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings.DisplaySettingsChangeEvent; 73 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings.DisplaySettingsChangeListener; 69 74 import org.openstreetmap.josm.gui.util.MultikeyActionsHandler; 70 75 import org.openstreetmap.josm.gui.util.MultikeyShortcutAction.MultikeyInfo; … … 86 91 * @since 17 87 92 */ 88 public class LayerListDialog extends ToggleDialog { 93 public class LayerListDialog extends ToggleDialog implements DisplaySettingsChangeListener { 89 94 /** the unique instance of the dialog */ 90 95 private static volatile LayerListDialog instance; … … 206 211 layerList.getColumnModel().getColumn(1).setResizable(false); 207 212 208 layerList.getColumnModel().getColumn(2).setCellRenderer(new LayerVisibleCellRenderer());209 layerList.getColumnModel().getColumn(2).setCellEditor(new LayerVisibleCellEditor(newLayerVisibleCheckBox()));213 layerList.getColumnModel().getColumn(2).setCellRenderer(new OffsetLayerCellRenderer()); 214 layerList.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(new OffsetLayerCheckBox())); 210 215 layerList.getColumnModel().getColumn(2).setMaxWidth(16); 211 216 layerList.getColumnModel().getColumn(2).setPreferredWidth(16); 212 217 layerList.getColumnModel().getColumn(2).setResizable(false); 213 218 214 layerList.getColumnModel().getColumn(3).setCellRenderer(new LayerNameCellRenderer()); 215 layerList.getColumnModel().getColumn(3).setCellEditor(new LayerNameCellEditor(new DisableShortcutsOnFocusGainedTextField())); 219 layerList.getColumnModel().getColumn(3).setCellRenderer(new LayerVisibleCellRenderer()); 220 layerList.getColumnModel().getColumn(3).setCellEditor(new LayerVisibleCellEditor(new LayerVisibleCheckBox())); 221 layerList.getColumnModel().getColumn(3).setMaxWidth(16); 222 layerList.getColumnModel().getColumn(3).setPreferredWidth(16); 223 layerList.getColumnModel().getColumn(3).setResizable(false); 224 225 layerList.getColumnModel().getColumn(4).setCellRenderer(new LayerNameCellRenderer()); 226 layerList.getColumnModel().getColumn(4).setCellEditor(new LayerNameCellEditor(new DisableShortcutsOnFocusGainedTextField())); 216 227 // Disable some default JTable shortcuts to use JOSM ones (see #5678, #10458) 217 228 for (KeyStroke ks : new KeyStroke[] { … … 442 453 } 443 454 455 private static class OffsetLayerCheckBox extends JCheckBox { 456 OffsetLayerCheckBox() { 457 setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 458 ImageIcon blank = ImageProvider.get("dialogs/layerlist", "blank"); 459 ImageIcon withOffset = ImageProvider.get("dialogs/layerlist", "offset"); 460 setIcon(blank); 461 setSelectedIcon(withOffset); 462 } 463 } 464 444 465 private static class ActiveLayerCellRenderer implements TableCellRenderer { 445 466 private final JCheckBox cb; … … 518 539 cb.setSelected(false); 519 540 cb.setToolTipText(tr("this layer has no native resolution")); 541 } 542 return cb; 543 } 544 } 545 546 private static class OffsetLayerCellRenderer implements TableCellRenderer { 547 private final JCheckBox cb; 548 549 /** 550 * Constructs a new {@code OffsetLayerCellRenderer}. 551 */ 552 OffsetLayerCellRenderer() { 553 cb = new OffsetLayerCheckBox(); 554 cb.setEnabled(false); 555 } 556 557 @Override 558 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 559 Layer layer = (Layer) value; 560 if (layer instanceof AbstractTileSourceLayer<?>) { 561 if (EastNorth.ZERO.equals(((AbstractTileSourceLayer<?>) layer).getDisplaySettings().getDisplacement())) { 562 cb.setSelected(false); 563 cb.setEnabled(false); // TODO: allow reselecting checkbox and thereby setting the old offset again 564 cb.setToolTipText(tr("layer is without a user-defined offset")); 565 } else { 566 cb.setSelected(true); 567 cb.setEnabled(true); 568 cb.setToolTipText(tr("layer has a user-defined offset (click to remove offset)")); 569 } 570 571 } else { 572 cb.setSelected(false); 573 cb.setEnabled(false); 574 cb.setToolTipText(tr("this layer can not have an offset")); 520 575 } 521 576 return cb; … … 781 836 selectionModel.setSelectionInterval(idx, idx); 782 837 ensureSelectedIsVisible(); 838 if (layer instanceof AbstractTileSourceLayer<?>) { 839 ((AbstractTileSourceLayer<?>) layer).getDisplaySettings().addSettingsChangeListener(LayerListDialog.getInstance()); 840 } 783 841 } 784 842 … … 965 1023 @Override 966 1024 public int getColumnCount() { 967 return 4;1025 return 5; 968 1026 } 969 1027 … … 976 1034 case 1: 977 1035 case 2: 978 case 3: return layers.get(row); 1036 case 3: 1037 case 4: return layers.get(row); 979 1038 default: // Do nothing 980 1039 } … … 1005 1064 } else if (l instanceof NativeScaleLayer) { 1006 1065 map.mapView.setNativeScaleLayer((NativeScaleLayer) l); 1007 if (oldLayer != null) {1008 int idx = getLayers().indexOf(oldLayer); 1066 if (oldLayer instanceof Layer) { 1067 int idx = getLayers().indexOf((Layer) oldLayer); 1009 1068 if (idx >= 0) { 1010 1069 fireTableCellUpdated(idx, col); … … 1014 1073 break; 1015 1074 case 2: 1075 // reset layer offset 1076 if (l instanceof AbstractTileSourceLayer<?>) { 1077 AbstractTileSourceLayer<?> abstractTileSourceLayer = (AbstractTileSourceLayer<?>) l; 1078 OffsetBookmark offsetBookmark = abstractTileSourceLayer.getDisplaySettings().getOffsetBookmark(); 1079 if (offsetBookmark != null) { 1080 offsetBookmark.setDisplacement(EastNorth.ZERO); 1081 abstractTileSourceLayer.getDisplaySettings().setOffsetBookmark(offsetBookmark); 1082 } 1083 } 1084 break; 1085 case 3: 1016 1086 l.setVisible((Boolean) value); 1017 1087 break; 1018 case 3:1088 case 4: 1019 1089 l.rename((String) value); 1020 1090 break; … … 1214 1284 return new MultikeyInfo(index, l.getName()); 1215 1285 } 1286 1287 @Override 1288 public void displaySettingsChanged(DisplaySettingsChangeEvent e) { 1289 if ("displacement".equals(e.getChangedSetting())) { 1290 layerList.repaint(); 1291 } 1292 } 1216 1293 }
Note:
See TracChangeset
for help on using the changeset viewer.