package spinner;
import java.awt.Container;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import javax.swing.*;

public class SpinnerDemo extends JPanel {
	public SpinnerDemo() {
		
		 //Number Model
	    String label1 = "Number of Alcoholic Beverages Before Passing Out:";
	    SpinnerModel numModel = new SpinnerNumberModel(12, 0, 52, 1); //(initial, min, max, increment)
	    JSpinner spinner1 = addSpinner(this, label1, numModel);
		
		//List Model
		String label2 = "Favorite Band:";
		ArrayList<String> favBands = new ArrayList<String>(12); //Thanks for the ArrayList Presentation!!!
		String A = "Led Zeppelin";
		String B = "Yes";
		String C = "King Crimson";
		String D = "Genesis";
		String E = "Jethro Tull";
		String F = "The Who";
		String G = "The Beatles";
		String H = "Rush";
		String I = "Black Sabbath";
		String J = "Tool";
		String K = "Emerson, Lake, & Palmer";
		String L = "Pink Floyd";
		favBands.add(A);
		favBands.add(B);
		favBands.add(C);
		favBands.add(D);
		favBands.add(E);
		favBands.add(F);
		favBands.add(G);
		favBands.add(H);
		favBands.add(I);
		favBands.add(J);
		favBands.add(K);
		favBands.add(L);
		SpinnerListModel FavBandsModel = new SpinnerListModel(favBands);
		JSpinner spinner2 = addSpinner(this, label2, FavBandsModel);
		
		//Date Model
		String label3 = "Birthday:";
		Calendar currDate = Calendar.getInstance();
		Date initDate = currDate.getTime();
	    currDate.add(Calendar.YEAR, -100);
	    Date earliestDate = currDate.getTime();
	    currDate.add(Calendar.YEAR, 200);
	    Date latestDate = currDate.getTime();
	    SpinnerModel dateModel = new SpinnerDateModel(initDate, earliestDate, latestDate, Calendar.YEAR);//ignored for user input
	    JSpinner spinner3 = addSpinner(this, label3, dateModel);
	    
	    //Make'er perty
	    GridLayout spinnerLayout = new GridLayout(0,1);
	    this.setLayout(spinnerLayout);   
	}
	
	  static private JSpinner addSpinner(Container cont, String labelName, SpinnerModel model) {
		  JLabel label = new JLabel(labelName);
		  cont.add(label);

		  JSpinner spinner = new JSpinner(model);
		  label.setLabelFor(spinner);
		  cont.add(spinner);

		  return spinner;
	  }
	  
	  private static void runGUI(){
		
		  //new window
		  JFrame frame = new JFrame("Spinner Demo");
		  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		  //add SpinnerDemo to the GUI
		  frame.add(new SpinnerDemo());
	    
		  //display stuff
		  frame.pack();
		  frame.setVisible(true);
	  }

	  public static void main(String[] args) {
		  javax.swing.SwingUtilities.invokeLater(new Runnable() {
			  public void run() {
				  runGUI();
			  }
		  });
	  }}
