Ignore:
Timestamp:
2014-06-06T10:10:31+02:00 (10 years ago)
Author:
akks
Message:

see #10104: refactor key press/release detection introducing Main.map.keyDetector

File:
1 edited

Legend:

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

    r7005 r7217  
    66import static org.openstreetmap.josm.tools.I18n.tr;
    77
    8 import java.awt.AWTEvent;
    98import java.awt.Color;
    109import java.awt.Cursor;
     
    1211import java.awt.Point;
    1312import java.awt.Stroke;
    14 import java.awt.Toolkit;
    15 import java.awt.event.AWTEventListener;
    16 import java.awt.event.InputEvent;
    1713import java.awt.event.KeyEvent;
    1814import java.awt.event.MouseEvent;
     
    4137import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    4238import org.openstreetmap.josm.gui.util.GuiHelper;
     39import org.openstreetmap.josm.gui.util.ModifierListener;
    4340import org.openstreetmap.josm.tools.Geometry;
    4441import org.openstreetmap.josm.tools.ImageProvider;
     
    8481 * @author Ole Jørgen Brønner (olejorgenb)
    8582 */
    86 public class ParallelWayAction extends MapMode implements AWTEventListener, MapViewPaintable, PreferenceChangedListener {
     83public class ParallelWayAction extends MapMode implements ModifierListener, MapViewPaintable, PreferenceChangedListener {
    8784
    8885    private enum Mode {
     
    161158
    162159        //// Needed to update the mouse cursor if modifiers are changed when the mouse is motionless
    163         try {
    164             Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
    165         } catch (SecurityException ex) {
    166             Main.warn(ex);
    167         }
     160        Main.map.keyDetector.addModifierListener(this);
    168161        sourceWays = new LinkedHashSet<>(getCurrentDataSet().getSelectedWays());
    169162        for (Way w : sourceWays) {
     
    181174        Main.map.statusLine.setDist(-1);
    182175        Main.map.statusLine.repaint();
    183         try {
    184             Toolkit.getDefaultToolkit().removeAWTEventListener(this);
    185         } catch (SecurityException ex) {
    186             Main.warn(ex);
    187         }
     176        Main.map.keyDetector.removeModifierListener(this);
    188177        removeWayHighlighting(sourceWays);
    189178        pWays = null;
     
    238227
    239228    @Override
    240     public void eventDispatched(AWTEvent e) {
     229    public void modifiersChanged(int modifiers) {
    241230        if (Main.map == null || mv == null || !mv.isActiveLayerDrawable())
    242231            return;
    243232
    244233        // Should only get InputEvents due to the mask in enterMode
    245         if (updateModifiersState((InputEvent) e)) {
     234        if (updateModifiersState(modifiers)) {
    246235            updateStatusLine();
    247236            updateCursor();
     
    249238    }
    250239
    251     private boolean updateModifiersState(InputEvent e) {
     240    private boolean updateModifiersState(int modifiers) {
    252241        boolean oldAlt = alt, oldShift = shift, oldCtrl = ctrl;
    253         updateKeyModifiers(e);
     242        updateKeyModifiers(modifiers);
    254243        return (oldAlt != alt || oldShift != shift || oldCtrl != ctrl);
    255244    }
     
    302291    public void mousePressed(MouseEvent e) {
    303292        requestFocusInMapView();
    304         updateModifiersState(e);
     293        updateModifiersState(e.getModifiers());
    305294        // Other buttons are off limit, but we still get events.
    306295        if (e.getButton() != MouseEvent.BUTTON1)
     
    327316    @Override
    328317    public void mouseReleased(MouseEvent e) {
    329         updateModifiersState(e);
     318        updateModifiersState(e.getModifiers());
    330319        // Other buttons are off limit, but we still get events.
    331320        if (e.getButton() != MouseEvent.BUTTON1)
     
    382371            return;
    383372
    384         boolean modifiersChanged = updateModifiersState(e);
     373        boolean modifiersChanged = updateModifiersState(e.getModifiers());
    385374        updateFlagsChangeableAlways();
    386375
Note: See TracChangeset for help on using the changeset viewer.