001/* An action to load parameters from a file..
002 * 
003 * Copyright (c) 2017 The Regents of the University of California.
004 * All rights reserved.
005 *
006 * '$Author: crawl $'
007 * '$Date: 2017-07-14 00:01:00 +0000 (Fri, 14 Jul 2017) $' 
008 * '$Revision: 34590 $'
009 * 
010 * Permission is hereby granted, without written agreement and without
011 * license or royalty fees, to use, copy, modify, and distribute this
012 * software and its documentation for any purpose, provided that the above
013 * copyright notice and the following two paragraphs appear in all copies
014 * of this software.
015 *
016 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
017 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
018 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
019 * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
020 * SUCH DAMAGE.
021 *
022 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
023 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
024 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
025 * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
026 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
027 * ENHANCEMENTS, OR MODIFICATIONS.
028 *
029 */
030
031package org.kepler.gui;
032
033import java.awt.Color;
034import java.awt.event.ActionEvent;
035import java.io.File;
036
037import javax.swing.JFileChooser;
038
039import org.kepler.util.ParseWorkflowUtil;
040
041import ptolemy.actor.gui.PtolemyFrame;
042import ptolemy.actor.gui.TableauFrame;
043import ptolemy.gui.JFileChooserBugFix;
044import ptolemy.gui.PtFileChooser;
045import ptolemy.kernel.util.IllegalActionException;
046import ptolemy.util.MessageHandler;
047import ptolemy.vergil.toolbox.FigureAction;
048
049/** An action to load parameters from a file.
050 * 
051 * @author Daniel Crawl
052 * @version $Id: LoadParametersAction.java 34590 2017-07-14 00:01:00Z crawl $
053 *
054 */
055public class LoadParametersAction extends FigureAction {
056
057    public LoadParametersAction(TableauFrame frame) {
058        super("");
059        _parent = frame;
060    }
061
062    @Override
063    public void actionPerformed(ActionEvent event) {
064        super.actionPerformed(event);
065        
066        File parameterFile = null;
067        
068        // Avoid white boxes in file chooser, see
069        // http://bugzilla.ecoinformatics.org/show_bug.cgi?id=3801
070        JFileChooserBugFix jFileChooserBugFix = new JFileChooserBugFix();
071        Color background = null;
072        PtFileChooser chooser = null;
073
074        try {
075            background = jFileChooserBugFix.saveBackground();
076            chooser = new PtFileChooser(_parent, "Open",
077                    JFileChooser.OPEN_DIALOG);
078
079            int returnVal = chooser.showDialog(_parent, "Open");
080            if (returnVal == JFileChooser.APPROVE_OPTION) {
081                parameterFile = chooser.getSelectedFile();
082            }
083        } finally {
084            jFileChooserBugFix.restoreBackground(background);
085        }
086        
087        if(parameterFile != null) {
088            try {
089                ParseWorkflowUtil.setParametersFromFile(((PtolemyFrame)_parent).getModel().toplevel(), parameterFile.getAbsolutePath());
090            } catch(IllegalActionException e) {
091                MessageHandler.error("Error setting parameters.", e);
092            }
093        }
094    }
095    
096    private TableauFrame _parent;
097}