Logo Search packages:      
Sourcecode: cdk version File versions

JCPFileFilter.java

/*
 *  $RCSfile$
 *  $Author: egonw $
 *  $Date: 2007-04-16 10:40:19 +0200 (Mon, 16 Apr 2007) $
 *  $Revision: 8201 $
 *
 *  Copyright (C) 1997-2007  The JChemPaint project
 *
 *  Contact: jchempaint-devel@lists.sourceforge.net
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public License
 *  as published by the Free Software Foundation; either version 2.1
 *  of the License, or (at your option) any later version.
 *  All we ask is that proper credit is given for our work, which includes
 *  - but is not limited to - adding the above copyright notice to the beginning
 *  of your source code files, and to any copyright notice that you may distribute
 *  with programs based on this work.
 *
 *  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 Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 */
package org.openscience.cdk.applications.jchempaint.io;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFileChooser;

/**
 * A file filter for JCP
 *
 * @cdk.module jchempaint
 *@author     steinbeck
 */
00043 public class JCPFileFilter extends javax.swing.filechooser.FileFilter implements IJCPFileFilter
{

      /**
       *  Description of the Field
       */
00049       public final static String rxn = "rxn";
      /**
       *  Description of the Field
       */
00053       public final static String rdf = "rdf";
      /**
       *  Description of the Field
       */
00057       public final static String sdf = "sdf";
      /**
       *  Description of the Field
       */
00061       public final static String mol = "mol";
      /**
       *  Description of the Field
       */
00065       public final static String cml = "cml";
      /**
       *  Description of the Field
       */
00069       public final static String xml = "xml";
      /**
       *  Description of the Field
       */
00073       public final static String inchi = "txt";
      /**
       *  Description of the Field
       */
00077       public final static String smi = "smi";

      /**
       *  Description of the Field
       */
00082       protected List types;


      /**
       *  Constructor for the JCPFileFilter object
       *
       *@param  type  Description of the Parameter
       */
00090       public JCPFileFilter(String type)
      {
            super();
            types = new ArrayList();
            types.add(type);
      }


      /**
       *  Adds an additional file type to the list
       *
       *@param  type  The feature to be added to the Type attribute
       */
00103       public void addType(String type)
      {
            types.add(type);
      }


      /**
       *  Adds the JCPFileFilter to the JFileChooser object.
       *
       *@param  chooser  The feature to be added to the ChoosableFileFilters
       *      attribute
       */
00115       public static void addChoosableFileFilters(JFileChooser chooser)
      {
            chooser.addChoosableFileFilter(new JCPSaveFileFilter(JCPFileFilter.mol));
            chooser.addChoosableFileFilter(new JCPFileFilter(JCPFileFilter.smi));
            chooser.addChoosableFileFilter(new JCPFileFilter(JCPFileFilter.inchi));
            chooser.addChoosableFileFilter(new JCPFileFilter(JCPFileFilter.sdf));
            chooser.addChoosableFileFilter(new JCPFileFilter(JCPFileFilter.rxn));
            chooser.addChoosableFileFilter(new JCPFileFilter(JCPFileFilter.rdf));
            JCPFileFilter cmlFilter = new JCPFileFilter(JCPFileFilter.cml);
            cmlFilter.addType(JCPFileFilter.xml);
            chooser.addChoosableFileFilter(cmlFilter);
      }


      /*
       *  Get the extension of a file.
       */
      /**
       *  Gets the extension attribute of the JCPFileFilter class
       *
       *@param  f  Description of the Parameter
       *@return    The extension value
       */
00138       public static String getExtension(File f)
      {
            String ext = null;
            String s = f.getName();
            int i = s.lastIndexOf('.');

            if (i > 0 && i < s.length() - 1)
            {
                  ext = s.substring(i + 1).toLowerCase();
            }
            return ext;
      }


      // Accept all directories and all gif, jpg, or tiff files.
      public boolean accept(File f)
      {
            if (f.isDirectory())
            {
                  return true;
            }

            String extension = getExtension(f);
            if (extension != null)
            {
                  if (types.contains(extension))
                  {
                        return true;
                  } else
                  {
                        return false;
                  }
            }
            return false;
      }


      // The description of this filter
      /**
       *  Gets the description attribute of the JCPFileFilter object
       *
       *@return    The description value
       */
00181       public String getDescription()
      {
            String type = (String) types.get(0);
            if (type.equals(mol))
            {
                  return "MDL MOL file";
            }
            if (type.equals(sdf))
            {
                  return "MDL SDF Molfile";
            }
            if (type.equals(rxn))
            {
                  return "MDL RXN Molfile";
            }
            if (type.equals(rdf))
            {
                  return "MDL RDF Molfile";
            }
            if (type.equals(inchi))
            {
                  return "IUPAC Chemical Identifier";
            }
            if (type.equals(smi))
            {
                  return "SMILES";
            }
            if (type.equals(cml) || type.equals(xml))
            {
                  return "Chemical Markup Language";
            }
            return null;
      }


      /**
       *  Gets the type attribute of the JCPFileFilter object
       *
       *@return    The type value
       */
00221       public String getType()
      {
            return (String) types.get(0);
      }


      /**
       *  Sets the type attribute of the JCPFileFilter object
       *
       *@param  type  The new type value
       */
00232       public void setType(String type)
      {
            types.add(type);
      }
}


Generated by  Doxygen 1.6.0   Back to index