001/* An action to display size information for the workflow.
002 * 
003 * Copyright (c) 2014 The Regents of the University of California.
004 * All rights reserved.
005 *
006 * '$Author: crawl $'
007 * '$Date: 2015-08-24 22:44:14 +0000 (Mon, 24 Aug 2015) $' 
008 * '$Revision: 33630 $'
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.BorderLayout;
034import java.awt.Container;
035import java.awt.event.ActionEvent;
036
037import javax.swing.JFrame;
038import javax.swing.JPanel;
039import javax.swing.JScrollPane;
040import javax.swing.JTextArea;
041
042import ptolemy.actor.gui.PtolemyFrame;
043import ptolemy.actor.gui.TableauFrame;
044import ptolemy.kernel.CompositeEntity;
045import ptolemy.kernel.util.NamedObj;
046import ptolemy.util.MessageHandler;
047import ptolemy.vergil.toolbox.FigureAction;
048
049/**
050 * An action to display size statistics for the workflow.
051 * 
052 * @author Philippe Huynh, Daniel Crawl
053 * @version $Id: DisplayWorkflowSizeStatisticsAction.java 33630 2015-08-24 22:44:14Z crawl $
054 * 
055 */
056public class DisplayWorkflowSizeStatisticsAction extends FigureAction {
057
058    public DisplayWorkflowSizeStatisticsAction(TableauFrame frame) {
059        super("");
060        _parent = frame;
061    }
062
063    @Override
064    public void actionPerformed(ActionEvent event) {
065        super.actionPerformed(event);
066
067        NamedObj model = ((PtolemyFrame) _parent).getModel().toplevel();
068        String stat = null;
069
070        try {
071            stat = ((CompositeEntity) model).statistics(null);
072        } catch (Exception e) {
073            MessageHandler.error("Unable to load statistics:", e);
074        }
075        if (stat != null) {
076            JPanel aPanel = new JPanel();
077            JTextArea jtAreaOutput = new JTextArea(30, 50);
078            jtAreaOutput.setText(stat);
079            jtAreaOutput.setEditable(false);
080            JScrollPane scrollPane = new JScrollPane(jtAreaOutput,
081                    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
082                    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
083            aPanel.setLayout(new BorderLayout());
084            aPanel.add(scrollPane, BorderLayout.CENTER);
085            JFrame frame = new JFrame("Workflow Size Statistics of "
086                    + model.getName());
087            frame.setIconImage(((JFrame) _parent).getIconImage());
088            Container contentPane = frame.getContentPane();
089            contentPane.add(aPanel);
090            frame.pack();
091            frame.setLocationRelativeTo(null);
092            frame.setVisible(true);
093        }
094    }
095
096    /** The parent frame. */
097    private TableauFrame _parent;
098}