Changeset 3722 in josm


Ignore:
Timestamp:
Dec 14, 2010 12:19:38 PM (2 years ago)
Author:
Upliner
Message:

Allow to adjust imagery offset with arrow keys, add explaination to the adjust dialog

File:
1 edited

Legend:

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

    r3720 r3722  
    44import static org.openstreetmap.josm.tools.I18n.tr; 
    55 
     6import java.awt.AWTEvent; 
    67import java.awt.Cursor; 
    78import java.awt.GridBagLayout; 
    89import java.awt.Insets; 
     10import java.awt.Toolkit; 
     11import java.awt.event.AWTEventListener; 
    912import java.awt.event.ActionEvent; 
     13import java.awt.event.KeyEvent; 
    1014import java.awt.event.MouseEvent; 
    1115import java.awt.event.MouseListener; 
     
    2529import org.openstreetmap.josm.data.imagery.OffsetBookmark; 
    2630import org.openstreetmap.josm.gui.ExtendedDialog; 
     31import org.openstreetmap.josm.gui.JMultilineLabel; 
    2732import org.openstreetmap.josm.gui.layer.ImageryLayer; 
    2833import org.openstreetmap.josm.tools.GBC; 
     
    3035 
    3136 
    32 public class ImageryAdjustAction extends MapMode implements MouseListener, MouseMotionListener{ 
     37public class ImageryAdjustAction extends MapMode implements MouseListener, MouseMotionListener, AWTEventListener{ 
    3338    static ImageryOffsetDialog offsetDialog; 
    3439    static Cursor cursor = ImageProvider.getCursor("normal", "move"); 
     
    5863        oldDx = layer.getDx(); 
    5964        oldDy = layer.getDy(); 
     65        try { 
     66            Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK); 
     67        } catch (SecurityException ex) { 
     68        } 
    6069        offsetDialog = new ImageryOffsetDialog(); 
    6170        offsetDialog.setVisible(true); 
     
    6978            offsetDialog = null; 
    7079        } 
     80        try { 
     81            Toolkit.getDefaultToolkit().removeAWTEventListener(this); 
     82        } catch (SecurityException ex) { 
     83        } 
    7184        Main.map.mapView.removeMouseListener(this); 
    7285        Main.map.mapView.removeMouseMotionListener(this); 
     86    } 
     87 
     88    @Override 
     89    public void eventDispatched(AWTEvent event) { 
     90        if (!(event instanceof KeyEvent)) return; 
     91        if (event.getID() != KeyEvent.KEY_PRESSED) return; 
     92        if (layer == null) return; 
     93        KeyEvent kev = (KeyEvent)event; 
     94        double dx = 0, dy = 0; 
     95        switch (kev.getKeyCode()) { 
     96        case KeyEvent.VK_UP : dy = +1; break; 
     97        case KeyEvent.VK_DOWN : dy = -1; break; 
     98        case KeyEvent.VK_LEFT : dx = -1; break; 
     99        case KeyEvent.VK_RIGHT : dx = +1; break; 
     100        } 
     101        if (dx != 0 || dy != 0) { 
     102            double ppd = layer.getPPD(); 
     103            layer.displace(dx / ppd, dy / ppd); 
     104            if (offsetDialog != null) { 
     105                offsetDialog.updateOffset(); 
     106            } 
     107            kev.consume(); 
     108            Main.map.repaint(); 
     109        } 
    73110    } 
    74111 
     
    111148        super.actionPerformed(e); 
    112149    } 
    113  
    114150 
    115151    class ImageryOffsetDialog extends ExtendedDialog implements PropertyChangeListener { 
     
    124160                    false); 
    125161            setButtonIcons(new String[] { "ok", "cancel" }); 
    126             contentInsets = new Insets(15, 15, 5, 15); 
    127             JPanel pnl = new JPanel(); 
    128             pnl.setLayout(new GridBagLayout()); 
     162            contentInsets = new Insets(10, 15, 5, 15); 
     163            JPanel pnl = new JPanel(new GridBagLayout()); 
     164            pnl.add(new JMultilineLabel(tr("Use arrow keys or drag the imagery layer with mouse to adjust the imagery offset.\n" + 
     165                    "You can also enter east and north offset in the {0} coordinates.\n" + 
     166                    "If you want to save the offset as bookmark, enter the bookmark name below",Main.proj.toString())), GBC.eop()); 
    129167            pnl.add(new JLabel(tr("Easting") + ": "),GBC.std()); 
    130168            pnl.add(easting,GBC.std().fill(GBC.HORIZONTAL).insets(0, 0, 5, 0)); 
    131169            pnl.add(new JLabel(tr("Northing") + ": "),GBC.std()); 
    132             pnl.add(northing,GBC.eol()); 
     170            pnl.add(northing,GBC.eol().fill(GBC.HORIZONTAL)); 
    133171            pnl.add(new JLabel(tr("Bookmark name: ")),GBC.eol().insets(0,5,0,0)); 
    134172            pnl.add(tBookmarkName,GBC.eol().fill(GBC.HORIZONTAL)); 
Note: See TracChangeset for help on using the changeset viewer.