Mercurial > repos > yufei-luo > s_mart
diff SMART/Java/Program.java @ 6:769e306b7933
Change the repository level.
author | yufei-luo |
---|---|
date | Fri, 18 Jan 2013 04:54:14 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SMART/Java/Program.java Fri Jan 18 04:54:14 2013 -0500 @@ -0,0 +1,175 @@ +/** + * + * Copyright INRA-URGI 2009-2010 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + */ +import java.util.*; +import java.awt.*; +import javax.swing.*; + + +public class Program { + String shortName; + String name; + String section; + String description; + Vector <ProgramOption> options; + JPanel panel; + JButton button; + + + public Program() { + this.shortName = null; + this.name = null; + this.options = new Vector <ProgramOption> (); + } + + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + + public void setName(String name) { + this.name = name; + } + + + public void setSection(String section) { + this.section = section; + } + + public void setDescription(String description) { + this.description = description; + } + + + public void addOption(ProgramOption option) { + options.add(option); + } + + + public String getShortName() { + return this.shortName; + } + + + public String getName() { + return this.name; + } + + + public String getSection() { + return this.section; + } + + public String getDescription() { + return this.description; + } + + + public String checkValues() { + for (int i = 0; i < options.size(); i++) { + String comment = options.get(i).checkValue(); + if (comment != null) { + return comment; + } + } + return null; + } + + + public LinkedList<String> getCommand() { + LinkedList<String> parameterList = new LinkedList<String>(); + parameterList.add(Global.pythonCommand); + parameterList.add("Python" + java.io.File.separator + this.shortName); + for (int i = 0; i < options.size(); i++) { + ProgramOption option = options.get(i); + parameterList.addAll(option.getCommand()); + } + return parameterList; + } + + + public JPanel getPanel() { + if (this.panel != null) { + return this.panel; + } + + this.panel = new JPanel(false); + this.panel.setLayout(new FlowLayout()); + Box box = Box.createVerticalBox(); + + JPanel descriptionPanel = new JPanel(false); + JLabel descriptionLabel = new JLabel(this.description); + descriptionPanel.add(descriptionLabel); + box.add(descriptionPanel); + + for (int i = 0; i < options.size(); i++) { + ProgramOption option = options.get(i); + JPanel panel = option.getPanel(); + if (panel == null) { + System.out.println("Problem with Python program '" + this.shortName + "'."); + return null; + } + box.add(option.getPanel()); + } + + JPanel buttonPanel = new JPanel(false); + this.button = new JButton("GO!"); + + buttonPanel.add(button); + + box.add(buttonPanel); + + this.panel.add(box); + + return this.panel; + } + + + public JButton getButton() { + if (this.button == null) { + this.getPanel(); + } + return this.button; + } + + + public Vector < File > getOutputFiles() { + Vector < File > files = new Vector < File > (); + for (int i = 0; i < options.size(); i++) { + ProgramOption option = options.get(i); + if (! option.isInput()) { + files.add(option.getOutputFile()); + } + } + return files; + } +}