From: <tho...@us...> - 2007-09-04 08:44:25
|
Revision: 8857 http://cdk.svn.sourceforge.net/cdk/?rev=8857&view=rev Author: thomaskuhn Date: 2007-09-04 01:44:21 -0700 (Tue, 04 Sep 2007) Log Message: ----------- Add a file chooser dialog to this file reader Added Paths: ----------- trunk/cdk-taverna/src/main/java/org/openscience/cdk/applications/taverna/io/action/ReadSMILESFromFileAction.java Added: trunk/cdk-taverna/src/main/java/org/openscience/cdk/applications/taverna/io/action/ReadSMILESFromFileAction.java =================================================================== --- trunk/cdk-taverna/src/main/java/org/openscience/cdk/applications/taverna/io/action/ReadSMILESFromFileAction.java (rev 0) +++ trunk/cdk-taverna/src/main/java/org/openscience/cdk/applications/taverna/io/action/ReadSMILESFromFileAction.java 2007-09-04 08:44:21 UTC (rev 8857) @@ -0,0 +1,153 @@ +/* $RCSfile$ + * $Author: thomaskuhn $ + * $Date: 2006-01-20 08:21:14 +0100 (Fr, 20 Jan 2006) $ + * $Revision: 5602 $ + * + * Copyright (C) 2007 by Thomas Kuhn <tho...@us...> + * + * 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.taverna.io.action; + +import java.awt.Dimension; +import java.io.File; +import java.util.Iterator; + +import javax.swing.ImageIcon; +import javax.swing.JComponent; +import javax.swing.JFileChooser; +import javax.swing.JFrame; + +import org.embl.ebi.escience.scufl.Processor; +import org.embl.ebi.escience.scuflui.TavernaIcons; +import org.openscience.cdk.applications.taverna.actions.AbstractCDKProcessorAction; +import org.openscience.cdk.applications.taverna.io.ReadSMILESFromFile; +import org.openscience.cdk.applications.taverna.scuflworkers.cdk.CDKProcessor; +/* + * This class handles the action of the Read from Smiles file and creates an menu entry for this local processor + */ +public class ReadSMILESFromFileAction extends AbstractCDKProcessorAction { + private String descriptionAdder = ""; + + /* (non-Javadoc) + * @see org.embl.ebi.escience.scuflui.actions.AbstractProcessorAction#getComponent(org.embl.ebi.escience.scufl.Processor) + */ + @Override + public JComponent getComponent(Processor processor) { + if (!(processor instanceof CDKProcessor)) { + return null; + } + JFileChooser fileChooser = new JFileChooser(); + CDKProcessor proc = (CDKProcessor) processor; + final ReadSMILESFromFile reader = (ReadSMILESFromFile) proc.getWorker(); + boolean fileSearch = true; + try {; + String fileName = null; + fileChooser.setMultiSelectionEnabled(true); + while (fileSearch) { + if (reader.getFileNames() != null && reader.getFileNames().size() != 0) { + fileName = reader.getFileNames().get(0); + } + if (fileName != null && fileName.length() > 0) { + fileChooser.setCurrentDirectory(new java.io.File(fileName)); + } + // Is true if the user selects a file within the file chooser + fileChooser.setMultiSelectionEnabled(true); + if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { + File[] files = fileChooser.getSelectedFiles(); + for (int i = 0; i < files.length; i++) { + reader.addFileName(files[i].getAbsolutePath()); + } + fileSearch = false; + // Is true if the is in an format which is supported by the cdk-taverna project + } else { + fileSearch = false; + } + } + } catch (Exception e) { + return null; + } + // TODO Don't give null back!! Change this! + return null; + } + + /* (non-Javadoc) + * @see org.embl.ebi.escience.scuflui.spi.ProcessorActionSPI#canHandle(org.embl.ebi.escience.scufl.Processor) + */ + public boolean canHandle(Processor processor) { + if (!(processor instanceof CDKProcessor)) { + return false; + } + CDKProcessor proc = (CDKProcessor) processor; + if (proc.getWorker() instanceof ReadSMILESFromFile) { + ReadSMILESFromFile reader = (ReadSMILESFromFile)proc.getWorker(); + File file; + String temp = ""; + if (reader.getFileNames().size() != 0) { + for (Iterator iterator = reader.getFileNames().iterator(); iterator + .hasNext();) { + String fileName = (String) iterator.next(); + file = new File(fileName); + if (file.isFile()) { + temp += file.getName() + "; "; + } + } + + if (temp.length() != 0) { + this.descriptionAdder = " - selected file: " + temp; + } + } + else { + this.descriptionAdder = ""; + } + return true; + } + else { + return false; + } + } + + /* (non-Javadoc) + * @see org.embl.ebi.escience.scuflui.spi.ProcessorActionSPI#getDescription() + */ + public String getDescription() { + return "Open File" + this.descriptionAdder; + } + + /* (non-Javadoc) + * @see org.embl.ebi.escience.scuflui.actions.AbstractProcessorAction#getFrameSize() + */ + public Dimension getFrameSize() { + // should be small enough due to using a file dialog + return new Dimension(1, 1); + } + + + /* (non-Javadoc) + * @see org.embl.ebi.escience.scuflui.spi.ProcessorActionSPI#getIcon() + */ + public ImageIcon getIcon() { + return TavernaIcons.openIcon; + } + + @Override + public JFrame getFrame(Processor processor) { + return null; + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |