Changeset 24672 in osm for applications/editors/josm


Ignore:
Timestamp:
2010-12-09T23:04:59+01:00 (14 years ago)
Author:
upliner
Message:

Add Offset submenu to the Imagery menu

Location:
applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryAdjustAction.java

    r24670 r24672  
    3838    public ImageryAdjustAction(ImageryLayer layer) {
    3939        super(tr("New offset"), "adjustimg",
    40                 tr("Adjust the position of the selected imagery layer"), Main.map,
     40                tr("Adjust the position of this imagery layer"), Main.map,
    4141                cursor);
    4242        this.layer = layer;
     
    8686        double dx = layer.getDx()+eastNorth.east()-prevEastNorth.east();
    8787        double dy = layer.getDy()+eastNorth.north()-prevEastNorth.north();
     88        layer.setOffset(dx, dy);
    8889        if (offsetDialog != null) {
    89             offsetDialog.easting.setValue(dx);
    90             offsetDialog.northing.setValue(dy);
     90            offsetDialog.updateOffset();
    9191        }
     92        Main.map.repaint();
    9293        prevEastNorth = eastNorth;
    9394    }
     
    108109
    109110    class ImageryOffsetDialog extends ExtendedDialog implements PropertyChangeListener {
    110         public final JFormattedTextField easting = new JFormattedTextField(new DecimalFormat("0.0000E0"));
    111         public final JFormattedTextField northing = new JFormattedTextField(new DecimalFormat("0.0000E0"));
     111        public final JFormattedTextField easting = new JFormattedTextField(new DecimalFormat("0.00000E0"));
     112        public final JFormattedTextField northing = new JFormattedTextField(new DecimalFormat("0.00000E0"));
    112113        JTextField tBookmarkName = new JTextField();
     114        private boolean ignoreListener;
    113115        public ImageryOffsetDialog() {
    114116            super(Main.parent,
     
    116118                    new String[] { tr("OK"),tr("Cancel") },
    117119                    false);
    118             setButtonIcons(new String[] { "mapmode/adjustimg", "cancel" });
     120            setButtonIcons(new String[] { "ok", "cancel" });
    119121            contentInsets = new Insets(15, 15, 5, 15);
    120122            JPanel pnl = new JPanel();
     
    138140        @Override
    139141        public void propertyChange(PropertyChangeEvent evt) {
     142            if (ignoreListener) return;
    140143            layer.setOffset(((Number)easting.getValue()).doubleValue(), ((Number)northing.getValue()).doubleValue());
    141144            Main.map.repaint();
     145        }
     146
     147        public void updateOffset() {
     148            ignoreListener = true;
     149            easting.setValue(layer.getDx());
     150            northing.setValue(layer.getDy());
     151            ignoreListener = false;
    142152        }
    143153
     
    156166                OffsetBookmark.saveBookmarks();
    157167            }
     168            ImageryPlugin.instance.refreshOffsetMenu();
    158169            Main.map.selectSelectTool(false);
    159170        }
  • applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryLayer.java

    r24670 r24672  
    44
    55import java.awt.Component;
     6import java.awt.Container;
    67import java.awt.Toolkit;
    78import java.awt.event.ActionEvent;
     
    110111
    111112        @Override
    112         public void actionPerformed(ActionEvent arg0) {
     113        public void actionPerformed(ActionEvent ev) {
    113114            setOffset(b.dx, b.dy);
    114115            Main.map.repaint();
     116            if (!(ev.getSource() instanceof Component)) return;
     117            Component source = (Component)ev.getSource();
     118            if (!(source.getParent() instanceof Container)) return;
     119            Container m = source.getParent();
     120            for (Component c : m.getComponents()) {
     121                if (c instanceof JCheckBoxMenuItem && c != source) {
     122                    ((JCheckBoxMenuItem)c).setSelected(false);
     123                }
     124            }
    115125        }
    116126    }
  • applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPlugin.java

    r24670 r24672  
    44import static org.openstreetmap.josm.tools.I18n.marktr;
    55import static org.openstreetmap.josm.tools.I18n.tr;
    6 
     6import static org.openstreetmap.josm.tools.I18n.trc;
     7
     8import java.awt.Component;
    79import java.awt.event.ActionEvent;
    810import java.awt.event.KeyEvent;
     
    1012import java.lang.reflect.InvocationTargetException;
    1113import java.lang.reflect.Method;
     14import java.util.List;
    1215
    1316import javax.swing.JMenu;
     
    2023import org.openstreetmap.josm.gui.MainMenu;
    2124import org.openstreetmap.josm.gui.MapFrame;
     25import org.openstreetmap.josm.gui.MapView;
     26import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
    2227import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
     28import org.openstreetmap.josm.gui.layer.Layer;
    2329import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2430import org.openstreetmap.josm.plugins.Plugin;
     
    3238import org.openstreetmap.josm.plugins.imagery.wms.io.WMSLayerExporter;
    3339import org.openstreetmap.josm.plugins.imagery.wms.io.WMSLayerImporter;
    34 
    35 public class ImageryPlugin extends Plugin {
     40import org.openstreetmap.josm.tools.ImageProvider;
     41
     42public class ImageryPlugin extends Plugin implements LayerChangeListener {
    3643
    3744    JMenu imageryJMenu;
     45    JMenu offsetJMenu = new JMenu(trc("layer","Offset"));
    3846
    3947    public static ImageryPlugin instance;
     
    209217        initRemoteControl();
    210218        SlippyMapBBoxChooser.addTileSourceProvider(new TMSTileSourceProvider());
     219
     220        offsetJMenu.setIcon(ImageProvider.get("imagery_menu"));
     221        refreshOffsetMenu();
     222        MapView.addLayerChangeListener(this);
    211223    }
    212224
     
    232244        imageryJMenu.add(new JMenuItem(new Map_Rectifier_WMSmenuAction()));
    233245
     246        imageryJMenu.addSeparator();
     247        imageryJMenu.add(offsetJMenu);
    234248        imageryJMenu.addSeparator();
    235249        imageryJMenu.add(new JMenuItem(new
     
    243257    }
    244258
     259    public void refreshOffsetMenu() {
     260        offsetJMenu.removeAll();
     261        if (Main.map == null || Main.map.mapView == null) {
     262            offsetJMenu.setEnabled(false);
     263            return;
     264        }
     265        List<ImageryLayer> layers = Main.map.mapView.getLayersOfType(ImageryLayer.class);
     266        if (layers.isEmpty()) {
     267            offsetJMenu.setEnabled(false);
     268            return;
     269        }
     270        offsetJMenu.setEnabled(true);
     271        if (layers.size() == 1) {
     272            for (Component c : layers.get(0).getOffsetMenu()) {
     273                offsetJMenu.add(c);
     274            }
     275            return;
     276        }
     277        for (ImageryLayer layer : layers) {
     278            JMenu subMenu = new JMenu(layer.getName());
     279            subMenu.setIcon(layer.getIcon());
     280            for (Component c : layer.getOffsetMenu()) {
     281                subMenu.add(c);
     282            }
     283            offsetJMenu.add(subMenu);
     284        }
     285    }
     286
    245287    private void setEnabledAll(boolean isEnabled) {
    246288        for(int i=0; i < imageryJMenu.getItemCount(); i++) {
     
    259301            setEnabledAll(false);
    260302        }
     303        refreshOffsetMenu();
    261304    }
    262305
     
    271314        return new File(Main.pref.getPluginsDirectory(), "imagery").getPath();
    272315    }
     316
     317    @Override
     318    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
     319    }
     320
     321    @Override
     322    public void layerAdded(Layer newLayer) {
     323        if (newLayer instanceof ImageryLayer) {
     324            refreshOffsetMenu();
     325        }
     326    }
     327
     328    @Override
     329    public void layerRemoved(Layer oldLayer) {
     330        if (oldLayer instanceof ImageryLayer) {
     331            refreshOffsetMenu();
     332        }
     333    }
    273334}
  • applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPreferenceEditor.java

    r24620 r24672  
    228228        plugin.info.save();
    229229        plugin.refreshMenu();
     230        plugin.refreshOffsetMenu();
    230231        OffsetBookmark.saveBookmarks();
    231232
  • applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/tms/TMSTileSourceProvider.java

    r24650 r24672  
    2020        // Urls that already exist in the slippymap chooser
    2121        existingSlippyMapUrls.add("http://tile.openstreetmap.org/");
    22         existingSlippyMapUrls.add("http://tah.openstreetmap.org/Tiles/");
     22        existingSlippyMapUrls.add("http://tah.openstreetmap.org/Tiles/tile/");
    2323        existingSlippyMapUrls.add("http://tile.opencyclemap.org/cycle/");
    2424    }
Note: See TracChangeset for help on using the changeset viewer.