/******************************* * Name: Huy Nguyen * * Lab #5 * * Fall 1998, ICS 52 * ********************************/ // MessageCanvas.java -- ICS 52 homework #5 -- Fall, 1998 import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; import SAO.*; public class MessageCanvas extends Canvas { private StudentSchedule schedule; private EAFrame parentFrame ; private Vector messages; public MessageCanvas(EAFrame parentFrame ) { this.parentFrame = parentFrame; this.schedule = parentFrame.schedule; messages = new Vector(); } public void paint( Graphics g ) { removeAllMessages(); getUCMessages(); getICSMessages(); getPrerequisite(); int line = 0; for(int i = 0; i< messages.size(); i++ ) g.drawString((String)messages.elementAt(i), 20, 17*line++ + 10); } void setSchedule( StudentSchedule schedule ) { this.schedule = schedule; } public void removeAllMessages() { messages.removeAllElements(); } public void newLine() { messages.addElement(new String("")); } public void getUCMessages() { UCRequirement UCR = new UCRequirement(); float units = schedule.getUCIUnits(); messages.addElement( new String(" ******** UC MESSAGES ******** " )); newLine(); if ( !UCR.metUnitRequirement(schedule)) messages.addElement( new String("Total number of units is " + units + ", which is less than the required 180.")); else messages.addElement( new String("Minimum Number of Units met.")); float GPA = schedule.getOverallGPA(); if ( !UCR.metGPARequirement(schedule)) messages.addElement( new String("Cumulative GPA is " + GPA + ", which is less than 2.0." )); // Breadth; if ( UCR.metResidenceRequirement(schedule) ) messages.addElement( new String("Residence Requirement met.") ); else messages.addElement( new String("Residence Requirement unmet.") ); newLine(); newLine(); } public void getICSMessages() { ICSRequirement ICR = new ICSRequirement(parentFrame.courseList); messages.addElement( new String(" ++++++++ ICS MESSAGES ++++++++ ")); newLine(); messages.addElement( new String("REQUIRED COURES:")); newLine(); Enumeration temp = ICR.metRequire(schedule); while( temp.hasMoreElements()) { Course course = (Course) temp.nextElement(); messages.addElement( new String( "Required course " + course.getCourseId() + " is not on Schedule.") ); } newLine(); messages.addElement( new String("INTEMEDIATE COURSES:")); newLine(); String str = ICR.metIntemediate(schedule); messages.addElement( new String("Two intermediate ICS courses must be on Schedule.")); messages.addElement( str ); newLine(); messages.addElement( new String("PROJECT COURSES")); newLine(); messages.addElement( new String("Two ICS project courses must be on Schedule.")); temp = ICR.metProject(schedule); while(temp.hasMoreElements()) messages.addElement((String)temp.nextElement()); newLine(); messages.addElement( new String("UPPER DIVISION MATH")); newLine(); str = ICR.metUDMath(schedule); messages.addElement(str); } public void getPrerequisite() { newLine(); messages.addElement( new String(" ======== ICS PREREQUISITES ======== ")); newLine(); Enumeration e = schedule.getAllCourses(); while (e.hasMoreElements()) { CourseInfo cif = (CourseInfo)e.nextElement(); CourseId cid = cif.getCourseId(); Quarter q = cif.getQuarter(); ListedCourse hoodoo = parentFrame.courseList.getCourse(cid); Prerequisite pre = hoodoo.getPrerequisite(); if( hoodoo != null && !pre.hasBeenMetBefore(q,schedule)) { messages.addElement( "Prerequisite " + pre.nonMetPrerequisites(q,schedule) + " for course " + cid + " has not been met."); } } } public void Debug(String mesg) { System.out.println(mesg); } }