// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.ImportImagePlugin; import static org.openstreetmap.josm.tools.I18n.tr; import java.io.File; import java.io.IOException; import java.util.List; import javax.swing.JOptionPane; import org.apache.log4j.Logger; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.ExtensionFileFilter; import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor; import org.openstreetmap.josm.gui.progress.ProgressMonitor; import org.openstreetmap.josm.io.IllegalDataException; import org.openstreetmap.josm.io.FileImporter; import org.openstreetmap.josm.plugins.ImportImagePlugin.ImageLayer.LayerCreationCanceledException; /** * Class to open georeferenced image with standard file open dialog */ public class ImportImageFileImporter extends FileImporter { private Logger logger = Logger.getLogger(LoadImageAction.class); public ImportImageFileImporter() { super(new ExtensionFileFilter("tiff,tif,jpg,jpeg,bmp,png", "jpg", "Georeferenced image file [by ImportImage plugin] (*.jpg, *.jpeg, *.tif, *.tiff, *.png, *.bmp)")); } @Override public boolean isBatchImporter() { return true; } @Override public double getPriority() { return -3; } @Override public void importData(List<File> files, ProgressMonitor progressMonitor) throws IOException, IllegalDataException { if (null == files || files.isEmpty()) return; for (File file: files) { if (file.isDirectory()) continue; ImageLayer layer = null; logger.info("File choosen:" + file); try { layer = new ImageLayer(file); } catch (LayerCreationCanceledException e) { // if user decides that layer should not be created just return. continue; } catch (Exception e) { logger.error("Error while creating image layer: \n" + e.getMessage()); JOptionPane.showMessageDialog(null, tr("Error while creating image layer: {0}", e.getCause())); continue; } // Add layer: Main.getLayerManager().addLayer(layer); BoundingXYVisitor boundingXYVisitor = new BoundingXYVisitor(); layer.visitBoundingBox(boundingXYVisitor); Main.map.mapView.zoomTo(boundingXYVisitor); } } }