/* * GMGenSystem.java - main class for GMGen * Copyright (C) 2003 Devon Jones, Emily Smirle * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Created on May 24, 2003 */ package gmgen; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.Component; /** * This class is the main {@code JPanel} for the whole application. It is * a {@code JTabbedPane} so that it can hold many tabs for each section of * functionality.<br> * Created on February 20, 2003.<br> * Updated on February 26, 2003. * *@author Expires 2003 */ public class GMGenSystemView extends JPanel implements ChangeListener { /** * A value that signifies the current pane that is showing. Is not directly * used in this class, but is needed to support interface * * TODO How can this support anything when Eclipse shows this is assigned * (below) but never used? An interface is not requiring this, and can't * because it's static... - thpr 10/27/06 */ public static int currentPane; /** * The {@code JPanel} that holds the panes. */ private static JTabbedPane tabbedPane; /** * Creates an instance of this class. It creates the tabbed pane, sets the * layout, and registers all the listeners. * */ public GMGenSystemView() { /* * TODO This is very strange - multiple instances of GMGenSystemView can * theoretically be created, but then they will share a JTabbedPane * because it is static?? - thpr 10/27/06 */ tabbedPane = new JTabbedPane(); initComponents(); tabbedPane.addChangeListener(this); } /** * Gets the {@code JPanel} that is the tabbed pane. * *@return the tabbed pane. */ public static JTabbedPane getTabPane() { return tabbedPane; } /** * Inserts a pane into the panel in an arbitrary index. The system will call * it sending it a {@code JPanel} and that will be placed in the view. * *@param paneName the name to be on the tab. *@param pane the pane to be displayed. *@param index index to place the pane at */ public void insertPane(String paneName, Component pane, int index) { tabbedPane.insertTab(paneName, null, pane, paneName, index); } /** * Places the whole {@code JTabbedPane} on the main frame setting it * visible. * */ public void showPane() { add(tabbedPane, java.awt.BorderLayout.CENTER); } /** * Updates the current pane value for further use. * *@param e an event that made the change change. */ @Override public void stateChanged(ChangeEvent e) { currentPane = getTabPane().getSelectedIndex(); } /** * Initializes the GUI components and sets up the layout being used. * */ private void initComponents() { setLayout(new java.awt.BorderLayout()); } }