Ignore:
Timestamp:
2010-12-12T01:47:03+01:00 (13 years ago)
Author:
Upliner
Message:

Added imagery plugin to josm core. Imagery plugin is union of wmsplugin and slippymap plugins. It includes code by Tim Waters, Petr Dlouhý, Frederik Ramm and others. Also enables the remotecontol which was integrated in [3707].

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/MainMenu.java

    r3710 r3715  
    55import static org.openstreetmap.josm.tools.I18n.marktr;
    66import static org.openstreetmap.josm.tools.I18n.tr;
    7 
     7import static org.openstreetmap.josm.tools.I18n.trc;
     8
     9import java.awt.Component;
     10import java.awt.event.ActionEvent;
    811import java.awt.event.KeyEvent;
     12import java.util.List;
    913
    1014import javax.swing.JCheckBoxMenuItem;
     
    1620import org.openstreetmap.josm.Main;
    1721import org.openstreetmap.josm.actions.AboutAction;
     22import org.openstreetmap.josm.actions.AddImageryLayerAction;
    1823import org.openstreetmap.josm.actions.AddNodeAction;
    1924import org.openstreetmap.josm.actions.AlignInCircleAction;
     
    4247import org.openstreetmap.josm.actions.JosmAction;
    4348import org.openstreetmap.josm.actions.JumpToAction;
     49import org.openstreetmap.josm.actions.Map_Rectifier_WMSmenuAction;
    4450import org.openstreetmap.josm.actions.MergeLayerAction;
    4551import org.openstreetmap.josm.actions.MergeNodesAction;
     
    8591import org.openstreetmap.josm.actions.audio.AudioSlowerAction;
    8692import org.openstreetmap.josm.actions.search.SearchAction;
     93import org.openstreetmap.josm.data.imagery.ImageryInfo;
     94import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
    8795import org.openstreetmap.josm.gui.io.RecentlyOpenedFilesMenu;
     96import org.openstreetmap.josm.gui.layer.ImageryLayer;
    8897import org.openstreetmap.josm.gui.layer.Layer;
     98import org.openstreetmap.josm.gui.layer.WMSLayer;
    8999import org.openstreetmap.josm.gui.tagging.TaggingPresetSearchAction;
    90100import org.openstreetmap.josm.tools.Shortcut;
     
    180190    public final JMenu toolsMenu = addMenu(marktr("Tools"), KeyEvent.VK_T, 3, ht("/Menu/Tools"));
    181191    public final JMenu presetsMenu = addMenu(marktr("Presets"), KeyEvent.VK_P, 4, ht("/Menu/Presets"));
     192    public final JMenu imageryMenu = addMenu(marktr("Imagery"), KeyEvent.VK_I, 5, ht("/Menu/Imagery"));
    182193    public JMenu audioMenu = null;
    183     public final JMenu helpMenu = addMenu(marktr("Help"), KeyEvent.VK_H, 5, ht("/Menu/Help"));
    184     public final int defaultMenuPos = 5;
     194    public final JMenu helpMenu = addMenu(marktr("Help"), KeyEvent.VK_H, 6, ht("/Menu/Help"));
     195    public final int defaultMenuPos = 6;
    185196
    186197    public final JosmAction moveUpAction = new MoveAction(MoveAction.Direction.UP);
     
    191202
    192203    public final TaggingPresetSearchAction presetSearchAction = new TaggingPresetSearchAction();
    193 
     204    public final ImageryMenuUpdater imageryMenuUpdater;
    194205
    195206    /**
     
    329340
    330341        if (!Main.pref.getBoolean("audio.menuinvisible", false)) {
    331             audioMenu = addMenu(marktr("Audio"), KeyEvent.VK_A, 5, ht("/Menu/Audio"));
     342            audioMenu = addMenu(marktr("Audio"), KeyEvent.VK_A, defaultMenuPos, ht("/Menu/Audio"));
    332343            add(audioMenu, audioPlayPause);
    333344            add(audioMenu, audioNext);
     
    347358
    348359        new PresetsMenuEnabler(presetsMenu).refreshEnabled();
     360        imageryMenuUpdater = new ImageryMenuUpdater();
    349361    }
    350362
     
    378390        }
    379391    }
     392
     393    public class ImageryMenuUpdater implements MapView.LayerChangeListener {
     394        JMenu offsetSubMenu = new JMenu(trc("layer","Offset"));
     395
     396        public ImageryMenuUpdater() {
     397            MapView.addLayerChangeListener(this);
     398        }
     399
     400        public void refreshImageryMenu() {
     401            imageryMenu.removeAll();
     402
     403            // for each configured WMSInfo, add a menu entry.
     404            for (final ImageryInfo u : ImageryLayerInfo.instance.getLayers()) {
     405                imageryMenu.add(new JMenuItem(new AddImageryLayerAction(u)));
     406            }
     407            imageryMenu.addSeparator();
     408            imageryMenu.add(new JMenuItem(new Map_Rectifier_WMSmenuAction()));
     409
     410            imageryMenu.addSeparator();
     411            imageryMenu.add(offsetSubMenu);
     412            imageryMenu.addSeparator();
     413            imageryMenu.add(new JMenuItem(new
     414                    JosmAction(tr("Blank Layer"), "blankmenu", tr("Open a blank WMS layer to load data from a file"), null, false) {
     415                @Override
     416                public void actionPerformed(ActionEvent ev) {
     417                    Main.main.addLayer(new WMSLayer());
     418                }
     419            }));
     420            refreshEnabled();
     421        }
     422
     423        public void refreshEnabled() {
     424            imageryMenu.setEnabled(Main.map != null
     425                    && Main.map.mapView !=null
     426            );
     427        }
     428
     429        public void refreshOffsetMenu() {
     430            offsetSubMenu.removeAll();
     431            if (Main.map == null || Main.map.mapView == null) {
     432                offsetSubMenu.setEnabled(false);
     433                return;
     434            }
     435            List<ImageryLayer> layers = Main.map.mapView.getLayersOfType(ImageryLayer.class);
     436            if (layers.isEmpty()) {
     437                offsetSubMenu.setEnabled(false);
     438                return;
     439            }
     440            offsetSubMenu.setEnabled(true);
     441            if (layers.size() == 1) {
     442                for (Component c : layers.get(0).getOffsetMenu()) {
     443                    offsetSubMenu.add(c);
     444                }
     445                return;
     446            }
     447            for (ImageryLayer layer : layers) {
     448                JMenu subMenu = new JMenu(layer.getName());
     449                subMenu.setIcon(layer.getIcon());
     450                for (Component c : layer.getOffsetMenu()) {
     451                    subMenu.add(c);
     452                }
     453                offsetSubMenu.add(subMenu);
     454            }
     455        }
     456
     457        @Override
     458        public void activeLayerChange(Layer oldLayer, Layer newLayer) {
     459        }
     460
     461        @Override
     462        public void layerAdded(Layer newLayer) {
     463            if (newLayer instanceof ImageryLayer) {
     464                refreshOffsetMenu();
     465            }
     466            refreshEnabled();
     467        }
     468
     469        @Override
     470        public void layerRemoved(Layer oldLayer) {
     471            if (oldLayer instanceof ImageryLayer) {
     472                refreshOffsetMenu();
     473            }
     474            refreshEnabled();
     475        }
     476    }
    380477}
Note: See TracChangeset for help on using the changeset viewer.