Changeset 31163 in osm for applications/editors/josm


Ignore:
Timestamp:
2015-05-31T12:11:40+02:00 (9 years ago)
Author:
nokutu
Message:

Now when goint to the next or previous pictures the MapView is centered there

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

Legend:

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

    r31159 r31163  
    11package org.openstreetmap.josm.plugins.mapillary;
    22
     3import org.apache.commons.jcs.access.CacheAccess;
    34import org.openstreetmap.josm.Main;
    4 
     5import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
     6import org.openstreetmap.josm.data.cache.CacheEntry;
     7import org.openstreetmap.josm.data.cache.CacheEntryAttributes;
     8import org.openstreetmap.josm.data.cache.ICachedLoaderListener;
     9import org.openstreetmap.josm.data.cache.JCSCacheManager;
     10import org.openstreetmap.josm.plugins.mapillary.cache.MapillaryCache;
     11
     12import java.io.IOException;
    513import java.util.ArrayList;
     14import java.util.HashMap;
    615import java.util.List;
    716import java.util.concurrent.CopyOnWriteArrayList;
     
    1322 *
    1423 */
    15 public class MapillaryData {
     24public class MapillaryData implements ICachedLoaderListener {
    1625        public volatile static MapillaryData INSTANCE;
    1726
     
    125134                        return;
    126135                if (getSelectedImage().getSequence() == null)
    127                         throw new IllegalStateException();
    128                 if (getSelectedImage().next() != null)
    129                         setSelectedImage(getSelectedImage().next());
     136                        return;
     137                setSelectedImage(getSelectedImage().next());
    130138        }
    131139
     
    139147                if (getSelectedImage().getSequence() == null)
    140148                        throw new IllegalStateException();
    141                 if (getSelectedImage().previous() != null)
    142                         setSelectedImage(getSelectedImage().previous());
     149                setSelectedImage(getSelectedImage().previous());
    143150        }
    144151
     
    163170                        MapillaryToggleDialog.getInstance().setImage(selectedImage);
    164171                        MapillaryToggleDialog.getInstance().updateImage();
     172                        CacheAccess<String, BufferedImageCacheEntry> prev = null;
     173                        try {
     174                                prev = JCSCacheManager.getCache("mapillary");
     175                        } catch (IOException e) {
     176                                // TODO Auto-generated catch block
     177                                e.printStackTrace();
     178                        }
     179                        if (image.next() != null)
     180                                new MapillaryCache(image.next().getKey(),
     181                                                MapillaryCache.Type.FULL_IMAGE, prev, 200000, 200000,
     182                                                new HashMap<String, String>()).submit(this, false);
     183                        if (image.previous() != null)
     184                                new MapillaryCache(image.previous().getKey(),
     185                                                MapillaryCache.Type.FULL_IMAGE, prev, 200000, 200000,
     186                                                new HashMap<String, String>()).submit(this, false);
    165187                }
    166188                if (Main.map != null) {
     
    173195         * click)
    174196         *
    175          * @param image The MapillaryImage object to be added.
     197         * @param image
     198         *            The MapillaryImage object to be added.
    176199         */
    177200        public void addMultiSelectedImage(MapillaryImage image) {
     
    183206                return multiSelectedImages;
    184207        }
     208
     209        @Override
     210        public void loadingFinished(CacheEntry data,
     211                        CacheEntryAttributes attributes, LoadResult result) {
     212                // DO NOTHING
     213               
     214        }
    185215}
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryExportAction.java

    r31158 r31163  
    2525
    2626        public MapillaryExportAction() {
    27                 super(tr("Export images"), "icon24.png", tr("Export images."),
    28                                 null, false);
     27                super(tr("Export images"), "icon24.png", tr("Export images."), null,
     28                                false);
    2929        }
    3030
     
    5757         */
    5858        public void export(List<MapillaryImage> images) {
    59                 Main.worker.submit(new MapillaryExportManager(tr("Downloading..."),
    60                                 images, dialog.chooser.getSelectedFile().toString()));
     59                new Thread(new MapillaryExportManager(tr("Downloading..."), images,
     60                                dialog.chooser.getSelectedFile().toString())).start();
    6161        }
    6262
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImage.java

    r31159 r31163  
    9090         */
    9191        public MapillaryImage next() {
     92                if (this.getSequence() == null)
     93                        return null;
    9294                return this.getSequence().next(this);
    9395        }
     
    100102         */
    101103        public MapillaryImage previous() {
     104                if (this.getSequence() == null)
     105                        return null;
    102106                return this.getSequence().previous(this);
    103107        }
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java

    r31158 r31163  
    9898        @Override
    9999        public void destroy() {
    100                 tgd.showDefault();
     100                MapillaryToggleDialog.getInstance().mapillaryImageDisplay.setImage(null);
    101101                INSTANCED = false;
    102102                MapillaryPlugin.setMenuEnabled(MapillaryPlugin.EXPORT_MENU, false);
    103103                MapillaryData.deleteInstance();
     104                Main.map.mapView.removeMouseListener(this);
     105                MapView.removeEditLayerChangeListener(this);
     106                Main.map.mapView.getEditLayer().data.removeDataSetListener(this);
    104107                super.destroy();
    105108        }
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryToggleDialog.java

    r31160 r31163  
    1212
    1313import org.apache.commons.jcs.access.CacheAccess;
     14import org.openstreetmap.josm.Main;
    1415import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
    1516import org.openstreetmap.josm.data.cache.CacheEntry;
     
    2021import org.openstreetmap.josm.gui.SideButton;
    2122import org.openstreetmap.josm.plugins.mapillary.cache.MapillaryCache;
    22 import org.openstreetmap.josm.tools.ImageProvider;
    2323
    2424import javax.imageio.ImageIO;
    25 import javax.swing.ImageIcon;
    26 import javax.swing.JLabel;
    2725import javax.swing.SwingUtilities;
    2826import javax.swing.AbstractAction;
     
    4038        public static MapillaryToggleDialog INSTANCE;
    4139
    42         public volatile JLabel active;
    4340        public volatile MapillaryImage image;
    4441
     
    4744                        new previousPictureAction());
    4845
     46        public MapillaryImageDisplay mapillaryImageDisplay;
     47
    4948        final JPanel buttons;
    5049
     
    5251                super(tr("Mapillary image"), "mapillary", tr("Open Mapillary window"),
    5352                                null, 200);
    54                 showDefault();
     53                mapillaryImageDisplay = new MapillaryImageDisplay();
     54                this.add(mapillaryImageDisplay);
    5555                buttons = new JPanel();
    5656                buttons.setLayout(new FlowLayout(FlowLayout.CENTER));
     
    7171        }
    7272
    73         public void showDefault() {
    74                 if (active != null)
    75                         this.remove(active);
    76                 JLabel label = new JLabel("", new ImageProvider(
    77                                 "mapillary_icon_960.png").setWidth(100).setHeight(100).get(),
    78                                 JLabel.CENTER);
    79                 active = label;
    80                 this.add(active);
    81                 this.updateUI();
    82         }
    83 
     73        /**
     74         * Downloads the image of the selected MapillaryImage and sets in the
     75         * MapillaryImageDisplay object.
     76         */
    8477        public synchronized void updateImage() {
    8578                if (!SwingUtilities.isEventDispatchThread()) {
     
    9285                } else {
    9386                        if (MapillaryLayer.INSTANCED == false) {
    94                                 showDefault();
    9587                                return;
    9688                        }
     
    9991                                try {
    10092                                        prev = JCSCacheManager.getCache("mapillary");
    101                                         HashMap<String, String> headers = new HashMap<>();
    10293                                        MapillaryCache cache = new MapillaryCache(image.getKey(),
    10394                                                        MapillaryCache.Type.FULL_IMAGE, prev, 200000,
    104                                                         200000, headers);
    105                                         cache.submit(MapillaryToggleDialog.getInstance(), false);
     95                                                        200000, new HashMap<String, String>());
     96                                        cache.submit(this, false);
    10697                                } catch (IOException e) {
    10798                                        // TODO Auto-generated catch block
    10899                                        e.printStackTrace();
    109100                                }
    110                         } else
    111                                 showDefault();
     101                        }
    112102                }
    113103        }
     
    130120                @Override
    131121                public void actionPerformed(ActionEvent e) {
    132                         if (MapillaryToggleDialog.getInstance().getImage() != null)
     122                        if (MapillaryToggleDialog.getInstance().getImage() != null) {
    133123                                MapillaryData.getInstance().selectNext();
     124                                Main.map.mapView.zoomTo(MapillaryData.getInstance()
     125                                                .getSelectedImage().getLatLon());
     126                        }
    134127                }
    135128        }
     
    144137                @Override
    145138                public void actionPerformed(ActionEvent e) {
    146                         if (MapillaryToggleDialog.getInstance().getImage() != null)
     139                        if (MapillaryToggleDialog.getInstance().getImage() != null) {
    147140                                MapillaryData.getInstance().selectPrevious();
     141                                Main.map.mapView.zoomTo(MapillaryData.getInstance()
     142                                                .getSelectedImage().getLatLon());
     143                        }
    148144                }
    149145        }
     
    161157                } else {
    162158                        try {
     159                                /*
     160                                 * BufferedImage img = ImageIO.read(new
     161                                 * ByteArrayInputStream(data .getContent()));
     162                                 * this.remove(active); JLabel label = new JLabel("", new
     163                                 * ImageIcon(img), JLabel.CENTER); active = label;
     164                                 * this.add(active); this.updateUI();
     165                                 */
    163166                                BufferedImage img = ImageIO.read(new ByteArrayInputStream(data
    164167                                                .getContent()));
    165                                 this.remove(active);
    166                                 JLabel label = new JLabel("", new ImageIcon(img), JLabel.CENTER);
    167                                 active = label;
    168                                 this.add(active);
    169                                 this.updateUI();
     168                                mapillaryImageDisplay.setImage(img);
    170169                        } catch (IOException e) {
    171170                                // TODO Auto-generated catch block
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryDownloader.java

    r31158 r31163  
    11package org.openstreetmap.josm.plugins.mapillary.downloads;
    22
     3import org.openstreetmap.josm.Main;
    34import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
    45import org.openstreetmap.josm.data.Bounds;
     
    5859                url2 += buildParameters(hash);
    5960                try {
    60                         new Thread(new MapillarySquareDownloadManagerThread(this.data,
    61                                         url1, url2, new Bounds(minLatLon, maxLatLon))).start();
     61                        Main.worker.submit(new MapillarySquareDownloadManagerThread(this.data,
     62                                        url1, url2, new Bounds(minLatLon, maxLatLon)));
    6263                } catch (Exception e) {
    6364                }
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportDownloadThread.java

    r31161 r31163  
    55import java.io.IOException;
    66import java.net.MalformedURLException;
    7 import java.net.URL;
    87import java.util.HashMap;
    98import java.util.concurrent.ArrayBlockingQueue;
    109
    1110import javax.imageio.ImageIO;
    12 import javax.imageio.ImageWriter;
    13 import javax.imageio.metadata.IIOMetadata;
    1411
    1512import org.apache.commons.jcs.access.CacheAccess;
     
    2320import org.openstreetmap.josm.plugins.mapillary.cache.MapillaryCache;
    2421
    25 //import com.sun.imageio.plugins.png.PNGMetadata;
     22
    2623
    2724public class MapillaryExportDownloadThread implements Runnable,
     
    3027        String url;
    3128        ArrayBlockingQueue<BufferedImage> queue;
     29        ArrayBlockingQueue<MapillaryImage> queueImages;
     30
    3231        ProgressMonitor monitor;
    3332        MapillaryImage image;
    3433
    3534        public MapillaryExportDownloadThread(MapillaryImage image,
    36                         ArrayBlockingQueue<BufferedImage> queue) {
     35                        ArrayBlockingQueue<BufferedImage> queue, ArrayBlockingQueue<MapillaryImage> queueImages) {
    3736                url = "https://d1cuyjsrcm0gby.cloudfront.net/" + image.getKey()
    3837                                + "/thumb-2048.jpg";
    3938                this.queue = queue;
    4039                this.image = image;
     40                this.queueImages = queueImages;
    4141        }
    4242
    4343        @Override
    4444        public void run() {
    45             ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();
    46             //IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
    4745                try {
    4846                        CacheAccess<String, BufferedImageCacheEntry> prev = JCSCacheManager
     
    5149                                        prev, 200000, 200000, new HashMap<String, String>())
    5250                                        .submit(this, false);
    53                         queue.put(ImageIO.read(new URL(url)));
    5451                } catch (MalformedURLException e) {
    55                         // TODO Auto-generated catch block
    56                         e.printStackTrace();
    57                 } catch (InterruptedException e) {
    5852                        // TODO Auto-generated catch block
    5953                        e.printStackTrace();
     
    6963                try {
    7064                        queue.put(ImageIO.read(new ByteArrayInputStream(data.getContent())));
     65                        queueImages.put(image);
     66                       
    7167                } catch (InterruptedException e) {
    7268                        // TODO Auto-generated catch block
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportManager.java

    r31158 r31163  
    1717
    1818        ArrayBlockingQueue<BufferedImage> queue;
     19        ArrayBlockingQueue<MapillaryImage> queueImages;
     20       
    1921        List<MapillaryImage> images;
    2022        String path;
    2123
    22         public MapillaryExportManager(String title, List<MapillaryImage> images, String path) {
    23                 super(title, new PleaseWaitProgressMonitor("Exporting Mapillary Images"), true);
     24        public MapillaryExportManager(String title, List<MapillaryImage> images,
     25                        String path) {
     26                super(title,
     27                                new PleaseWaitProgressMonitor("Exporting Mapillary Images"),
     28                                true);
    2429                queue = new ArrayBlockingQueue<>(10);
     30                queueImages = new ArrayBlockingQueue<>(10);
     31
    2532                this.images = images;
    2633                this.path = path;
     
    3643        protected void realRun() throws SAXException, IOException,
    3744                        OsmTransferException {
    38                 Thread writer = new Thread(new MapillaryExportWriterThread(path, queue, images.size(), this.getProgressMonitor()));
     45                Thread writer = new Thread(new MapillaryExportWriterThread(path, queue, queueImages,
     46                                images.size(), this.getProgressMonitor()));
    3947                writer.start();
    4048                ThreadPoolExecutor ex = new ThreadPoolExecutor(20, 35, 25,
    4149                                TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));
    4250                for (MapillaryImage image : images) {
    43                         ex.execute(new MapillaryExportDownloadThread(image, queue));
     51                        try {
     52                                ex.execute(new MapillaryExportDownloadThread(image, queue, queueImages));
     53                        } catch (Exception e) {
     54                                System.out.println("Exception");
     55                        }
    4456                        try {
    4557                                while (ex.getQueue().remainingCapacity() == 0)
     
    5163                try {
    5264                        writer.join();
    53                 }
    54                 catch(Exception e){
     65                } catch (Exception e) {
    5566                }
    5667
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportWriterThread.java

    r31161 r31163  
    1010import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
    1111import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     12import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
    1213
    1314
     
    1617        private String path;
    1718        private ArrayBlockingQueue<BufferedImage> queue;
     19        private ArrayBlockingQueue<MapillaryImage> queueImages;
    1820        private int amount;
    1921        private ProgressMonitor monitor;
    2022       
    2123        public MapillaryExportWriterThread(String path,
    22                         ArrayBlockingQueue<BufferedImage> queue, int amount, ProgressMonitor monitor) {
     24                        ArrayBlockingQueue<BufferedImage> queue,ArrayBlockingQueue<MapillaryImage> queueImages, int amount, ProgressMonitor monitor) {
    2325                this.path = path;
    2426                this.queue = queue;
     27                this.queueImages = queueImages;
    2528                this.amount = amount;
    2629                this.monitor = monitor;
     
    3033        public void run() {
    3134                monitor.setCustomText("Downloaded 0/" + amount);
    32                 File outputfile;
     35                File outputfile = null;
    3336                BufferedImage img;
     37                MapillaryImage mimg = null;
     38                String finalPath = "";
    3439                for (int i = 0; i < amount; i++) {
    3540                        try {
    3641                                img = queue.take();
    37                                 outputfile = new File(path + "/" + i + ".jpg");
    38                                 ImageIO.write(img, "jpg", outputfile);
     42                                mimg = queueImages.take();
     43                                finalPath = path + "/" + mimg.getKey() + ".jpeg";
     44                                outputfile = new File(finalPath);
     45                                ImageIO.write(img, "jpeg", outputfile);
    3946                        } catch (InterruptedException e1) {
    4047                                // TODO Auto-generated catch block
     
    4451                                e.printStackTrace();
    4552                        }
     53                       
    4654                        monitor.worked(PleaseWaitProgressMonitor.PROGRESS_BAR_MAX / amount);
    4755                        monitor.setCustomText("Downloaded " + (i + 1) + "/" + amount);
Note: See TracChangeset for help on using the changeset viewer.