Changeset 12517 in josm


Ignore:
Timestamp:
2017-07-26T23:18:38+02:00 (2 years ago)
Author:
Don-vip
Message:

see #11924 - use extended event modifiers, deprecate old methods - see https://bugs.openjdk.java.net/browse/JDK-8143077

Location:
trunk/src/org/openstreetmap/josm
Files:
1 added
9 edited

Legend:

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

    r12504 r12517  
    2626import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    2727import org.openstreetmap.josm.gui.util.HighlightHelper;
    28 import org.openstreetmap.josm.gui.util.ModifierListener;
     28import org.openstreetmap.josm.gui.util.ModifierExListener;
    2929import org.openstreetmap.josm.tools.CheckParameterUtil;
    3030import org.openstreetmap.josm.tools.ImageProvider;
     
    4545 * @author imi
    4646 */
    47 public class DeleteAction extends MapMode implements ModifierListener {
     47public class DeleteAction extends MapMode implements ModifierExListener {
    4848    // Cache previous mouse event (needed when only the modifier keys are pressed but the mouse isn't moved)
    4949    private MouseEvent oldEvent;
     
    113113        Main.map.mapView.addMouseMotionListener(this);
    114114        // This is required to update the cursors when ctrl/shift/alt is pressed
    115         Main.map.keyDetector.addModifierListener(this);
     115        Main.map.keyDetector.addModifierExListener(this);
    116116    }
    117117
     
    121121        Main.map.mapView.removeMouseListener(this);
    122122        Main.map.mapView.removeMouseMotionListener(this);
    123         Main.map.keyDetector.removeModifierListener(this);
     123        Main.map.keyDetector.removeModifierExListener(this);
    124124        removeHighlighting();
    125125    }
     
    188188     * segments for the given pointer position (via MouseEvent) and modifiers.
    189189     * @param e current mouse event
    190      * @param modifiers mouse modifiers, not necessarly taken from the given mouse event
     190     * @param modifiers extended mouse modifiers, not necessarly taken from the given mouse event
    191191     */
    192192    private void addHighlighting(MouseEvent e, int modifiers) {
     
    242242     *
    243243     * @param e current mouse event
    244      * @param modifiers mouse modifiers, not necessarly taken from the given mouse event
     244     * @param modifiers extended mouse modifiers, not necessarly taken from the given mouse event
    245245     */
    246246    private void updateCursor(MouseEvent e, int modifiers) {
     
    278278     */
    279279    private void giveUserFeedback(MouseEvent e) {
    280         giveUserFeedback(e, e.getModifiers());
     280        giveUserFeedback(e, e.getModifiersEx());
    281281    }
    282282
     
    359359
    360360    private DeleteParameters getDeleteParameters(MouseEvent e, int modifiers) {
    361         updateKeyModifiers(modifiers);
     361        updateKeyModifiersEx(modifiers);
    362362
    363363        DeleteParameters result = new DeleteParameters();
     
    419419     */
    420420    @Override
    421     public void modifiersChanged(int modifiers) {
     421    public void modifiersExChanged(int modifiers) {
    422422        if (oldEvent == null)
    423423            return;
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

    r12425 r12517  
    6363import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    6464import org.openstreetmap.josm.gui.util.KeyPressReleaseListener;
    65 import org.openstreetmap.josm.gui.util.ModifierListener;
     65import org.openstreetmap.josm.gui.util.ModifierExListener;
    6666import org.openstreetmap.josm.tools.Geometry;
    6767import org.openstreetmap.josm.tools.ImageProvider;
     
    7373 * Mapmode to add nodes, create and extend ways.
    7474 */
    75 public class DrawAction extends MapMode implements MapViewPaintable, DataSelectionListener, KeyPressReleaseListener, ModifierListener {
     75public class DrawAction extends MapMode implements MapViewPaintable, DataSelectionListener, KeyPressReleaseListener, ModifierExListener {
    7676
    7777    /**
     
    279279
    280280        Main.map.keyDetector.addKeyListener(this);
    281         Main.map.keyDetector.addModifierListener(this);
     281        Main.map.keyDetector.addModifierExListener(this);
    282282        ignoreNextKeyRelease = true;
    283283    }
     
    299299        removeHighlighting();
    300300        Main.map.keyDetector.removeKeyListener(this);
    301         Main.map.keyDetector.removeModifierListener(this);
     301        Main.map.keyDetector.removeModifierExListener(this);
    302302    }
    303303
     
    306306     */
    307307    @Override
    308     public void modifiersChanged(int modifiers) {
     308    public void modifiersExChanged(int modifiers) {
    309309        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable())
    310310            return;
    311         updateKeyModifiers(modifiers);
     311        updateKeyModifiersEx(modifiers);
    312312        computeHelperLine();
    313313        addHighlighting();
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java

    r12512 r12517  
    5454import org.openstreetmap.josm.gui.util.GuiHelper;
    5555import org.openstreetmap.josm.gui.util.KeyPressReleaseListener;
    56 import org.openstreetmap.josm.gui.util.ModifierListener;
     56import org.openstreetmap.josm.gui.util.ModifierExListener;
    5757import org.openstreetmap.josm.tools.Geometry;
    5858import org.openstreetmap.josm.tools.ImageProvider;
     
    6262 * Makes a rectangle from a line, or modifies a rectangle.
    6363 */
    64 public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPressReleaseListener, ModifierListener {
     64public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPressReleaseListener, ModifierExListener {
    6565
    6666    enum Mode { extrude, translate, select, create_new, translate_node }
     
    296296        ignoreNextKeyRelease = true;
    297297        Main.map.keyDetector.addKeyListener(this);
    298         Main.map.keyDetector.addModifierListener(this);
     298        Main.map.keyDetector.addModifierExListener(this);
    299299    }
    300300
     
    325325        dualAlignCheckboxMenuItem.getAction().setEnabled(false);
    326326        Main.map.keyDetector.removeKeyListener(this);
    327         Main.map.keyDetector.removeModifierListener(this);
     327        Main.map.keyDetector.removeModifierExListener(this);
    328328        super.exitMode();
    329329    }
     
    337337     */
    338338    @Override
    339     public void modifiersChanged(int modifiers) {
     339    public void modifiersExChanged(int modifiers) {
    340340        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable())
    341341            return;
    342         updateKeyModifiers(modifiers);
     342        updateKeyModifiersEx(modifiers);
    343343        if (mode == Mode.select) {
    344344            Main.map.mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java

    r11978 r12517  
    4646import org.openstreetmap.josm.gui.layer.Layer;
    4747import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    48 import org.openstreetmap.josm.gui.util.ModifierListener;
     48import org.openstreetmap.josm.gui.util.ModifierExListener;
    4949import org.openstreetmap.josm.tools.ImageProvider;
    5050import org.openstreetmap.josm.tools.Pair;
     
    5555 */
    5656public class ImproveWayAccuracyAction extends MapMode implements
    57         SelectionChangedListener, ModifierListener {
     57        SelectionChangedListener, ModifierExListener {
    5858
    5959    private static final String CROSSHAIR = "crosshair";
     
    150150        DataSet.addSelectionListener(this);
    151151
    152         Main.map.keyDetector.addModifierListener(this);
     152        Main.map.keyDetector.addModifierExListener(this);
    153153    }
    154154
     
    167167        DataSet.removeSelectionListener(this);
    168168
    169         Main.map.keyDetector.removeModifierListener(this);
     169        Main.map.keyDetector.removeModifierExListener(this);
    170170        temporaryLayer.invalidate();
    171171    }
     
    344344    // -------------------------------------------------------------------------
    345345    @Override
    346     public void modifiersChanged(int modifiers) {
     346    public void modifiersExChanged(int modifiers) {
    347347        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable()) {
    348348            return;
    349349        }
    350         updateKeyModifiers(modifiers);
     350        updateKeyModifiersEx(modifiers);
    351351        updateCursorDependentObjectsIfNeeded();
    352352        updateCursor();
  • trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java

    r12483 r12517  
    151151
    152152    protected void updateKeyModifiers(InputEvent e) {
    153         updateKeyModifiers(e.getModifiers());
     153        updateKeyModifiersEx(e.getModifiersEx());
    154154    }
    155155
    156156    protected void updateKeyModifiers(MouseEvent e) {
    157         updateKeyModifiers(e.getModifiers());
    158     }
    159 
     157        updateKeyModifiersEx(e.getModifiersEx());
     158    }
     159
     160    /**
     161     * Update internal ctrl, alt, shift mask from given modifiers mask.
     162     * @param modifiers event modifiers mask
     163     * @deprecated use {@link #updateKeyModifiersEx} instead
     164     */
     165    @Deprecated
    160166    protected void updateKeyModifiers(int modifiers) {
    161167        ctrl = (modifiers & ActionEvent.CTRL_MASK) != 0;
    162168        alt = (modifiers & (ActionEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK)) != 0;
    163169        shift = (modifiers & ActionEvent.SHIFT_MASK) != 0;
     170    }
     171
     172    /**
     173     * Update internal ctrl, alt, shift mask from given extended modifiers mask.
     174     * @param modifiers event extended modifiers mask
     175     * @since 12516
     176     */
     177    protected void updateKeyModifiersEx(int modifiers) {
     178        ctrl = (modifiers & InputEvent.CTRL_DOWN_MASK) != 0;
     179        alt = (modifiers & (InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK)) != 0;
     180        shift = (modifiers & InputEvent.SHIFT_DOWN_MASK) != 0;
    164181    }
    165182
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java

    r12108 r12517  
    4747import org.openstreetmap.josm.gui.layer.Layer;
    4848import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    49 import org.openstreetmap.josm.gui.util.ModifierListener;
     49import org.openstreetmap.josm.gui.util.ModifierExListener;
    5050import org.openstreetmap.josm.tools.CheckParameterUtil;
    5151import org.openstreetmap.josm.tools.Geometry;
     
    9090 * @author Ole Jørgen Brønner (olejorgenb)
    9191 */
    92 public class ParallelWayAction extends MapMode implements ModifierListener {
     92public class ParallelWayAction extends MapMode implements ModifierExListener {
    9393
    9494    private static final CachingProperty<BasicStroke> HELPER_LINE_STROKE = new StrokeProperty(prefKey("stroke.hepler-line"), "1").cached();
     
    173173
    174174        //// Needed to update the mouse cursor if modifiers are changed when the mouse is motionless
    175         Main.map.keyDetector.addModifierListener(this);
     175        Main.map.keyDetector.addModifierExListener(this);
    176176        sourceWays = new LinkedHashSet<>(getLayerManager().getEditDataSet().getSelectedWays());
    177177        for (Way w : sourceWays) {
     
    188188        Main.map.statusLine.setDist(-1);
    189189        Main.map.statusLine.repaint();
    190         Main.map.keyDetector.removeModifierListener(this);
     190        Main.map.keyDetector.removeModifierExListener(this);
    191191        removeWayHighlighting(sourceWays);
    192192        pWays = null;
     
    216216
    217217    @Override
    218     public void modifiersChanged(int modifiers) {
     218    public void modifiersExChanged(int modifiers) {
    219219        if (Main.map == null || mv == null || !mv.isActiveLayerDrawable())
    220220            return;
     
    229229    private boolean updateModifiersState(int modifiers) {
    230230        boolean oldAlt = alt, oldShift = shift, oldCtrl = ctrl;
    231         updateKeyModifiers(modifiers);
     231        updateKeyModifiersEx(modifiers);
    232232        return oldAlt != alt || oldShift != shift || oldCtrl != ctrl;
    233233    }
     
    275275    public void mousePressed(MouseEvent e) {
    276276        requestFocusInMapView();
    277         updateModifiersState(e.getModifiers());
     277        updateModifiersState(e.getModifiersEx());
    278278        // Other buttons are off limit, but we still get events.
    279279        if (e.getButton() != MouseEvent.BUTTON1)
     
    300300    @Override
    301301    public void mouseReleased(MouseEvent e) {
    302         updateModifiersState(e.getModifiers());
     302        updateModifiersState(e.getModifiersEx());
    303303        // Other buttons are off limit, but we still get events.
    304304        if (e.getButton() != MouseEvent.BUTTON1)
     
    355355            return;
    356356
    357         boolean modifiersChanged = updateModifiersState(e.getModifiers());
     357        boolean modifiersChanged = updateModifiersState(e.getModifiersEx());
    358358        updateFlagsChangeableAlways();
    359359
  • trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

    r12316 r12517  
    4949import org.openstreetmap.josm.gui.util.GuiHelper;
    5050import org.openstreetmap.josm.gui.util.KeyPressReleaseListener;
    51 import org.openstreetmap.josm.gui.util.ModifierListener;
     51import org.openstreetmap.josm.gui.util.ModifierExListener;
    5252import org.openstreetmap.josm.tools.ImageProvider;
    5353import org.openstreetmap.josm.tools.Pair;
     
    6666 * feature "selection remove" is disabled on this platform.
    6767 */
    68 public class SelectAction extends MapMode implements ModifierListener, KeyPressReleaseListener, SelectionEnded {
     68public class SelectAction extends MapMode implements ModifierExListener, KeyPressReleaseListener, SelectionEnded {
    6969
    7070    private static final String NORMAL = "normal";
     
    208208        virtualManager.init();
    209209        // This is required to update the cursors when ctrl/shift/alt is pressed
    210         Main.map.keyDetector.addModifierListener(this);
     210        Main.map.keyDetector.addModifierExListener(this);
    211211        Main.map.keyDetector.addKeyListener(this);
    212212    }
     
    219219        mv.removeMouseMotionListener(this);
    220220        mv.setVirtualNodesEnabled(false);
    221         Main.map.keyDetector.removeModifierListener(this);
     221        Main.map.keyDetector.removeModifierExListener(this);
    222222        Main.map.keyDetector.removeKeyListener(this);
    223223        removeHighlighting();
     
    225225
    226226    @Override
    227     public void modifiersChanged(int modifiers) {
     227    public void modifiersExChanged(int modifiers) {
    228228        if (!Main.isDisplayingMapView() || oldEvent == null) return;
    229229        if (giveUserFeedback(oldEvent, modifiers)) {
     
    239239     */
    240240    private boolean giveUserFeedback(MouseEvent e) {
    241         return giveUserFeedback(e, e.getModifiers());
     241        return giveUserFeedback(e, e.getModifiersEx());
    242242    }
    243243
     
    246246     * Please note that the highlighting for merging while moving is handled via mouseDragged.
    247247     * @param e {@code MouseEvent} which should be used as base for the feedback
    248      * @param modifiers define custom keyboard modifiers if the ones from MouseEvent are outdated or similar
     248     * @param modifiers define custom keyboard extended modifiers if the ones from MouseEvent are outdated or similar
    249249     * @return {@code true} if repaint is required
    250250     */
     
    253253                mv.getNearestNodeOrWay(e.getPoint(), mv.isSelectablePredicate, true));
    254254
    255         updateKeyModifiers(modifiers);
     255        updateKeyModifiersEx(modifiers);
    256256        determineMapMode(!c.isEmpty());
    257257
  • trunk/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java

    r11386 r12517  
    3535
    3636    private final List<KeyPressReleaseListener> keyListeners = new CopyOnWriteArrayList<>();
     37    @Deprecated
    3738    private final List<ModifierListener> modifierListeners = new CopyOnWriteArrayList<>();
     39    private final List<ModifierExListener> modifierExListeners = new CopyOnWriteArrayList<>();
    3840    private int previousModifiers;
     41    private int previousModifiersEx;
    3942
    4043    private boolean enabled = true;
     
    5154     * Adds an object that wants to receive key modifier changed events.
    5255     * @param l listener to add
    53      */
     56     * @deprecated use {@link #addModifierExListener} instead
     57     */
     58    @Deprecated
    5459    public void addModifierListener(ModifierListener l) {
    5560        modifierListeners.add(l);
     
    5762
    5863    /**
     64     * Adds an object that wants to receive extended key modifier changed events.
     65     * @param l listener to add
     66     * @since 12516
     67     */
     68    public void addModifierExListener(ModifierExListener l) {
     69        modifierExListeners.add(l);
     70    }
     71
     72    /**
    5973     * Removes the listener.
    6074     * @param l listener to remove
     
    6781     * Removes the key modifier listener.
    6882     * @param l listener to remove
    69      */
     83     * @deprecated use {@link #removeModifierExListener} instead
     84     */
     85    @Deprecated
    7086    public void removeModifierListener(ModifierListener l) {
    7187        modifierListeners.remove(l);
     88    }
     89
     90    /**
     91     * Removes the extended key modifier listener.
     92     * @param l listener to remove
     93     * @since 12516
     94     */
     95    public void removeModifierExListener(ModifierExListener l) {
     96        modifierExListeners.remove(l);
    7297    }
    7398
     
    105130        if (!modifierListeners.isEmpty()) {
    106131            Main.warn(tr("Some of the key modifier listeners forgot to remove themselves: {0}"), modifierListeners.toString());
     132        }
     133        if (!modifierExListeners.isEmpty()) {
     134            Main.warn(tr("Some of the key modifier listeners forgot to remove themselves: {0}"), modifierExListeners.toString());
    107135        }
    108136        try {
     
    147175
    148176    @Override
     177    @SuppressWarnings("deprecation")
    149178    public void eventDispatched(AWTEvent e) {
    150179        if (!(e instanceof KeyEvent)) {
     
    162191        }
    163192
     193        // check if ctrl, alt, shift extended modifiers are changed
     194        int modifEx = ke.getModifiersEx();
     195        if (previousModifiersEx != modifEx) {
     196            previousModifiersEx = modifEx;
     197            for (ModifierExListener m: modifierExListeners) {
     198                m.modifiersExChanged(modifEx);
     199            }
     200        }
     201
    164202        processKeyEvent(ke);
    165203    }
  • trunk/src/org/openstreetmap/josm/gui/util/ModifierListener.java

    r12304 r12517  
    66 * @since 7217
    77 * @since 10600 (functional interface)
     8 * @deprecated use ModifierExListener instead
    89 */
     10@Deprecated
    911@FunctionalInterface
    1012public interface ModifierListener {
Note: See TracChangeset for help on using the changeset viewer.