Changeset 31222 in osm for applications/editors


Ignore:
Timestamp:
2015-06-05T12:07:56+02:00 (10 years ago)
Author:
nokutu
Message:

Added history record system and solved a couple of bugs

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

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java

    r31218 r31222  
    183183         */
    184184        public void addMultiSelectedImage(MapillaryImage image) {
    185                 if (this.getSelectedImage() != null)
    186                         this.multiSelectedImages.add(image);
    187                 else
    188                         this.setSelectedImage(image);
     185                if (!this.multiSelectedImages.contains(image)) {
     186                        if (this.getSelectedImage() != null)
     187                                this.multiSelectedImages.add(image);
     188                        else
     189                                this.setSelectedImage(image);
     190                }
    189191                Main.map.mapView.repaint();
    190192        }
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryDownloadAction.java

    r31173 r31222  
    2828                                tr("Create Mapillary layer."), Shortcut.registerShortcut(
    2929                                                "menu:Mapillary", tr("Menu: {0}", tr("Mapillary")),
    30                                                 KeyEvent.VK_M, Shortcut.ALT_CTRL_SHIFT), false, "mapillaryDownload", false);
     30                                                KeyEvent.VK_M, Shortcut.ALT_CTRL_SHIFT), false,
     31                                "mapillaryDownload", false);
    3132        }
    3233
     
    4041        public void actionPerformed(ActionEvent arg0) {
    4142                this.layer = null;
    42                 if (Main.map == null) {
     43                if (Main.map == null || Main.map.mapView == null
     44                                || Main.map.mapView.getEditLayer() == null) {
    4345                        return;
    4446                }
     
    5557                                Main.map.mapView.setActiveLayer(layer);
    5658                        else
    57                                 Main.map.mapView.setActiveLayer(Main.map.mapView.getEditLayer());
     59                                Main.map.mapView
     60                                                .setActiveLayer(Main.map.mapView.getEditLayer());
    5861                }
    5962        }
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImage.java

    r31219 r31222  
    1414        private final String key;
    1515        /** Postion of the picture */
    16         private final LatLon latLon;
     16        public final LatLon latLon;
    1717        /** Direction of the picture */
    1818        private final double ca;
     
    2222        private boolean isModified = false;
    2323        /** Temporal position of the picture until it is uplaoded */
    24         private LatLon tempLatLon;
     24        public LatLon tempLatLon;
    2525        /**
    2626         * When the object is being dragged in the map, the temporal position is
    2727         * stored here
    2828         */
    29         private LatLon movingLatLon;
     29        public LatLon movingLatLon;
    3030        /** Temporal direction of the picture until it is uplaoded */
    3131        private double tempCa;
     
    7474        public LatLon getLatLon() {
    7575                return movingLatLon;
     76        }
     77       
     78        public LatLon getTempLatLon() {
     79                return tempLatLon;
    7680        }
    7781
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java

    r31219 r31222  
    55import org.apache.commons.jcs.access.CacheAccess;
    66import org.openstreetmap.josm.plugins.mapillary.cache.MapillaryCache;
     7import org.openstreetmap.josm.plugins.mapillary.commands.CommandMoveImage;
     8import org.openstreetmap.josm.plugins.mapillary.commands.CommandTurnImage;
     9import org.openstreetmap.josm.plugins.mapillary.commands.MapillaryRecord;
    710import org.openstreetmap.josm.plugins.mapillary.downloads.MapillaryDownloader;
    811import org.openstreetmap.josm.Main;
     
    5861        public static MapillaryImage RED;
    5962
    60         private final MapillaryData mapillaryData;
     63        private final MapillaryData mapillaryData = MapillaryData.getInstance();
     64        private final MapillaryRecord record = MapillaryRecord.getInstance();
     65
    6166        private List<Bounds> bounds;
    6267        private MapillaryToggleDialog tgd;
     
    6671        public MapillaryLayer() {
    6772                super(tr("Mapillary Images"));
    68                 mapillaryData = MapillaryData.getInstance();
    6973                bounds = new ArrayList<>();
    7074                init();
     
    117121                                                .getInstance())
    118122                                        return;
    119                                 if (e.getClickCount() == 2 && mapillaryData.getSelectedImage() != null) {
    120                                         for (MapillaryImage img : mapillaryData.getSelectedImage().getSequence().getImages()) {
     123                                MapillaryImage closest = getClosest(e.getPoint());
     124                                if (e.getClickCount() == 2
     125                                                && mapillaryData.getSelectedImage() != null
     126                                                && closest != null) {
     127                                        for (MapillaryImage img : closest.getSequence().getImages()) {
    121128                                                mapillaryData.addMultiSelectedImage(img);
    122129                                        }
    123130                                }
    124                                 MapillaryImage closest = getClosest(e.getPoint());
    125131                                this.start = e.getPoint();
    126132                                this.closest = closest;
    127133                                if (mapillaryData.getMultiSelectedImages().contains(closest))
    128134                                        return;
    129                                 if (e.getModifiers() == (MouseEvent.BUTTON1_MASK | MouseEvent.CTRL_MASK))
     135                                if (e.getModifiers() == (MouseEvent.BUTTON1_MASK | MouseEvent.CTRL_MASK)
     136                                                && closest != null)
    130137                                        mapillaryData.addMultiSelectedImage(closest);
    131138                                else
    132139                                        mapillaryData.setSelectedImage(closest);
    133140                        }
    134                        
    135                         private MapillaryImage getClosest(Point clickPoint){
     141
     142                        private MapillaryImage getClosest(Point clickPoint) {
    136143                                double snapDistance = 10;
    137144                                double minDistance = Double.MAX_VALUE;
     
    149156                                        }
    150157                                }
    151                                 return closest;                         
     158                                return closest;
    152159                        }
    153160
    154161                        @Override
    155162                        public void mouseDragged(MouseEvent e) {
     163                                if (Main.map.mapView.getActiveLayer() != MapillaryLayer
     164                                                .getInstance())
     165                                        return;
    156166                                if (MapillaryData.getInstance().getSelectedImage() != null) {
    157167                                        if (lastButton == MouseEvent.BUTTON1 && !e.isShiftDown()) {
     
    169179                                                        && e.isShiftDown()) {
    170180                                                this.closest.turn(Math.toDegrees(Math.atan2(
    171                                                                         (e.getX() - start.x), -(e.getY() - start.y))) - closest.getTempCa());
     181                                                                (e.getX() - start.x), -(e.getY() - start.y)))
     182                                                                - closest.getTempCa());
    172183                                                for (MapillaryImage img : MapillaryData.getInstance()
    173184                                                                .getMultiSelectedImages()) {
    174185                                                        img.turn(Math.toDegrees(Math.atan2(
    175                                                                         (e.getX() - start.x), -(e.getY() - start.y))) - closest.getTempCa());
     186                                                                        (e.getX() - start.x), -(e.getY() - start.y)))
     187                                                                        - closest.getTempCa());
    176188                                                }
    177189                                                Main.map.repaint();
     
    182194                        @Override
    183195                        public void mouseReleased(MouseEvent e) {
    184                                 for (MapillaryImage img : MapillaryData.getInstance()
     196                                if (mapillaryData.getSelectedImage() == null)
     197                                        return;
     198                                if (mapillaryData.getSelectedImage().getTempCa() != mapillaryData
     199                                                .getSelectedImage().getCa()) {
     200                                        double from = mapillaryData.getSelectedImage().getTempCa();
     201                                        double to = mapillaryData.getSelectedImage().getCa();
     202                                        record.addCommand(new CommandTurnImage(mapillaryData
     203                                                        .getMultiSelectedImages(), to - from));
     204                                } else if (mapillaryData.getSelectedImage().getTempLatLon() != mapillaryData
     205                                                .getSelectedImage().getLatLon()) {
     206                                        LatLon from = mapillaryData.getSelectedImage()
     207                                                        .getTempLatLon();
     208                                        LatLon to = mapillaryData.getSelectedImage().getLatLon();
     209                                        record.addCommand(new CommandMoveImage(mapillaryData
     210                                                        .getMultiSelectedImages(), to.getX() - from.getX(),
     211                                                        to.getY() - from.getY()));
     212                                }
     213                                for (MapillaryImage img : mapillaryData
    185214                                                .getMultiSelectedImages()) {
    186215                                        if (img != null)
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java

    r31213 r31222  
    1010import org.openstreetmap.josm.data.cache.JCSCacheManager;
    1111import org.openstreetmap.josm.gui.MainMenu;
     12import org.openstreetmap.josm.gui.MapView;
     13import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener;
    1214import org.openstreetmap.josm.Main;
    1315import org.openstreetmap.josm.gui.MapFrame;
     16import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1417import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    1518import org.openstreetmap.josm.plugins.Plugin;
     
    2326 *
    2427 */
    25 public class MapillaryPlugin extends Plugin {
     28public class MapillaryPlugin extends Plugin implements EditLayerChangeListener{
    2629
    2730        public static final ImageIcon ICON24 = new ImageProvider("icon24.png")
     
    5356                                false, 14);
    5457                EXPORT_MENU.setEnabled(false);
     58                DOWNLOAD_MENU.setEnabled(false);
     59               
     60                MapView.addEditLayerChangeListener(this);
    5561                try {
    5662                        CACHE = JCSCacheManager.getCache("mapillary", 10, 10000,
     
    8187                return new MapillaryPreferenceSetting();
    8288        }
     89
     90        @Override
     91        public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
     92                if (oldLayer == null && newLayer != null)
     93                        DOWNLOAD_MENU.setEnabled(true);         
     94                else if (oldLayer != null && newLayer == null)
     95                        DOWNLOAD_MENU.setEnabled(false);
     96        }
    8397}
Note: See TracChangeset for help on using the changeset viewer.