Changeset 1817 in josm for trunk


Ignore:
Timestamp:
2009-07-20T20:19:22+02:00 (15 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.