package view;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;


public class TodoListSwingUI {
	private static long denominator = (26*60*60*1000);
	public static Container makeTodoLst(final Calendar today){
		final SimpleDateFormat calFmt = new SimpleDateFormat("EEEE dd MMMM yyyy");
		final Container panel = new JPanel(new BorderLayout());
		final JList<String> lst = new JList<String>();
		final int row = today.get(Calendar.HOUR_OF_DAY)*4+(today.get(Calendar.MINUTE)%4);

		lst.setModel(new AbstractListModel<String>(){
			public String getElementAt(int arg0) {
				return new String() +
						(arg0/4) + "h" + ((arg0%4)==0?"":String.format("%d",arg0%4*15)) +
						"               " +
						"...dont forget what you should not forget...";
			}
			public int getSize() {
				return 96;
			}
		});
		lst.addMouseListener(new MouseListener(){
			public void mouseClicked(MouseEvent arg0) {

				Calendar cal = new GregorianCalendar(today.get(Calendar.YEAR),
						                             today.get(Calendar.MONTH),
						                             today.get(Calendar.DAY_OF_MONTH),
						                             lst.getSelectedIndex()/4,
						                             (lst.getSelectedIndex()%4)*15);
				int hour = lst.getSelectedIndex()/4,
						minute = (lst.getSelectedIndex()%4)*15;
				System.out.println("clicked " + hour + "h" + minute);
				System.out.println(cal.toString());
			}
			public void mouseEntered(MouseEvent arg0) {}
			public void mouseExited(MouseEvent arg0) {}
			public void mousePressed(MouseEvent arg0) {}
			public void mouseReleased(MouseEvent arg0) {}
		});
		lst.setSelectedIndex(row);
		lst.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		lst.setLayoutOrientation(JList.VERTICAL);

		panel.add(new JScrollPane(lst), BorderLayout.CENTER);
		lst.ensureIndexIsVisible(lst.getSelectedIndex());

		panel.add(new JLabel(calFmt.format(today.getTime())),BorderLayout.NORTH);
		return new JScrollPane(panel);
	}

	public static void main(String[] args) {
		JFrame win = SwingUI.makeWin();
		Nav nav = SwingUI.makeNav(win);
		nav.flip(SwingUI.makeFrontEnd(makeTodoLst(new GregorianCalendar())));
	}

}
