Ticket #2127: MakeToolsDisabledOnNonSupportedLayers.patch
File MakeToolsDisabledOnNonSupportedLayers.patch, 6.5 KB (added by , 16 years ago) |
---|
-
src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
14 14 import org.openstreetmap.josm.data.osm.OsmPrimitive; 15 15 import org.openstreetmap.josm.data.osm.WaySegment; 16 16 import org.openstreetmap.josm.gui.MapFrame; 17 import org.openstreetmap.josm.gui.layer.Layer; 18 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 17 19 import org.openstreetmap.josm.tools.ImageProvider; 18 20 import org.openstreetmap.josm.tools.Shortcut; 19 21 … … 128 130 @Override public String getModeHelpText() { 129 131 return tr("Click to delete. Shift: delete way segment. Alt: don't delete unused nodes when deleting a way. Ctrl: delete referring objects."); 130 132 } 133 134 @Override public boolean layerIsSupported(Layer l) { 135 return l instanceof OsmDataLayer; 136 } 131 137 } -
src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
49 49 import org.openstreetmap.josm.gui.MapFrame; 50 50 import org.openstreetmap.josm.gui.MapView; 51 51 import org.openstreetmap.josm.gui.layer.MapViewPaintable; 52 import org.openstreetmap.josm.gui.layer.Layer; 53 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 52 54 import org.openstreetmap.josm.tools.ImageProvider; 53 55 import org.openstreetmap.josm.tools.Pair; 54 56 import org.openstreetmap.josm.tools.Shortcut; … … 646 648 //rv.append(tr("Click to add a new node. Ctrl: no node re-use/auto-insert. Shift: no auto-connect. Alt: new way")); 647 649 return rv.toString(); 648 650 } 651 652 @Override public boolean layerIsSupported(Layer l) { 653 return l instanceof OsmDataLayer; 654 } 649 655 } -
src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
28 28 import org.openstreetmap.josm.gui.MapFrame; 29 29 import org.openstreetmap.josm.gui.MapView; 30 30 import org.openstreetmap.josm.gui.layer.MapViewPaintable; 31 import org.openstreetmap.josm.gui.layer.Layer; 32 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 31 33 import org.openstreetmap.josm.tools.ImageProvider; 32 34 import org.openstreetmap.josm.tools.Shortcut; 33 35 … … 256 258 return tr("Drag a way segment to make a rectangle."); 257 259 } 258 260 } 261 262 @Override public boolean layerIsSupported(Layer l) { 263 return l instanceof OsmDataLayer; 264 } 259 265 } -
src/org/openstreetmap/josm/actions/mapmode/MapMode.java
9 9 10 10 import org.openstreetmap.josm.Main; 11 11 import org.openstreetmap.josm.actions.JosmAction; 12 import org.openstreetmap.josm.gui.layer.Layer; 12 13 import org.openstreetmap.josm.gui.MapFrame; 13 14 import org.openstreetmap.josm.tools.ImageProvider; 14 15 import org.openstreetmap.josm.tools.Shortcut; … … 70 71 if (Main.map != null) 71 72 Main.map.selectMapMode(this); 72 73 } 74 75 // By default, all tools will work with all layers. Can be overwritten to require 76 // a special type of layer 77 public boolean layerIsSupported(Layer l) { 78 return true; 79 } 73 80 74 81 public void mouseReleased(MouseEvent e) {} 75 82 public void mouseExited(MouseEvent e) {} -
src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
31 31 import org.openstreetmap.josm.data.osm.WaySegment; 32 32 import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor; 33 33 import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor; 34 import org.openstreetmap.josm.gui.layer.Layer; 35 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 34 36 import org.openstreetmap.josm.gui.MapFrame; 35 37 import org.openstreetmap.josm.gui.MapView; 36 38 import org.openstreetmap.josm.gui.SelectionManager; … … 394 396 return tr("Move objects by dragging; Shift to add to selection (Ctrl to remove); Shift-Ctrl to rotate selected; or change selection"); 395 397 } 396 398 } 399 400 @Override public boolean layerIsSupported(Layer l) { 401 return l instanceof OsmDataLayer; 402 } 397 403 } -
src/org/openstreetmap/josm/gui/MapView.java
14 14 import java.awt.event.ComponentEvent; 15 15 import java.awt.image.BufferedImage; 16 16 import java.util.ArrayList; 17 import java.util.Enumeration; 17 18 import java.util.Collection; 18 19 import java.util.Collections; 19 20 import java.util.LinkedList; 20 21 22 import javax.swing.AbstractButton; 21 23 import javax.swing.JComponent; 22 24 import javax.swing.JOptionPane; 23 25 24 26 import org.openstreetmap.josm.Main; 25 27 import org.openstreetmap.josm.actions.AutoScaleAction; 26 28 import org.openstreetmap.josm.actions.JosmAction; 29 import org.openstreetmap.josm.actions.mapmode.MapMode; 27 30 import org.openstreetmap.josm.actions.MoveAction; 28 31 import org.openstreetmap.josm.data.Bounds; 29 32 import org.openstreetmap.josm.data.SelectionChangedListener; … … 356 359 for (Layer.LayerChangeListener l : Layer.listeners) 357 360 l.activeLayerChange(old, layer); 358 361 } 362 363 /* This only makes the buttons look disabled. Disabling the actions as well requires 364 * the user to re-select the tool after i.e. moving a layer. While testing I found 365 * that I switch layers and actions at the same time and it was annoying to mind the 366 * order. This way it works as visual clue for new users */ 367 for (Enumeration e = Main.map.toolGroup.getElements() ; e.hasMoreElements() ;) { 368 AbstractButton x=(AbstractButton)e.nextElement(); 369 x.setEnabled(((MapMode)x.getAction()).layerIsSupported(layer)); 370 } 359 371 repaint(); 360 372 } 361 373