/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * GUIChooser.java * Copyright (C) 1999 Len Trigg * */ package weka.gui; import weka.gui.explorer.Explorer; import weka.gui.experiment.Experimenter; import weka.gui.beans.KnowledgeFlow; import java.awt.Panel; import java.awt.Button; import java.awt.GridLayout; import java.awt.Frame; import java.awt.Label; import java.awt.BorderLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Image; import java.awt.Toolkit; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.BorderFactory; /** * The main class for the Weka GUIChooser. Lets the user choose * which GUI they want to run. * * @author Len Trigg (trigg@cs.waikato.ac.nz) * @author Mark Hall (mhall@cs.waikato.ac.nz) * @version $Revision: 1.1.1.1 $ */ public class GUIChooser extends Frame { /** Click to open the simplecli */ protected Button m_SimpleBut = new Button("Simple CLI"); /** Click to open the Explorer */ protected Button m_ExplorerBut = new Button("Explorer"); /** Click to open the Explorer */ protected Button m_ExperimenterBut = new Button("Experimenter"); /** Click to open the KnowledgeFlow */ protected Button m_KnowledgeFlowBut = new Button("KnowledgeFlow"); /** The SimpleCLI */ protected SimpleCLI m_SimpleCLI; /** The frame containing the explorer interface */ protected JFrame m_ExplorerFrame; /** The frame containing the experiment interface */ protected JFrame m_ExperimenterFrame; /** The frame containing the knowledge flow interface */ protected JFrame m_KnowledgeFlowFrame; /** The weka image */ Image m_weka = Toolkit.getDefaultToolkit(). getImage(ClassLoader.getSystemResource("weka/gui/weka3.gif")); /** * Creates the experiment environment gui with no initial experiment */ public GUIChooser() { super("Weka GUI Chooser"); boolean haveSwing = true; try { Class c = Class.forName("javax.swing.JFrame"); } catch (Exception ex) { haveSwing = false; } if (!haveSwing) { System.err.println("Swing is not installed"); // Pop up dialog saying you get extra if you have swing setLayout(new GridLayout(2, 1)); add(m_SimpleBut); add(new Label("Swing is not installed")); } else { Image icon = Toolkit.getDefaultToolkit(). getImage(ClassLoader.getSystemResource("weka/gui/weka_icon.gif")); setIconImage(icon); setLayout(new BorderLayout()); JPanel wbuts = new JPanel(); wbuts.setBorder(BorderFactory.createTitledBorder("GUI")); wbuts.setLayout(new GridLayout(2, 2)); wbuts.add(m_SimpleBut); wbuts.add(m_ExplorerBut); wbuts.add(m_ExperimenterBut); wbuts.add(m_KnowledgeFlowBut); add(wbuts, BorderLayout.SOUTH); JPanel wekaPan = new JPanel(); wekaPan.setToolTipText("Weka, a native bird of New Zealand"); ImageIcon wii = new ImageIcon(m_weka); JLabel wekaLab = new JLabel(wii); wekaPan.add(wekaLab); add(wekaPan, BorderLayout.CENTER); JPanel titlePan = new JPanel(); titlePan.setLayout(new GridLayout(6,1)); titlePan.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 5)); titlePan.add(new JLabel("Waikato Environment for", SwingConstants.CENTER)); titlePan.add(new JLabel("Knowledge Analysis", SwingConstants.CENTER)); titlePan.add(new JLabel("")); titlePan.add(new JLabel("(c) 1999 - 2003", SwingConstants.CENTER)); titlePan.add(new JLabel("University of Waikato", SwingConstants.CENTER)); titlePan.add(new JLabel("New Zealand", SwingConstants.CENTER)); add(titlePan, BorderLayout.NORTH); } m_SimpleBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (m_SimpleCLI == null) { m_SimpleBut.setEnabled(false); try { m_SimpleCLI = new SimpleCLI(); } catch (Exception ex) { throw new Error("Couldn't start SimpleCLI!"); } m_SimpleCLI.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent w) { m_SimpleCLI.dispose(); m_SimpleCLI = null; m_SimpleBut.setEnabled(true); checkExit(); } }); m_SimpleCLI.setVisible(true); } } }); m_ExplorerBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (m_ExplorerFrame == null) { m_ExplorerBut.setEnabled(false); m_ExplorerFrame = new JFrame("Weka Knowledge Explorer"); m_ExplorerFrame.getContentPane().setLayout(new BorderLayout()); m_ExplorerFrame.getContentPane() .add(new Explorer(), BorderLayout.CENTER); m_ExplorerFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent w) { m_ExplorerFrame.dispose(); m_ExplorerFrame = null; m_ExplorerBut.setEnabled(true); checkExit(); } }); m_ExplorerFrame.pack(); m_ExplorerFrame.setSize(800, 600); m_ExplorerFrame.setVisible(true); } } }); m_ExperimenterBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (m_ExperimenterFrame == null) { m_ExperimenterBut.setEnabled(false); m_ExperimenterFrame = new JFrame("Weka Experiment Environment"); m_ExperimenterFrame.getContentPane().setLayout(new BorderLayout()); m_ExperimenterFrame.getContentPane() .add(new Experimenter(false), BorderLayout.CENTER); m_ExperimenterFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent w) { m_ExperimenterFrame.dispose(); m_ExperimenterFrame = null; m_ExperimenterBut.setEnabled(true); checkExit(); } }); m_ExperimenterFrame.pack(); m_ExperimenterFrame.setSize(800, 600); m_ExperimenterFrame.setVisible(true); } } }); m_KnowledgeFlowBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (m_KnowledgeFlowFrame == null) { m_KnowledgeFlowBut.setEnabled(false); m_KnowledgeFlowFrame = new JFrame("Weka KnowledgeFlow Environment"); m_KnowledgeFlowFrame.getContentPane().setLayout(new BorderLayout()); m_KnowledgeFlowFrame.getContentPane() .add(new KnowledgeFlow(), BorderLayout.CENTER); m_KnowledgeFlowFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent w) { m_KnowledgeFlowFrame.dispose(); m_KnowledgeFlowFrame = null; m_KnowledgeFlowBut.setEnabled(true); checkExit(); } }); m_KnowledgeFlowFrame.pack(); m_KnowledgeFlowFrame.setSize(800, 600); m_KnowledgeFlowFrame.setVisible(true); } } }); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent w) { dispose(); checkExit(); } }); pack(); } /** * Kills the JVM if all windows have been closed. */ private void checkExit() { if (!isVisible() && (m_SimpleCLI == null) && (m_ExplorerFrame == null) && (m_ExperimenterFrame == null) && (m_KnowledgeFlowFrame == null)) { System.exit(0); } } /** * Tests out the GUIChooser environment. * * @param args ignored. */ public static void main(String [] args) { try { GUIChooser c = new GUIChooser(); c.setVisible(true); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); } } }