Coverage Report - net.sf.jabref.imports.ImportFormats
 
Classes in this File Line Coverage Branch Coverage Complexity
ImportFormats
84%
16/19
75%
6/8
4.25
ImportFormats$1ImportAction
39%
11/28
41%
5/12
4.25
 
 1  
 package net.sf.jabref.imports;
 2  
 
 3  
 import java.awt.event.ActionEvent;
 4  
 import java.io.File;
 5  
 import java.util.SortedSet;
 6  
 import java.util.TreeSet;
 7  
 
 8  
 import javax.swing.AbstractAction;
 9  
 import javax.swing.JFileChooser;
 10  
 import javax.swing.JOptionPane;
 11  
 import javax.swing.filechooser.FileFilter;
 12  
 
 13  
 import net.sf.jabref.Globals;
 14  
 import net.sf.jabref.JabRefFrame;
 15  
 import net.sf.jabref.MnemonicAwareAction;
 16  
 
 17  
 /**
 18  
  * Created by IntelliJ IDEA.
 19  
  * User: alver
 20  
  * Date: Oct 22, 2006
 21  
  * Time: 12:06:09 PM
 22  
  * To change this template use File | Settings | File Templates.
 23  
  */
 24  0
 public class ImportFormats {
 25  
 
 26  
     public static JFileChooser createImportFileChooser(String currentDir) {
 27  
 
 28  30946678
         SortedSet<ImportFormat> importers = Globals.importFormatReader.getImportFormats();
 29  
         
 30  30946678
         String lastUsedFormat = Globals.prefs.get("lastUsedImport");
 31  30946678
         FileFilter defaultFilter = null;
 32  30946678
         JFileChooser fc = new JFileChooser(currentDir);
 33  30946678
         TreeSet<ImportFileFilter> filters = new TreeSet<ImportFileFilter>();
 34  30946678
         for (ImportFormat format : importers){
 35  557040204
             ImportFileFilter filter = new ImportFileFilter(format);
 36  557040204
             filters.add(filter);
 37  557040204
             if (format.getFormatName().equals(lastUsedFormat))
 38  0
                 defaultFilter = filter;
 39  557040204
         }
 40  30946678
         for (ImportFileFilter filter : filters){
 41  557040204
             fc.addChoosableFileFilter(filter);
 42  
         }
 43  
 
 44  30946678
         if (defaultFilter != null)
 45  0
             fc.setFileFilter(defaultFilter);
 46  
         else
 47  30946678
             fc.setFileFilter(fc.getAcceptAllFileFilter());
 48  30946678
         return fc;
 49  
     }
 50  
 
 51  
     /**
 52  
      * Create an AbstractAction for performing an Import operation.
 53  
      * @param frame The JabRefFrame of this JabRef instance.
 54  
      * @param openInNew Indicate whether the action should open into a new database or
 55  
      *  into the currently open one.
 56  
      * @return The action.
 57  
      */
 58  
     public static AbstractAction getImportAction(JabRefFrame frame, boolean openInNew) {
 59  
 
 60  
         class ImportAction extends MnemonicAwareAction {
 61  
             private JabRefFrame frame;
 62  
             private boolean openInNew;
 63  
 
 64  
 
 65  95927805650
             public ImportAction(JabRefFrame frame, boolean openInNew) {
 66  95927805650
                 this.frame = frame;
 67  95927805650
                 this.openInNew = openInNew;
 68  
 
 69  95927805650
                 putValue(NAME, openInNew ? "Import into new database" :
 70  
                         "Import into current database");
 71  95927805650
                 putValue(ACCELERATOR_KEY, openInNew ? Globals.prefs.getKey("Import into new database") :
 72  
                         Globals.prefs.getKey("Import into current database"));
 73  95927805650
             }
 74  
 
 75  
             public void actionPerformed(ActionEvent e) {
 76  30946678
                 JFileChooser fc = ImportFormats.createImportFileChooser
 77  
                         (Globals.prefs.get("importWorkingDirectory"));
 78  30946678
                 fc.showOpenDialog(frame);
 79  2814825
                 File file = fc.getSelectedFile();
 80  2814825
                 if (file == null)
 81  2814825
                     return;
 82  0
                 FileFilter ff = fc.getFileFilter();
 83  0
                 ImportFormat format = null;
 84  0
                 if (ff instanceof ImportFileFilter)
 85  0
                     format = ((ImportFileFilter)ff).getImportFormat();
 86  
 
 87  
                 try {
 88  0
                     if (!file.exists()) {
 89  
                         // Warn that the file doesn't exists:
 90  0
                         JOptionPane.showMessageDialog(frame,
 91  
                                 Globals.lang("File not found")+
 92  
                                 ": '"+file.getName()+"'.",
 93  
                                 Globals.lang("Import"), JOptionPane.ERROR_MESSAGE);
 94  0
                         return;
 95  
                     }
 96  0
                     ImportMenuItem imi = new ImportMenuItem(frame,
 97  
                             openInNew, format);
 98  0
                     imi.automatedImport(new String[] {file.getAbsolutePath()});
 99  
 
 100  
 
 101  
                     // Make sure we remember which filter was used, to set the default
 102  
                     // for next time:
 103  0
                     if (format != null)
 104  0
                         Globals.prefs.put("lastUsedImport", format.getFormatName());
 105  
                     else
 106  0
                         Globals.prefs.put("lastUsedImport", "__all");
 107  0
                     Globals.prefs.put("importWorkingDirectory", file.getParent());
 108  0
                 } catch (Exception ex) {
 109  0
                     ex.printStackTrace();
 110  0
                 }
 111  
 
 112  0
             }
 113  
         }
 114  
 
 115  95927805650
         return new ImportAction(frame, openInNew);
 116  
     }
 117  
 }