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

package thegrader;

/**
 *
 * @author Mike
 */
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class GradingScheme extends JFrame {
   JPanel pan, bigPan;
   JList list;
   DefaultListModel mod;
   JButton okBtn, cancelBtn, applyBtn, addSchemeBtn, deleteSchemeBtn;

   private static class ValuePanel extends JPanel {
      JTextField symbol;
      JComboBox color;
      JTextField percentage;

      public ValuePanel() {
         symbol = new JTextField();
         symbol.setPreferredSize(new Dimension(40, 22));
         color = new JComboBox();
         color.setPreferredSize(new Dimension(150, 22));
         color.addItem("Black");
         color.addItem("Red");
         color.addItem("Orange");
         color.addItem("Yellow");
         color.addItem("Green");
         color.addItem("Blue");
         color.addItem("Violet");
         color.addItem("White");
         color.addItem("Custom...");
         percentage = new JTextField();
         percentage.setPreferredSize(new Dimension(40, 22));
         add(symbol);
         add(color);
         add(percentage);
      }
   }

   public GradingScheme() {
      setResizable(false);
      JPanel buttons = new JPanel(), saveButtons = new JPanel();
      list = new JList(mod = new DefaultListModel());
      mod.addElement("Plus-Minus");
      mod.addElement("Pass-Fail");
      JScrollPane listScroll = new JScrollPane(list);
      listScroll.setPreferredSize(new Dimension(200, 80));
      list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
      list.setVisibleRowCount(4);
      list.setLayoutOrientation(JList.VERTICAL);
      pan = new JPanel();
      bigPan = new JPanel();
      GridLayout lay = new GridLayout(8, 2);
      JPanel mid = new JPanel(), top = new JPanel();
      JTextField text = new JTextField();
      text.setPreferredSize(new Dimension(200, 22));
      mid.add(new JLabel("Scheme Name: "));
      mid.add(text);
      buttons.setLayout(new BoxLayout(buttons, BoxLayout.Y_AXIS));
      buttons.add(addSchemeBtn = new JButton("Add Scheme"));
      buttons.add(deleteSchemeBtn = new JButton("Delete Scheme"));
      top.add(listScroll, BorderLayout.CENTER);
      top.add(buttons, BorderLayout.EAST);
      setTitle("Manage Grading Schemes");
      lay.setHgap(10);
      pan.setLayout(lay);
      bigPan.setLayout(new BoxLayout(bigPan, BoxLayout.Y_AXIS));
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      pan.add(new ValuePanel());
      setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

      bigPan.add(top);
      bigPan.add(mid);
      JPanel labels = new JPanel();
      labels.add(new JLabel("Symbol                     Color              Percentage    Symbol                   Color               Percentage"));
      bigPan.add(labels);
      saveButtons.setLayout(new BoxLayout(saveButtons, BoxLayout.X_AXIS));
      saveButtons.add(okBtn = new JButton("OK"), Component.LEFT_ALIGNMENT);
      saveButtons.add(cancelBtn = new JButton("Cancel"), Component.LEFT_ALIGNMENT);
      saveButtons.add(applyBtn = new JButton("Apply"), Component.LEFT_ALIGNMENT);
      bigPan.add(pan);
      bigPan.add(saveButtons);
      bigPan.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
      add(bigPan);
      pack();

      //Event listeners

      addSchemeBtn.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            mod.addElement("New Scheme");
         }
      });

      deleteSchemeBtn.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            int ndx;
            if ((ndx = list.getSelectedIndex()) != -1)
               mod.remove(ndx);
         }
      });

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