Changeset 3715 in josm for trunk/src/org/openstreetmap/josm


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].

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

Legend:

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

    r3669 r3715  
    6262import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    6363import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
     64import org.openstreetmap.josm.gui.preferences.ImageryPreference;
    6465import org.openstreetmap.josm.gui.preferences.MapPaintPreference;
    6566import org.openstreetmap.josm.gui.preferences.ProjectionPreference;
     
    220221        TaggingPresetPreference.initialize();
    221222        MapPaintPreference.initialize();
     223        ImageryPreference.initialize();
    222224
    223225        validator = new OsmValidator();
  • trunk/src/org/openstreetmap/josm/gui/MainApplication.java

    r3707 r3715  
    221221        monitor.worked(1);
    222222
    223         if (RemoteControl.on && RemoteControl.PROP_REMOTECONTROL_ENABLED.get()) {
     223        if (RemoteControl.PROP_REMOTECONTROL_ENABLED.get()) {
    224224            RemoteControl.start();
    225225        }
     
    266266                        dialog.setContent(
    267267                                trn("JOSM found {0} unsaved osm data layer. ",
    268                                 "JOSM found {0} unsaved osm data layers. ", unsavedLayerFiles.size(), unsavedLayerFiles.size()) +
    269                                 tr("It looks like JOSM crashed last time. Do you like to restore the data?"));
     268                                        "JOSM found {0} unsaved osm data layers. ", unsavedLayerFiles.size(), unsavedLayerFiles.size()) +
     269                                        tr("It looks like JOSM crashed last time. Do you like to restore the data?"));
    270270                        dialog.setButtonIcons(new String[] {"ok", "cancel", "dialogs/remove"});
    271271                        int selection = dialog.showDialog().getValue();
     
    278278                    autosaveTask.schedule();
    279279                }
    280                
     280
    281281                main.postConstructorProcessCmdLine(args);
    282282            }
  • 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}
  • trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java

    r3687 r3715  
    1212import java.util.ArrayList;
    1313import java.util.Arrays;
     14import java.util.Collections;
     15import java.util.HashSet;
    1416import java.util.List;
    1517import java.util.Vector;
     
    3032import org.openstreetmap.josm.data.Bounds;
    3133import org.openstreetmap.josm.data.coor.LatLon;
     34import org.openstreetmap.josm.data.imagery.ImageryInfo;
     35import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
    3236import org.openstreetmap.josm.data.preferences.StringProperty;
     37import org.openstreetmap.josm.gui.layer.TMSLayer;
    3338
    3439public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser{
     
    6570
    6671        @Override public Image getAttributionImage() { return source.getAttributionImage(); }
    67  
    68         @Override public String getAttributionText(int zoom, LatLon topLeft, LatLon botRight) { return source.getAttributionText(zoom, topLeft, botRight); }
     72
     73        @Override public String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight) { return source.getAttributionText(zoom, topLeft, botRight); }
    6974
    7075        @Override public boolean requiresAttribution() { return source.requiresAttribution(); }
     
    7479        @Override public String getTermsOfUseURL() { return source.getTermsOfUseURL(); }
    7580    }
     81
     82    /**
     83     * TMS TileSource provider for the slippymap chooser
     84     */
     85    public static class TMSTileSourceProvider implements TileSourceProvider {
     86        static final HashSet<String> existingSlippyMapUrls = new HashSet<String>();
     87        static {
     88            // Urls that already exist in the slippymap chooser and shouldn't be copied from TMS layer list
     89            existingSlippyMapUrls.add("http://tile.openstreetmap.org/");
     90            existingSlippyMapUrls.add("http://tah.openstreetmap.org/Tiles/tile/");
     91            existingSlippyMapUrls.add("http://tile.opencyclemap.org/cycle/");
     92        }
     93
     94        @Override
     95        public List<TileSource> getTileSources() {
     96            if (!TMSLayer.PROP_ADD_TO_SLIPPYMAP_CHOOSER.get()) return Collections.<TileSource>emptyList();
     97            List<TileSource> sources = new ArrayList<TileSource>();
     98            for (ImageryInfo info : ImageryLayerInfo.instance.getLayers()) {
     99                if (existingSlippyMapUrls.contains(info.getURL())) {
     100                    continue;
     101                }
     102                TileSource source = TMSLayer.getTileSource(info);
     103                if (source != null) {
     104                    sources.add(source);
     105                }
     106            }
     107            return sources;
     108        }
     109
     110        public static void addExistingSlippyMapUrl(String url) {
     111            existingSlippyMapUrls.add(url);
     112        }
     113    }
     114
    76115
    77116    /**
     
    96135            }
    97136        });
     137        addTileSourceProvider(new TMSTileSourceProvider());
    98138    }
    99139
  • trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java

    r3707 r3715  
    2626
    2727import org.openstreetmap.josm.Main;
    28 import org.openstreetmap.josm.io.remotecontrol.RemoteControl;
    2928import org.openstreetmap.josm.plugins.PluginDownloadTask;
    3029import org.openstreetmap.josm.plugins.PluginHandler;
     
    4544
    4645    /**
    47      * Allows PreferenceSettings to do validation of entered values when ok was pressed. 
     46     * Allows PreferenceSettings to do validation of entered values when ok was pressed.
    4847     * If data is invalid then event can return false to cancel closing of preferences dialog.
    4948     *
     
    278277        settingsFactory.add(new ShortcutPreference.Factory());
    279278        settingsFactory.add(new ValidatorPreference.Factory());
    280         if (RemoteControl.on) {
    281             settingsFactory.add(new RemoteControlPreference.Factory());
    282         }
     279        settingsFactory.add(new RemoteControlPreference.Factory());
     280        settingsFactory.add(new ImageryPreference.Factory());
    283281
    284282        PluginHandler.getPreferenceSetting(settingsFactory);
  • trunk/src/org/openstreetmap/josm/gui/preferences/RemoteControlPreference.java

    r3707 r3715  
    77import java.awt.Font;
    88import java.awt.GridBagLayout;
    9 
    109import java.awt.event.ActionEvent;
    1110import java.awt.event.ActionListener;
     11
    1212import javax.swing.BorderFactory;
    1313import javax.swing.Box;
     
    1515import javax.swing.JLabel;
    1616import javax.swing.JPanel;
    17 
    1817import javax.swing.JSeparator;
    1918import javax.swing.UIManager;
     19
    2020import org.openstreetmap.josm.Main;
    2121import org.openstreetmap.josm.gui.util.GuiHelper;
    2222import org.openstreetmap.josm.io.remotecontrol.RemoteControl;
    2323import org.openstreetmap.josm.io.remotecontrol.handler.AddNodeHandler;
     24import org.openstreetmap.josm.io.remotecontrol.handler.ImageryHandler;
    2425import org.openstreetmap.josm.io.remotecontrol.handler.ImportHandler;
    2526import org.openstreetmap.josm.io.remotecontrol.handler.LoadAndZoomHandler;
     
    4647    private JCheckBox permissionLoadData = new JCheckBox(tr("load data from API"));
    4748    private JCheckBox permissionImportData = new JCheckBox(tr("import data from URL"));
     49    private JCheckBox permissionLoadImagery = new JCheckBox(tr("load imagery layers"));
    4850    private JCheckBox permissionCreateObjects = new JCheckBox(tr("create new objects"));
    4951    private JCheckBox permissionChangeSelection = new JCheckBox(tr("change the selection"));
     
    7577        wrapper.add(permissionLoadData, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL));
    7678        wrapper.add(permissionImportData, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL));
     79        wrapper.add(permissionLoadImagery, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL));
    7780        wrapper.add(permissionChangeSelection, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL));
    7881        wrapper.add(permissionChangeViewport, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL));
     
    9497        permissionLoadData.setSelected(Main.pref.getBoolean(LoadAndZoomHandler.loadDataPermissionKey, LoadAndZoomHandler.loadDataPermissionDefault));
    9598        permissionImportData.setSelected(Main.pref.getBoolean(ImportHandler.permissionKey, ImportHandler.permissionDefault));
     99        permissionLoadImagery.setSelected(Main.pref.getBoolean(ImageryHandler.permissionKey, ImageryHandler.permissionDefault));
    96100        permissionChangeSelection.setSelected(Main.pref.getBoolean(LoadAndZoomHandler.changeSelectionPermissionKey, LoadAndZoomHandler.changeSelectionPermissionDefault));
    97101        permissionChangeViewport.setSelected(Main.pref.getBoolean(LoadAndZoomHandler.changeViewportPermissionKey, LoadAndZoomHandler.changeViewportPermissionDefault));
     
    120124            Main.pref.put(LoadAndZoomHandler.loadDataPermissionKey, permissionLoadData.isSelected());
    121125            Main.pref.put(ImportHandler.permissionKey, permissionImportData.isSelected());
     126            Main.pref.put(ImageryHandler.permissionKey, permissionLoadImagery.isSelected());
    122127            Main.pref.put(LoadAndZoomHandler.changeSelectionPermissionKey, permissionChangeSelection.isSelected());
    123128            Main.pref.put(LoadAndZoomHandler.changeViewportPermissionKey, permissionChangeViewport.isSelected());
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java

    r3707 r3715  
    1515public class RemoteControl
    1616{
    17     // deactivate the remote control code for now. FIXME: Remove this completely if it gets turned on.
    18     static final public boolean on = false;
    19 
    2017    /**
    2118     * If the remote cotrol feature is enabled or disabled. If disabled,
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java

    r3707 r3715  
    1616
    1717import org.openstreetmap.josm.io.remotecontrol.handler.AddNodeHandler;
     18import org.openstreetmap.josm.io.remotecontrol.handler.ImageryHandler;
    1819import org.openstreetmap.josm.io.remotecontrol.handler.ImportHandler;
    1920import org.openstreetmap.josm.io.remotecontrol.handler.LoadAndZoomHandler;
     
    112113        addRequestHandlerClass(LoadAndZoomHandler.command2,
    113114                LoadAndZoomHandler.class, true);
     115        addRequestHandlerClass(ImageryHandler.command, ImageryHandler.class, true);
    114116        addRequestHandlerClass(AddNodeHandler.command, AddNodeHandler.class, true);
    115117        addRequestHandlerClass(ImportHandler.command, ImportHandler.class, true);
  • trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java

    r3704 r3715  
    8989            {"usertools", IN_CORE},
    9090            {"AgPifoJ", IN_CORE}, {"utilsplugin", IN_CORE}, {"ghost", IN_CORE},
    91             {"validator", IN_CORE}, {"multipoly", IN_CORE}}) {
     91            {"validator", IN_CORE}, {"multipoly", IN_CORE},
     92            {"remotecontrol", IN_CORE},
     93            {"imagery", IN_CORE}, {"slippymap", IN_CORE}, {"wmsplugin", IN_CORE}}) {
    9294            DEPRECATED_PLUGINS.put(depr[0], depr.length >= 2 ? depr[1] : null);
    9395        }
Note: See TracChangeset for help on using the changeset viewer.