/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package thegrader;

import java.awt.*;
import java.awt.event.*;

import javax.swing.border.*;

import javax.swing.border.Border;
import javax.swing.event.*;
import javax.swing.*;
import javax.swing.event.ChangeListener;

import MSlider.*;

public class CategoryWeights extends JFrame {
   //MThumbSlider mSlider;
   JSlider mSlider;
   JButton addCat, applyBtn, okBtn, cancelBtn;
   NewCategory newCat;

   public class CategoryPanel extends JPanel {
      JTextField text;

      public CategoryPanel(String name, int weight) {
         getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
         text = new JTextField(2);
         text.setText(Integer.toString(weight));
         add(new JLabel(name + ": "));
         add(text);
         add(new JLabel("%"));
         pack();
      }
   }

   public class NewCategory extends JFrame {
      JTextField name;
      JButton okBtn, cancelBtn;

      public NewCategory() {
         JPanel pan = new JPanel();
         setTitle("Add New Category");

         pan.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
         pan.setLayout(new BoxLayout(pan, BoxLayout.X_AXIS));
         pan.add(new JLabel("Category Name: "));
         pan.add(name = new JTextField(20));
         add(pan);

         pan = new JPanel();
         pan.setBorder(BorderFactory.createEmptyBorder(0,10,10,10));
         pan.setLayout(new BoxLayout(pan, BoxLayout.X_AXIS));
         pan.add(okBtn = new JButton("OK"));
         pan.add(cancelBtn = new JButton("Cancel"));
         add(pan);

         getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));

         pack();

         okBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
               NewCategory.this.setVisible(false);
            }
         });

         cancelBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
               NewCategory.this.setVisible(false);
            }
         });
      }
   }

   public CategoryWeights() {
      JPanel pan, pan2;
      setTitle("Category Weights");

      pan = new JPanel();
      pan.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
      pan.setLayout(new BoxLayout(pan, BoxLayout.X_AXIS));
      pan.setAlignmentX(LEFT_ALIGNMENT);
      pan.add(addCat = new JButton("Add Category"));
      add(pan);

      /*mSlider = new MThumbSlider(2);
      mSlider.setValueAt(20, 0);
      mSlider.setValueAt(45, 1);*/
      mSlider = new JSlider();
      mSlider.setPreferredSize(new Dimension(600, 20));
      mSlider.setMaximumSize(new Dimension(600, 20));
      pan2 = new JPanel();
      pan = new JPanel();
      pan.setLayout(new BoxLayout(pan, BoxLayout.Y_AXIS));
      pan.setBorder(BorderFactory.createEtchedBorder());
      pan2.add(mSlider);
      pan.add(pan2);
      pan2 = new JPanel();
      pan2.add(new JLabel("Homework                         Midterms                                                                Final                                      "));
      pan.add(pan2);
      add(pan);

      pan = new JPanel();
      pan.setLayout(new BoxLayout(pan, BoxLayout.Y_AXIS));
      pan.add(new CategoryPanel("Homework", 20));
      pan.add(new CategoryPanel("Midterms", 25));
      pan.add(new CategoryPanel("Final", 55));
      pan.setAlignmentX(LEFT_ALIGNMENT);
      add(pan);

      pan = new JPanel();
      pan.add(applyBtn = new JButton("Apply"));
      pan.add(okBtn = new JButton("OK"));
      pan.add(cancelBtn = new JButton("Cancel"));
      add(pan);

      getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
      pack();

      okBtn.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            CategoryWeights.this.setVisible(false);
         }
      });
      cancelBtn.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            CategoryWeights.this.setVisible(false);
         }
      });

      addCat.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            if (newCat == null)
               newCat = new NewCategory();

            newCat.setVisible(true);
         }
      });
   }
}