//==============================================  
// Numerical WorkSheet Input Panel for Bisection Approximation
//==============================================
//   This class is used to set up the Bisection approximation
// method layout for the applet Numerical Worksheet. Data is
// collected from this panel when the WorkSheet is called to
// the process the input equation.
//
//                      
<< BisectionPanel.java >>
//
//==============================================
// Copyright (C) 1999-2004 Dana M. Proctor
// Version 2.4 5/11/2005
//
// 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., 59 Temple
// Place, Suite 330, Boston, MA 02111-1307 USA
// (http://opensource.org)
//
//================================================
// Revision History
// Changes to the code should be documented here and reflected
// in the present version number. Author information should
// also be included with the original copyright author.
//================================================
// Version 1.0 Original Stand Alone Applet.
//              1.1 Sub-Division into Numerical WorkSheet.
//             
1.2 Implementation of Intermediate Output.
//                      1.3 Renamed BisectionPanel.
//                      1.4 Package Creation/Inclusion.
//                      1.5 SubClassed to MethodPanel
//             
1.6 Removed Gridbag Method. Common to WorkSheet.
//                      2.0 Upgrade with WorkSheet to Swing.
//                      2.1 GPL Inclusion and JavaDoc Addition.
//             
2.2 buildConst Changed to NA_Utils Class.
//              2.3 Privatized All Class Instance Variables.
//              2.4 Misc. Comment Changes.
//-------------------------------------------------------------
//                       
danap_n_mt@users.sourceforge.net
//==================================================
package net.danap.numericalworksheet;
import java.awt.*;
import javax.swing.*;
/**
 * The BisectionPanel used for collecting input data
 * required to execute the Bisection approximation.
 *
 * @author Dana M. Proctor
 * @version 2.4 05/11/2005
 */
class BisectionPanel extends JPanel
{
      //=============================================
      // Required class fields creation.
      //=============================================
      private static JTextField txtFieldEndpointA, txtFieldEndpointB;
      private static JTextField txtFieldTolerance, txtFieldIterations;
      private static JCheckBox checkboxIntermediateData;
      private JLabel labelHeading, labelEndpointA, labelEndpointB;
      private JLabel labelTolerance, labelIterations;
      //=============================================
      // Bisection Panels Constructor
     
	//=============================================
      protected BisectionPanel()
      {
            //==================================================
            // Creation of Labels and Setting up the Panel GUI.
            //==================================================
       
            String Heading = ("Bisection Method Approximation");
            labelHeading = new JLabel(Heading, JLabel.CENTER);
           
labelHeading.setFont(labelHeading.getFont().deriveFont(Font.BOLD));
       
            labelEndpointA = new JLabel("Interval Endpoint A");
            txtFieldEndpointA = new JTextField(10);
            labelEndpointB = new JLabel("Interval Endpoint B", JLabel.CENTER);
            txtFieldEndpointB = new JTextField(10);
            labelTolerance = new JLabel("Approximation Tolerance", JLabel.CENTER);
            txtFieldTolerance = new JTextField(16);
            labelIterations = new JLabel("Number of Iterations", JLabel.CENTER);
            txtFieldIterations = new JTextField(6);
       
            checkboxIntermediateData = new JCheckBox("Intermediate Output Data");
       
            GridBagLayout gridbag = new GridBagLayout();
            GridBagConstraints inputMain = new GridBagConstraints();
            setLayout(gridbag);
       
            //===================================================
            // Adding Labels, TextFields, and Checkbox to the panel.
            //===================================================
    
            NA_Utils.buildConst(inputMain, 0,0,2,1,100,100);
            inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.CENTER;
            gridbag.setConstraints(labelHeading, inputMain);
            add(labelHeading);
       
            NA_Utils.buildConst(inputMain, 0,1,1,1,100,100);
            inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.WEST;
            gridbag.setConstraints(labelEndpointA, inputMain);
            add(labelEndpointA);
       
            NA_Utils.buildConst(inputMain, 1,1,2,1,100,100);
            inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.WEST;
            gridbag.setConstraints(txtFieldEndpointA, inputMain);
            add(txtFieldEndpointA);
       
            NA_Utils.buildConst(inputMain, 0,2,1,1,100,100);
            inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.WEST;
            gridbag.setConstraints(labelEndpointB, inputMain);
            add(labelEndpointB);
       
            NA_Utils.buildConst(inputMain, 1,2,1,1,100,100);
            inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.WEST;
            gridbag.setConstraints(txtFieldEndpointB, inputMain);
            add(txtFieldEndpointB);
       
            NA_Utils.buildConst(inputMain, 0,3,1,1,100,100);
            inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.WEST;
            gridbag.setConstraints(labelTolerance, inputMain);
            add(labelTolerance);
       
            NA_Utils.buildConst(inputMain, 1,3,1,1,100,100);
            inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.WEST;
            gridbag.setConstraints(txtFieldTolerance, inputMain);
            add(txtFieldTolerance);
       
            NA_Utils.buildConst(inputMain, 0,4,1,1,100,100);
            inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.WEST;
            gridbag.setConstraints(labelIterations, inputMain);
            add(labelIterations);
       
           
		NA_Utils.buildConst(inputMain, 1,4,1,1,10,100);
           
		inputMain.fill = GridBagConstraints.NONE;
            inputMain.anchor = GridBagConstraints.WEST;
           
		gridbag.setConstraints(txtFieldIterations, inputMain);
            add(txtFieldIterations);
       
            NA_Utils.buildConst(inputMain, 1,5,1,1,100,100);
           
		inputMain.fill = GridBagConstraints.NONE;
           
		inputMain.anchor = GridBagConstraints.WEST;
           
		gridbag.setConstraints(checkboxIntermediateData, inputMain);
            add(checkboxIntermediateData);
      
	}
   
      
	//==================================================
      
	// Class method for outside classes to obtain the
      
	// TextField Strings from this panel.
      
	//==================================================
	
      protected static String getData(String getData)
      {
            if (getData == "endPointA")
                  return txtFieldEndpointA.getText();
            if (getData == "endPointB")
                  return txtFieldEndpointB.getText();
            if (getData == "tolerance")
                  return txtFieldTolerance.getText();
            else
                  return txtFieldIterations.getText();
      }
   
      //==================================================
      // Class method for outside classes to clear the
      // TextField Strings in the panel.
      //==================================================
	
      protected static void clearTextFields()
      {
            txtFieldEndpointA.setText("");
            txtFieldEndpointB.setText("");
            txtFieldTolerance.setText("");
            txtFieldIterations.setText("");
      }
   
      //==================================================
      // Class method for outside classes to obtain the
      // Checkbox State from this panel.
      //==================================================
	
      protected static boolean getStateCheckbox()
      {
            return checkboxIntermediateData.isSelected();
      }
}