All pastes #729540 Raw Edit

SE1

public text v1 · immutable
·published 2007-10-08 02:27 UTC
rendered paste body
package view;


import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.net.URL; // for resource location for the icon file
import java.util.*;
import java.awt.GridLayout;

public class DrawD {
	String theMonth;
	String theDay;
	Frame theParentFrame;
	
	DrawD(Frame aFrame) {
		theParentFrame = aFrame;
	}
	
	//TODO: mike: make next/prev actually work
	
	JPanel getDayFrame() {
		return getDayFrame( controller.ViewC.today());
	}
	
	
	JPanel getDayFrame(String buildDay){ // send the day you want to build
		
		theMonth = buildDay.substring(0, 6);
		theDay = buildDay.substring(6, 8);
		
		//the next/prev buttons for this view
		String thisWeekString = "viewing the day of: " 
			+ theMonth.substring(0, 4) + " " + theMonth.substring(4, 6) + " " + theDay;
		JLabel thisWeek = new JLabel(thisWeekString);
		
		JPanel move = new JPanel();
		move.setLayout(new FlowLayout());
		JButton prevDay = new JButton("prev");
		prevDay.setToolTipText("prev day");
		move.add(prevDay);
		move.add(new JLabel("     "));
		move.add(thisWeek);
		move.add(new JLabel("     "));
		JButton nextDay = new JButton("next");
		nextDay.setToolTipText("next day");
		move.add(nextDay);
		
		// ActionListener for the next/prev buttons
		ActionEB buttonListen = new ActionEB(theParentFrame.getViewC(), theParentFrame);
		prevDay.addActionListener(buttonListen);
		nextDay.addActionListener(buttonListen);
		move.repaint();
		
		
		//parsing the events, making the main panel
		//buildDay = yyyymmdd;
		model.ApptMap appts = new model.ApptMap();
		String output = "";
		ArrayList<model.Appt> dayEvents;
		int noEvents;
		try { 
			dayEvents = appts.getAppt(buildDay); 
			noEvents = dayEvents.size();
			
			model.Appt tmp;
			for ( int i=0; i< noEvents; i++){
				tmp = dayEvents.get(i);
				output += "Event: " + tmp.getName() + ", From: " + tmp.getStartDate() + " To: " + 
					tmp.getEndTime() + " Details: " + tmp.getDetail();
			}
			
			} //get the appts for the day
		catch (NullPointerException e){
			output += "There are no events today";
			noEvents = 0;
		}
		
		//if( dayEvents.isEmpty() == false){  //then there are no events for the day
		
		JPanel dayPanel = new JPanel();
		dayPanel.setVisible(true);
		dayPanel.setLayout(new GridLayout(0,1));
		
		//may be useful when making a more polished day view
		/*
		//the array of text areas that represents each square in the month view
		JTextArea[][] apptGrid = new JTextArea[4][noEvents];
		
		//fill each test area, add to the panel
		for(int i=0; i < 4*noEvents; i++){ 
			apptGrid[i/4][i%noEvents] = new JTextArea("[" + i/4 + ", " + i%noEvents + "]" );
			DayPanel.add(apptGrid[i/4][i%noEvents]);
		}*/
		

		JTextArea apptGrid =new JTextArea(output);
		
		dayPanel.add( apptGrid );
		
		
		//putting the parts together
		JPanel completePanel = new JPanel();
		completePanel.setLayout(new BorderLayout());
		completePanel.add(move, BorderLayout.NORTH);
		completePanel.add(dayPanel, BorderLayout.CENTER);
		return completePanel;
	}
	
	JPanel getNextDay() {
		int year = Integer.parseInt(theMonth.substring(0, 4));
		int month = Integer.parseInt(theMonth.substring(4, 6));
		int day = Integer.parseInt(theDay);

		String newMonth = "" + month;
		String newDay = "" + day;
		if (((month == 1 || month == 3 || month == 5 || month == 7
				|| month == 8 || month == 10 || month == 12) && day <= 30)
				|| ((month == 4 || month == 6 || month == 9 || month == 11) && day <= 29)
				|| (( month == 2 &&  (year % 4 != 0 && (year % 100 == 0 || year % 400 != 0) ) ) && day <= 27)
				|| (( month == 2 && !(year % 4 != 0 && (year % 100 == 0 || year % 400 != 0) ) ) && day <= 28)){
			day += 1;
		} else {
			day = 1;
			if (month < 12) {
				month++;
			} else {
				month = 1;
				year++;
			}
		}

		if (month >= 10) {
			newMonth = "" + month;
		} else {
			newMonth = "0" + month;
		}
		if (day >= 10) {
			newDay = "" + day;
		} else {
			newDay = "0" + day;
		}

		System.out.println("moving to next day: " + year + newMonth + newDay);
		return getDayFrame("" + year + newMonth + newDay);
	}

	JPanel getPrevDay() {
		int year = Integer.parseInt(theMonth.substring(0, 4));
		int month = Integer.parseInt(theMonth.substring(4, 6));
		int day = Integer.parseInt(theDay);

		String newMonth = "" + month;
		String newDay = "" + day;
		if (day > 1) {
			day -= 1;
		} else {
			if (month > 1) {
				month--;
			} else {
				month = 12;
				year--;
			}
			if (month == 1 || month == 3 || month == 5 || month == 7
					|| month == 8 || month == 10 || month == 12) {
				day = 31;
			} else if (month == 4 || month == 6 || month == 9 || month == 11) {
				day = 30;
			} else if (month == 2 && (year % 4 != 0 && (year % 100 == 0 || year % 400 != 0))) {
				day = 28;
			} else {
				day = 29;
			}
		}

		if (month >= 10) {
			newMonth = "" + month;
		} else {
			newMonth = "0" + month;
		}
		if (day >= 10) {
			newDay = "" + day;
		} else {
			newDay = "0" + day;
		}
		System.out.println("moving to next week: " + year + newMonth + newDay);
		return getDayFrame("" + year + newMonth + newDay);
	}

	
}