Changeset 1817 in josm


Ignore:
Timestamp:
Jul 20, 2009 8:19:22 PM (4 years ago)
Author:
Gubaer
Message:

fixed #3018: NullPointerException when starting JOSM & pressing "C"

File:
1 edited

Legend:

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

    r1814 r1817  
    3939import org.openstreetmap.josm.data.osm.Way; 
    4040import org.openstreetmap.josm.gui.ExtendedDialog; 
     41import org.openstreetmap.josm.gui.layer.Layer; 
     42import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener; 
    4143import org.openstreetmap.josm.tools.GBC; 
    4244import org.openstreetmap.josm.tools.Pair; 
     
    4850 * @author Imi 
    4951 */ 
    50 public class CombineWayAction extends JosmAction implements SelectionChangedListener { 
     52public class CombineWayAction extends JosmAction implements SelectionChangedListener,LayerChangeListener { 
    5153 
    5254    public CombineWayAction() { 
     
    5456                Shortcut.registerShortcut("tools:combineway", tr("Tool: {0}", tr("Combine Way")), KeyEvent.VK_C, Shortcut.GROUP_EDIT), true); 
    5557        DataSet.selListeners.add(this); 
     58        Layer.listeners.add(this); 
     59        refreshEnabled(); 
    5660    } 
    5761 
    5862    public void actionPerformed(ActionEvent event) { 
     63        if (getCurrentDataSet() == null) 
     64            return; 
    5965        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected(); 
    6066        LinkedList<Way> selectedWays = new LinkedList<Way>(); 
     
    298304     */ 
    299305    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) { 
    300         boolean first = false; 
    301         for (OsmPrimitive osm : newSelection) { 
     306        refreshEnabled(); 
     307    } 
     308 
     309    protected void refreshEnabled() { 
     310        if (getCurrentDataSet() == null) { 
     311            setEnabled(false); 
     312            return; 
     313        } 
     314        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected(); 
     315        int numWays = 0; 
     316 
     317        for (OsmPrimitive osm : selection) 
    302318            if (osm instanceof Way) { 
    303                 if (first) { 
    304                     setEnabled(true); 
    305                     return; 
    306                 } 
    307                 first = true; 
    308             } 
    309         } 
    310         setEnabled(false); 
    311     } 
     319                numWays++; 
     320            } 
     321        setEnabled(numWays >= 2); 
     322    } 
     323 
     324 
     325    public void activeLayerChange(Layer oldLayer, Layer newLayer) { 
     326        refreshEnabled(); 
     327    } 
     328 
     329    public void layerAdded(Layer newLayer) { 
     330        refreshEnabled(); 
     331 
     332    } 
     333 
     334    public void layerRemoved(Layer oldLayer) { 
     335        refreshEnabled(); 
     336    } 
     337 
    312338} 
Note: See TracChangeset for help on using the changeset viewer.