Changeset 1807 in josm


Ignore:
Timestamp:
Jul 19, 2009 12:06:29 AM (4 years ago)
Author:
Gubaer
Message:

fixed #2987: Can't add Point

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java

    r1415 r1807  
    1717import org.openstreetmap.josm.data.osm.Node; 
    1818import org.openstreetmap.josm.data.coor.LatLon; 
     19import org.openstreetmap.josm.gui.layer.Layer; 
     20import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener; 
    1921import org.openstreetmap.josm.tools.GBC; 
    2022import org.openstreetmap.josm.tools.Shortcut; 
     
    2426 * and when ok is pressed, a new node is created at the specified position. 
    2527 */ 
    26 public final class AddNodeAction extends JosmAction { 
     28public final class AddNodeAction extends JosmAction implements LayerChangeListener { 
    2729 
    2830    public AddNodeAction() { 
    2931        super(tr("Add Node..."), "addnode", tr("Add a node by entering latitude and longitude."), 
    30         Shortcut.registerShortcut("addnode", tr("Edit: {0}", tr("Add Node...")), KeyEvent.VK_D, Shortcut.GROUP_EDIT, 
    31         Shortcut.SHIFT_DEFAULT), true); 
     32                Shortcut.registerShortcut("addnode", tr("Edit: {0}", tr("Add Node...")), KeyEvent.VK_D, Shortcut.GROUP_EDIT, 
     33                        Shortcut.SHIFT_DEFAULT), true); 
     34        Layer.listeners.add(this); 
     35        refreshEnabled(); 
     36    } 
     37 
     38    protected void refreshEnabled() { 
     39        setEnabled(Main.map != null 
     40                && Main.map.mapView != null 
     41                && Main.map.mapView.getEditLayer() != null); 
    3242    } 
    3343 
    3444    public void actionPerformed(ActionEvent e) { 
     45        // we abort if we are not in the context of an OsmDataLayer 
     46        // 
     47        if (!isEnabled()) 
     48            return; 
     49 
    3550        JPanel p = new JPanel(new GridBagLayout()); 
    3651        p.add(new JLabel("<html>"+ 
     
    5671            try { 
    5772                LatLon ll = new LatLon(Double.parseDouble(lat.getText()), Double.parseDouble(lon.getText())); 
    58                 if (!ll.isOutSideWorld()) nnew = new Node(ll); 
     73                if (!ll.isOutSideWorld()) { 
     74                    nnew = new Node(ll); 
     75                } 
    5976            } catch (Exception ex) { } 
    6077        } 
    6178 
    6279        /* Now execute the commands to add the dupicated contents of the paste buffer to the map */ 
    63  
    6480        Main.main.undoRedo.add(new AddCommand(nnew)); 
    6581        Main.ds.setSelected(nnew); 
    6682        Main.map.mapView.repaint(); 
    6783    } 
     84 
     85    public void activeLayerChange(Layer oldLayer, Layer newLayer) { 
     86        refreshEnabled(); 
     87    } 
     88 
     89    public void layerAdded(Layer newLayer) { 
     90        refreshEnabled(); 
     91 
     92    } 
     93 
     94    public void layerRemoved(Layer oldLayer) { 
     95        refreshEnabled(); 
     96    } 
    6897} 
Note: See TracChangeset for help on using the changeset viewer.