/** * */ package cz.cuni.mff.peckam.java.origamist.modelstate.arguments; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ResourceBundle; import javax.imageio.ImageIO; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.filechooser.FileNameExtensionFilter; import cz.cuni.mff.peckam.java.origamist.configuration.Configuration; import cz.cuni.mff.peckam.java.origamist.gui.editor.PickMode; import cz.cuni.mff.peckam.java.origamist.services.ServiceLocator; import cz.cuni.mff.peckam.java.origamist.services.interfaces.ConfigurationManager; /** * An argument asking for an image file. * * @author Martin Pecka */ public class ImageArgument extends OperationArgument implements UserInputDataReceiver { /** The selected image. */ protected BufferedImage image = null; /** * @param required * @param resourceBundleKey */ public ImageArgument(boolean required, String resourceBundleKey) { super(required, resourceBundleKey); } @Override public boolean isComplete() { return image != null; } @Override public PickMode preferredPickMode() { return null; } @Override public void askForData() { Configuration conf = ServiceLocator.get(ConfigurationManager.class).get(); ResourceBundle bundle = ResourceBundle.getBundle(OperationArgument.class.getName(), conf.getLocale()); JFileChooser chooser = new JFileChooser(); File defaultFile = conf.getLastOpenPath().getParentFile(); chooser.setCurrentDirectory(defaultFile); chooser.setFileFilter(new FileNameExtensionFilter(bundle.getString("imageDialog.fileFilter"), "jpg", "png", "bmp", "gif")); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setDialogType(JFileChooser.OPEN_DIALOG); if (chooser.showDialog(null, bundle.getString("imageDialog.approve")) == JFileChooser.APPROVE_OPTION) { File file = chooser.getSelectedFile(); try { image = ImageIO.read(file); } catch (IOException e) { image = null; JOptionPane.showMessageDialog(null, bundle.getString("imageDialog.error.message"), bundle.getString("imageDialog.error.title"), JOptionPane.ERROR_MESSAGE); } } } /** * @return The image. */ public BufferedImage getImage() { return image; } }