/** * This is the constructor which initializes the instance variables and the components. Also at * last it will display the initial screen. * * @param m is the model and HAS-A relationship gets constructed here. */ public MonthlyView(Model m) { // CHANGING THE FONT AND SIZE java.io.InputStream is = DailyView.class.getResourceAsStream("Raleway-Regular.ttf"); try { Font font = Font.createFont(Font.TRUETYPE_FONT, is); railWay = font.deriveFont(Font.PLAIN, 12); railWayMed = font.deriveFont(Font.PLAIN, 20); railWayBigBold = font.deriveFont(Font.BOLD, 26); railWayHuge = font.deriveFont(Font.PLAIN, 100); } catch (FontFormatException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } // MAIN MONTH VIEW PANEL // -------------------------------------------------------------------- this.setLayout(new FlowLayout()); monthViewPanel = new JPanel(); monthViewPanel.setBackground(Color.WHITE); model = m; ghettoCurrDate = new int[] { MONTHS.valueOf(model.getCurrentMonth() + "").ordinal(), model.getCurrentDay(), model.getCurrentYear() }; // {month, day, // year} // (Derick) currDate = model.getCurrentDate(); temp = new GregorianCalendar(); temp.set(currDate.get(Calendar.YEAR), currDate.get(Calendar.MONTH), 1); firstdayoftheweek = temp.get(Calendar.DAY_OF_WEEK); daysInMonth = currDate.getActualMaximum(Calendar.DATE); dayButton = new JButton[31]; // UPPER HALF PANEL // -------------------------------------------------------------------------- JPanel upperPanel = new JPanel(); upperPanel.setLayout(new FlowLayout(FlowLayout.CENTER)); upperPanel.setBackground(Color.WHITE); // CURRENT MONTH & YEAR PANEL dateLabelOfMonthPanel.setBackground(Color.WHITE); // JLabel dateLabelOfMonth = new JLabel(""); // JLabel dateLabelOfYear = new JLabel(""); dateLabelOfMonth.setText(model.getCurrentMonth() + " "); dateLabelOfYear.setText(Integer.toString(model.getCurrentYear())); dateLabelOfMonth.setFont(railWayHuge); dateLabelOfYear.setFont(railWayHuge); dateLabelOfMonth.setForeground(Color.BLACK); dateLabelOfYear.setForeground(babyTeal); dateLabelOfMonthPanel.add(dateLabelOfMonth); dateLabelOfMonthPanel.add(dateLabelOfYear); upperPanel.add(dateLabelOfMonthPanel, BorderLayout.CENTER); // PREVIOUS & NEXT BUTTON PANEL // JPanel previousNextButtonPanel = new JPanel(new GridLayout(1, 2)); // JPanel previousButtonLeftPanel = new JPanel(); // JButton previousButton = new JButton(); // try // { // Image img = ImageIO.read(getClass().getResource("pre1.png")); // previousButton.setIcon(new ImageIcon(img)); // Image newimg = img.getScaledInstance(50, 50, // java.awt.Image.SCALE_SMOOTH); // previousButton.setIcon(new ImageIcon(newimg)); // } catch (IOException ex) // { // } // previousButton.setOpaque(false); // previousButton.setBorderPainted(false); // previousButton.addActionListener(new ActionListener() // { // public void actionPerformed(ActionEvent e) // { // model.prevMonth();; // } // }); // dateLabelOfMonthPanel.add(previousButton); // previousButtonLeftPanel.add(previousButton); // previousNextButtonPanel.add(previousButtonLeftPanel, new // FlowLayout(FlowLayout.LEFT)); // upperPanel.add(previousNextButtonPanel); // // // Creates the next button // JButton nextButton = new JButton(); // try // { // Image img = ImageIO.read(getClass().getResource("next1.png")); // Image newimg = img.getScaledInstance(50, 50, // java.awt.Image.SCALE_SMOOTH); // nextButton.setIcon(new ImageIcon(newimg)); // } catch (IOException ex) // { // } // nextButton.setOpaque(false); // nextButton.setBorderPainted(false); // nextButton.setPreferredSize(new Dimension(50, 50)); // nextButton.addActionListener(new ActionListener() // { // public void actionPerformed(ActionEvent e) // { // model.nextDay(); // } // }); // JPanel daysOftheWeekPanel = new JPanel(); JLabel daysOftheWeek = new JLabel(""); daysOftheWeekPanel.setLayout(new GridLayout()); daysOftheWeekPanel.setBackground(babyTeal); String[] days = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; for (int i = 0; i < days.length; i++) { final String label = days[i]; JLabel dayLabel = new JLabel(label); dayLabel.setForeground(Color.BLACK); dayLabel.setBackground(lightBlue); dayLabel.setHorizontalAlignment(SwingConstants.CENTER); daysOftheWeekPanel.add(dayLabel); dayLabel.setFont(railWayMed); daysOftheWeekPanel.add(dayLabel); } dayDayPanel.setLayout(new GridLayout(0, 7)); for (int i = 1; i < firstdayoftheweek; i++) { JLabel dayLabell = new JLabel(""); dayDayPanel.add(dayLabell); } for (int i = 0; i < dayButton.length; i++) { final int counter = i + 1; GregorianCalendar foo = new GregorianCalendar(); foo.set(model.getCurrentYear(), model.getCurrentDate().get(Calendar.MONTH), i + 1); String star = ""; if (model.findEvent(foo) == true) star = " *"; dayButton[i] = new JButton(Integer.toString(i + 1) + star); dayButton[i].setOpaque(true); dayButton[i].setBorder(dayBorder); dayButton[i].setBackground(lightBlue); dayButton[i].setPreferredSize(new Dimension(205, 90)); dayButton[i].addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { daynumber = counter; model.changeDay(daynumber); DailyView.createAndShowDailyViewGUI(model); } }); } for (int i = 0; i <= daysInMonth; i++) { dayDayPanel.add(dayButton[i]); dayButton[i].setPreferredSize(new Dimension(205, 90)); dayButton[i].setBackground(Color.WHITE); dayButton[i].setHorizontalAlignment(SwingConstants.LEFT); dayButton[i].setVerticalAlignment(SwingConstants.NORTH); // set the current date to a certain color if (i + 1 == model.getCurrentDay()) { dayButton[i].setBackground(lightBlue); } } dayViewPanel = new JPanel(); dayViewPanel.setLayout(new BorderLayout()); dayLabel = new JLabel(); dayViewPanel.setBackground(Color.WHITE); dayLabel.setText( model.getCurrentDayoftheWeek() + " " + (model.getCurrentDate().get(Calendar.MONTH) + 1) + "/" + model.getCurrentDay()); // JTextArea dayViewArea = new JTextArea(20,50); ArrayList<Event> listofE = new ArrayList<Event>(); listofE = model.getEventsOfToday(); if (listofE != null) { Collections.sort(listofE); } String s = ""; for (int i = 0; i <= 24; i++) { if (i < 10) { s += ("0" + i); s += ("-------\n"); if (listofE != null) { for (Event ev : listofE) { if (ev.getStartingTime().get(GregorianCalendar.HOUR_OF_DAY) == i) { s += ev.getTitle(); s += " at " + ev.getStartingTime().get(Calendar.HOUR) + ":"; if (ev.getStartingTime().get(Calendar.MINUTE) < 10) { s += "0" + ev.getStartingTime().get(Calendar.MINUTE); } else s += ev.getStartingTime().get(Calendar.MINUTE); if (ev.getStartingTime().get(Calendar.AM_PM) == 0) { s += "AM"; } else s += "PM"; s += " to " + ev.getEndingTime().get(Calendar.HOUR) + ":"; if (ev.getEndingTime().get(Calendar.MINUTE) < 10) { s += "0" + ev.getEndingTime().get(Calendar.MINUTE); } else s += ev.getEndingTime().get(Calendar.MINUTE); if (ev.getEndingTime().get(Calendar.AM_PM) == 0) { s += "AM"; } else s += "PM"; } } } s += "\n\n"; } else { s += i; s += ("-------\n"); if (listofE != null) { for (Event ev : listofE) { if (ev.getStartingTime().get(GregorianCalendar.HOUR_OF_DAY) == i) { s += ev.getTitle(); s += " at " + ev.getStartingTime().get(Calendar.HOUR) + ":"; if (ev.getStartingTime().get(Calendar.MINUTE) < 10) { s += "0" + ev.getStartingTime().get(Calendar.MINUTE); } else s += ev.getStartingTime().get(Calendar.MINUTE); if (ev.getStartingTime().get(Calendar.AM_PM) == 0) { s += "AM"; } else s += "PM"; s += " to " + ev.getEndingTime().get(Calendar.HOUR) + ":"; if (ev.getEndingTime().get(Calendar.MINUTE) < 10) { s += "0" + ev.getEndingTime().get(Calendar.MINUTE); } else s += ev.getEndingTime().get(Calendar.MINUTE); if (ev.getEndingTime().get(Calendar.AM_PM) == 0) { s += "AM"; } else s += "PM"; } } } s += "\n\n"; } } /* * dayViewArea.setText(s); dayViewScrollPane = new * JScrollPane(dayViewArea); dayViewPanel.add(dayLabel, * BorderLayout.NORTH); dayViewPanel.add(dayViewScrollPane, * BorderLayout.CENTER); */ monthViewPanel.setLayout(new BoxLayout(monthViewPanel, BoxLayout.Y_AXIS)); monthViewPanel.add(dateLabelOfMonthPanel); monthViewPanel.add(daysOftheWeekPanel); monthViewPanel.add(dayDayPanel); monthViewPanel.setAlignmentX(Component.CENTER_ALIGNMENT); dayDayPanel.setBackground(Color.WHITE); add(monthViewPanel); }