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 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); } }