/* * jMemorize - Learning made easy (and fun) - A Leitner flashcards tool * Copyright(C) 2004-2006 Riad Djemili * * 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 1, 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, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package jmemorize.gui.swing.actions.file; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.Charset; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; import jmemorize.core.Lesson; import jmemorize.core.Main; import jmemorize.core.io.CsvBuilder; import jmemorize.core.io.CsvBuilder.BadHeaderException; import jmemorize.gui.LC; import jmemorize.gui.Localization; import jmemorize.util.ExtensionFileFilter; /** * An action for importing Comma-Separated-Values (CSV). * * @author djemili */ public class ImportCSVAction extends AbstractImportAction { public ImportCSVAction() { setValues(); } public static Charset showCharsetChooser(JFrame owner) { Object[] charsets = Charset.availableCharsets().keySet().toArray(); String selection = (String)JOptionPane.showInputDialog( owner, Localization.get("MainFrame.SELECT_CHARACTER_SET"), Localization.get("MainFrame.CHARACTER_SET"), JOptionPane.QUESTION_MESSAGE, null, charsets, "ISO-8859-1"); /* * someone reported a bug (with stack tracke) where altough selection * was tested for null, before calling the method, a * illegal-null-argument exception was thrown - don't ask how this can * be possible */ return selection == null ? null : Charset.forName(selection); } /* (non-Javadoc) * @see jmemorize.gui.swing.actions.file.AbstractImportAction */ protected void doImport(File file, Lesson lesson) throws IOException { FileInputStream in = null; try { in = new FileInputStream(file); Charset charset = showCharsetChooser(Main.getInstance().getFrame()); if (charset == null) return; CsvBuilder.importLesson(in, ',', charset, lesson); } catch (BadHeaderException e) { if (in != null) in.close(); throw new IOException(e.getMessage()); } } /* (non-Javadoc) * @see jmemorize.gui.swing.actions.file.AbstractImportAction */ protected FileFilter getFileFilter() { return new ExtensionFileFilter("csv", Localization.get(LC.FILE_CSV)); } private void setValues() { setName(Localization.get(LC.FILE_CSV)); setMnemonic(1); setIcon("/resource/icons/file_saveas.gif"); //$NON-NLS-1$ } }