/* * Copyright (c) 2010 Pentaho Corporation. All rights reserved. * This software was developed by Pentaho Corporation and is provided under the terms * of the GNU Lesser General Public License, Version 2.1. You may not use * this file except in compliance with the license. If you need a copy of the license, * please go to http://www.gnu.org/licenses/lgpl-2.1.txt. The Original Code is Time Series * Forecasting. The Initial Developer is Pentaho Corporation. * * Software distributed under the GNU Lesser Public License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to * the license for the specific language governing your rights and limitations. */ /* * ExplorerTSPanel.java * Copyright (C) 2010 Pentaho Corporation */ package weka.classifiers.timeseries.gui.explorer; import java.awt.BorderLayout; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import java.io.BufferedReader; import java.io.FileReader; import weka.classifiers.timeseries.gui.ForecastingPanel; import weka.core.Instances; import weka.gui.LogPanel; import weka.gui.Logger; import weka.gui.WekaTaskMonitor; import weka.gui.explorer.Explorer; import weka.gui.explorer.Explorer.ExplorerPanel; import weka.gui.explorer.Explorer.LogHandler; /** * GUI class that provides a time series forecasting plugin tab for the Weka * Explorer. Wraps around the ForecastingPanel. * * @author Mark Hall (mhall{[at]}pentaho{[dot]}com) * @version $Revision: 49983 $ */ public class ExplorerTSPanel extends JPanel implements ExplorerPanel, LogHandler { /** For serialization */ private static final long serialVersionUID = -7313227058091543628L; /** Logging object */ protected Logger m_log; /** The forecasting panel to wrap */ protected ForecastingPanel m_forecastingPanel; /** * Constructor */ public ExplorerTSPanel() { setLayout(new BorderLayout()); m_forecastingPanel = new ForecastingPanel(null, false, false, false); add(m_forecastingPanel, BorderLayout.CENTER); } /** * Unused */ public void setExplorer(Explorer parent) { } /** * Unused - just returns null * * @return null */ public Explorer getExplorer() { return null; } /** * Set the working instances for this panel. Passes the instances on to the * wrapped ForecastingPanel * * @param inst the instances to use */ public void setInstances(Instances inst) { if (m_forecastingPanel != null) { try { m_forecastingPanel.setInstances(inst); } catch (Exception ex) { if (m_log != null) { m_log.logMessage(ex.getMessage()); } ex.printStackTrace(); } } } /** * Get the title for this tab * * @return the title for this tab */ public String getTabTitle() { return "Forecast"; } /** * Get the tool tip for this tab * * @return the tool tip for this tab */ public String getTabTitleToolTip() { return "Build and evaluate time series forecasting models"; } /** * Set the logging object to use * * @param newLog the log to use */ public void setLog(Logger newLog) { if (newLog instanceof JComponent && m_forecastingPanel != null) { m_log = newLog; m_forecastingPanel.setLog(newLog); } } /** * Main method for testing this class. Expects the path to an ARFF file * as an argument * * @param args an array of command line arguments */ public static void main(String[] args) { try { Instances insts = new Instances(new BufferedReader(new FileReader(args[0]))); final ExplorerTSPanel pan = new ExplorerTSPanel(); pan.setInstances(insts); pan.setLog(new LogPanel(new WekaTaskMonitor())); final JFrame frame = new JFrame("Forecasting"); frame.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { frame.dispose(); System.exit(1); } }); frame.setSize(800, 600); frame.setContentPane(pan); frame.setVisible(true); } catch (Exception ex) { ex.printStackTrace(); } } }