/** * ImageImporter.java * Copyright (C) 2010 New Zealand Digital Library, http://expeditee.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package org.expeditee.importer; import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; import java.util.HashSet; import org.expeditee.core.Colour; import org.expeditee.core.Point; import org.expeditee.core.bounds.AxisAlignedBoxBounds; import org.expeditee.gio.DragAndDropManager; import org.expeditee.gio.gesture.StandardGestureActions; import org.expeditee.gui.DisplayController; import org.expeditee.gui.FrameIO; import org.expeditee.gui.FrameUtils; import org.expeditee.items.Item; import org.expeditee.items.Text; import org.expeditee.items.XRayable; public class ImageImporter implements FileImporter { private static Collection validImageTypes = null; public ImageImporter() { super(); if (validImageTypes == null) { validImageTypes = new HashSet(); validImageTypes.add("png"); validImageTypes.add("bmp"); validImageTypes.add("jpg"); validImageTypes.add("jpeg"); } } public Item importFile(File f, Point location) throws IOException { if (location == null || f == null) { return null; } String fullPath = f.getAbsolutePath(); int separator = fullPath.lastIndexOf('.'); if (separator < 0) return null; String suffix = fullPath.substring(separator + 1).toLowerCase(); if (!validImageTypes.contains(suffix)) { return null; } Colour borderColor = null; float thickness = 0; String size = ""; Collection enclosure = FrameUtils.getEnclosingLineEnds(location); if (enclosure != null) { for (Item i : enclosure) { if (i.isLineEnd() && i.isEnclosed()) { DisplayController.getCurrentFrame().removeAllItems(enclosure); AxisAlignedBoxBounds rect = i.getEnclosedBox(); size = " " + Math.round(rect.getWidth()); location = new Point(rect.getMinX(), rect.getMinY()); thickness = i.getThickness(); borderColor = i.getColor(); break; } } StandardGestureActions.deleteItems(enclosure, false); } Text source; final Path imagePath = Paths.get(fullPath); final Path imagesPath = Paths.get(FrameIO.IMAGES_PATH); if(imagePath.startsWith(imagesPath)) source = DragAndDropManager.importString("@i: " + imagePath.getFileName() + size, location); else source = DragAndDropManager.importString("@i: " + fullPath + size, location); source.setThickness(thickness); source.setBorderColor(borderColor); StandardGestureActions.Refresh(); Collection pictures = source.getEnclosures(); if (pictures.size() == 0) return source; return source.getEnclosures().iterator().next(); } }