Ignore:
Timestamp:
2013-02-18T18:01:31+01:00 (12 years ago)
Author:
akks
Message:

ImageryAdjust: Adjust while holding shortcut key

Location:
applications/editors/josm/plugins/imageryadjust/src
Files:
2 added
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified applications/editors/josm/plugins/imageryadjust/src/imageryadjust/ImageryAdjustMapMode.java

    r27852 r29261  
    2121import org.openstreetmap.josm.tools.ImageProvider;
    2222import org.openstreetmap.josm.tools.Shortcut;
    23 
    24 
    25 public class ImageryAdjustMapMode extends MapMode implements MouseListener, MouseMotionListener, AWTEventListener, MapFrame.MapModeChangeListener{
     23import utils.TimedKeyReleaseListener;
     24
     25
     26public class ImageryAdjustMapMode extends MapMode implements MouseListener, MouseMotionListener, MapFrame.MapModeChangeListener{
    2627    boolean mouseDown;
    2728    EastNorth prevEastNorth;
     
    2930    private MapMode oldMapMode;
    3031
    31     private final TreeSet<Integer> set = new TreeSet<Integer>();
    32     private Timer timer;
    33     private KeyEvent releaseEvent;
    3432   
    3533    public ImageryAdjustMapMode(MapFrame mapFrame) {
     
    5856   
    5957   
    60    
     58    TimedKeyReleaseListener listener;
     59           
    6160    @Override public void enterMode() {
    6261        super.enterMode();
     
    7675            adjustingLayer.setVisible(true);
    7776        }
    78        Main.map.mapView.addMouseListener(this);
     77        Main.map.mapView.addMouseListener(this);
    7978        Main.map.mapView.addMouseMotionListener(this);
    80         timer = new Timer(0, new ActionListener() {
    81             @Override
    82             public void actionPerformed(ActionEvent ae) {
    83                  timer.stop();
    84                  if (set.remove(releaseEvent.getKeyCode())) {
    85                   doKeyReleaseEvent(releaseEvent);
    86                  }
     79        listener = new TimedKeyReleaseListener() {
     80                @Override
     81                protected void doKeyReleaseEvent(KeyEvent evt) {
     82                    if (releaseEvent.getKeyCode() == getShortcut().getKeyStroke().getKeyCode()) {
     83                    if (oldMapMode!=null && !(oldMapMode instanceof ImageryAdjustMapMode))
     84                    Main.map.selectMapMode(oldMapMode);
     85                }
    8786            }
    88 
    89         });
    90        
    91         try {
    92             Toolkit.getDefaultToolkit().addAWTEventListener(this,
    93                     AWTEvent.KEY_EVENT_MASK);
    94         } catch (SecurityException ex) {
    95         }
    96        
    97        
     87        };
    9888    }
    9989
     
    10393        Main.map.mapView.removeMouseMotionListener(this);
    10494        adjustingLayer = null;
    105         try {
    106             Toolkit.getDefaultToolkit().removeAWTEventListener(this);
    107         } catch (SecurityException ex) {
    108         }
     95        listener.stop();
    10996    }
    11097
     
    137124    }
    138125   
    139     private void doKeyEvent(KeyEvent keyEvent) {
    140     }
    141 
    142     private void doKeyReleaseEvent(KeyEvent releaseEvent) {
    143         if (releaseEvent.getKeyCode() == getShortcut().getKeyStroke().getKeyCode()) {
    144             if (oldMapMode!=null && !(oldMapMode instanceof ImageryAdjustMapMode))
    145             Main.map.selectMapMode(oldMapMode);
    146         }
    147     }
    148 
    149126    @Override public boolean layerIsSupported(Layer l) {
    150127        //return hasImageryLayersToAdjust();
     
    153130
    154131    @Override
    155     public void eventDispatched(AWTEvent event) {
    156         if (event instanceof KeyEvent) {
    157         KeyEvent e=(KeyEvent) event;
    158        
    159         if (event.getID() == KeyEvent.KEY_PRESSED) {
    160              if (timer.isRunning()) {
    161                   timer.stop();
    162                 } else {
    163                   if (set.add((e.getKeyCode()))) doKeyEvent((KeyEvent) event);
    164                 }
    165         }
    166         if (event.getID() == KeyEvent.KEY_RELEASED) {
    167             if (timer.isRunning()) {
    168               timer.stop();
    169                if (set.remove(e.getKeyCode())) doKeyReleaseEvent(e);
    170             } else {
    171               releaseEvent = e;
    172               timer.restart();
    173             }
    174         }
    175         }
    176     }
    177 
    178     @Override
    179132    public void mapModeChange(MapMode oldMapMode, MapMode newMapMode) {
    180133        this.oldMapMode = oldMapMode;
    181134    }
    182 
    183135
    184136    /**
Note: See TracChangeset for help on using the changeset viewer.