// PropertiesDialog.java
// Last modified 11/07/08

package lab09;

import javax.swing.*;
import java.awt.*;

/**
 *
 * @author J.K. Daugherty
 */
public class PropertiesDialog extends JDialog {
    private DisplayFrame frame;
    private BinaryTree bintree;
    
    public PropertiesDialog (DisplayFrame parent, boolean modal) {
        this (parent, "", modal);
    }
    
    public PropertiesDialog (DisplayFrame parent, String title, boolean modal) {

        super(parent, title, modal);
        frame = (DisplayFrame) parent;
        bintree = frame.getBinaryTree();

        setSize (300, 300);
        setLocationRelativeTo (frame);
        setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
        setTitle("Binary Tree Properties");
        
        initComponents();

        if (!bintree.isEmpty()) {
            fldMinimum.setText(bintree.getMinValue());
            fldMaximum.setText(bintree.getMaxValue());
        }
        fldNodes.setText("" + bintree.size());
        fldDepth.setText("" + bintree.getDepth());
    }
    
    private void initComponents() {
        GridBagConstraints gridBagConstraints;

        lblMinimum = new javax.swing.JLabel();
        fldMinimum = new javax.swing.JTextField();
        lblMaximum = new javax.swing.JLabel();
        fldMaximum = new javax.swing.JTextField();
        lblNodes = new javax.swing.JLabel();
        fldNodes = new javax.swing.JTextField();
        lblDepth = new javax.swing.JLabel();
        fldDepth = new javax.swing.JTextField();
        btnExit = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.GridBagLayout());

        lblMinimum.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        lblMinimum.setText("Minimum:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5);
        getContentPane().add(lblMinimum, gridBagConstraints);

        fldMinimum.setColumns(5);
        fldMinimum.setEditable(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
        getContentPane().add(fldMinimum, gridBagConstraints);

        lblMaximum.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        lblMaximum.setText("Maximum:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5);
        getContentPane().add(lblMaximum, gridBagConstraints);

        fldMaximum.setColumns(5);
        fldMaximum.setEditable(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
        getContentPane().add(fldMaximum, gridBagConstraints);

        lblNodes.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        lblNodes.setText("Nodes:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5);
        getContentPane().add(lblNodes, gridBagConstraints);

        fldNodes.setColumns(3);
        fldNodes.setEditable(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
        getContentPane().add(fldNodes, gridBagConstraints);

        lblDepth.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        lblDepth.setText("Depth:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5);
        getContentPane().add(lblDepth, gridBagConstraints);

        fldDepth.setColumns(3);
        fldDepth.setEditable(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
        getContentPane().add(fldDepth, gridBagConstraints);

        btnExit.setText("Exit");
        btnExit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExitActionPerformed(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.insets = new java.awt.Insets(30, 0, 0, 0);
        getContentPane().add(btnExit, gridBagConstraints);

    }//GEN-END:initComponents

    private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExitActionPerformed
        setVisible(false);
        dispose();
    }//GEN-LAST:event_btnExitActionPerformed
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PropertiesDialog(new DisplayFrame(), true).setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnExit;
    private javax.swing.JTextField fldDepth;
    private javax.swing.JTextField fldMaximum;
    private javax.swing.JTextField fldMinimum;
    private javax.swing.JTextField fldNodes;
    private javax.swing.JLabel lblDepth;
    private javax.swing.JLabel lblMaximum;
    private javax.swing.JLabel lblMinimum;
    private javax.swing.JLabel lblNodes;
    // End of variables declaration//GEN-END:variables
    
}
