package interfaces;
import interfaces.editClass.EditSelectedClass;
import io.parseXML;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import objects.MyCourse;
/**
* Create a new course, and return it as a single MyCourse object
* @author Lilong
*/
@SuppressWarnings("serial")
public class AddNewClass extends javax.swing.JPanel implements ActionListener{
public String actionStatus = "waiting";
private MainFrame parent;
private MyCourse newCourse;
public AddNewClass(MainFrame frame) {
parent = frame;
initComponents();
setup();
}
private void setup() {
addButton.setActionCommand("AddNewCLass_addToTable");
}
public MyCourse getNewCourse() {
return newCourse;
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
courseName = new javax.swing.JLabel();
courseID = new javax.swing.JLabel();
courseNumber = new javax.swing.JLabel();
classSection = new javax.swing.JLabel();
classBuilding = new javax.swing.JLabel();
classRoomNumber = new javax.swing.JLabel();
meetingTime = new javax.swing.JLabel();
classNameTextField = new javax.swing.JTextField();
courseIDTextField = new javax.swing.JTextField();
courseNumberTextField = new javax.swing.JTextField();
classSectionTextField = new javax.swing.JTextField();
classBuildingTextField = new javax.swing.JTextField();
classRoomNumberTextField = new javax.swing.JTextField();
meetingTimeTextField = new javax.swing.JTextField();
addButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
semester = new javax.swing.JLabel();
semesterTextField = new javax.swing.JTextField();
setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Add New Class", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Georgia", 0, 14))); // NOI18N
courseName.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
courseName.setText("*Course Name:");
courseID.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
courseID.setText("*Course Prefix:");
courseNumber.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
courseNumber.setText("*Course Number:");
classSection.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
classSection.setText("*Course Section:");
semester.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
semester.setText("*Semester:");
classBuilding.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
classBuilding.setText("Building:");
classRoomNumber.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
classRoomNumber.setText("Room Number:");
meetingTime.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
meetingTime.setText("Meeting Time:");
classNameTextField.setText(null);
courseIDTextField.setText(null);
courseNumberTextField.setText(null);
classSectionTextField.setText(null);
semesterTextField.setText(null);
classBuildingTextField.setText(null);
classRoomNumberTextField.setText(null);
meetingTimeTextField.setText(null);
addButton.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
addButton.setText("Create");
cancelButton.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
cancelButton.setText("Cancel");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(11, 11, 11)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(courseName)
.addComponent(courseID)
.addComponent(courseNumber)
.addComponent(classSection)
.addComponent(semester)
.addComponent(classBuilding)
.addComponent(classRoomNumber)
.addComponent(meetingTime))))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(classNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE)
.addComponent(courseIDTextField)
.addComponent(courseNumberTextField)
.addComponent(classSectionTextField)
.addComponent(semesterTextField)
.addComponent(classBuildingTextField)
.addComponent(classRoomNumberTextField)
.addComponent(meetingTimeTextField))
.addGap(11, 11, 11))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(addButton)
.addComponent(cancelButton)
.addContainerGap())))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(semester)
.addGap(127, 127, 127)
.addComponent(semesterTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, 0)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(courseName)
.addComponent(classNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(courseID)
.addComponent(courseIDTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(courseNumber)
.addComponent(courseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(classSection)
.addComponent(classSectionTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(semester)
.addComponent(semesterTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(classBuilding)
.addComponent(classBuildingTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(classRoomNumber)
.addComponent(classRoomNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(meetingTime)
.addComponent(meetingTimeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(addButton, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cancelButton, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents
public void actionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getActionCommand().equals("AddNewCLass_addToTable")) {
generateNewCourse();
if (parent.addNewClass.actionStatus.equals("dataReady")) {
if (checkRepeatedCourse(getNewCourse())) {
addNewCourse(parent.courses.size());
for (int i = 0; i < parent.courseWindows.size(); i++)
parent.courseWindows.get(i).saveCurrentState();
} else {
JOptionPane.showMessageDialog(null,
String.format("%33s",parent.addNewClass.getNewCourse().getName() + " " +
parent.addNewClass.getNewCourse().getSection() +
" already exists."),"Error",
JOptionPane.ERROR_MESSAGE);
}
parent.addNewClass.actionStatus = "waiting";
}
} else if (evt.getActionCommand().equals("Cancel")) {
parent.setSimpleModeVisible();
}
}
private void generateNewCourse() {
newCourse = new MyCourse("newCourse");
String string_courseName = classNameTextField.getText();
String string_courseID = courseIDTextField.getText();
String string_courseNumber = courseNumberTextField.getText();
String string_classSection = classSectionTextField.getText();
String string_semester = semesterTextField.getText();
String string_classBuilding = classBuildingTextField.getText();
String string_classRoom = classRoomNumberTextField.getText();
String string_meetingTime = meetingTimeTextField.getText();
if (!textChecker(string_courseName, courseName) ||
!textChecker(string_courseID, courseID) ||
!textChecker(string_courseNumber, courseNumber) ||
!textChecker(string_classSection, classSection) ||
!textChecker(string_semester, semester) ||
!integerChecker(string_courseNumber)) {
} else {
newCourse.setName(string_courseName);
newCourse.setCourseID(string_courseID);
int integer_courseNumber = Integer.parseInt(string_courseNumber);
newCourse.setCourseNumber(integer_courseNumber);
newCourse.setSection(string_classSection);
newCourse.setBuilding(string_classBuilding);
newCourse.setRoomID(string_classRoom);
newCourse.setMeetingTime(string_meetingTime);
newCourse.setSemester(string_semester);
newCourse.setNewCourse(true);
newCourse.setLastAssignmentIndex(null);
newCourse.setLastCategoryIndex(null);
actionStatus = "dataReady";
}
}
private void addNewCourse(int i) {
parent.getCourses().add(newCourse);
parent.simpleMode.setRemoveMenu();
parent.simpleMode.setEditMenu();
parent.simpleMode.removeAll();
parent.courseWindows.clear();
parent.simpleMode.refreshButtons();
parent.simpleMode.getSimpleModeLayOut();
parent.setSimpleModeVisible();
}
private boolean checkRepeatedCourse(MyCourse newCourse) {
for (int i = 0; i < parent.courses.size(); i++) {
if (parent.courses.get(i).getIdentifier().equals(newCourse.getIdentifier())) {
return false;
}
}
return true;
}
public boolean textChecker(String text, JLabel textLabel) {
if (text.equals((""))) {
JOptionPane.showMessageDialog(null,
String.format("%33s",textLabel.getText() + " can't be empty"),"Error",
JOptionPane.ERROR_MESSAGE);
return false;
}
return true;
}
public boolean integerChecker(String text) {
try {
Integer.parseInt(text);
return true;
} catch (Exception e) {
JOptionPane.showMessageDialog(null,
String.format("%33s",text + " is not a number"),"Error",
JOptionPane.ERROR_MESSAGE);
}
return false;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JButton addButton;
public javax.swing.JButton cancelButton;
private javax.swing.JLabel classBuilding;
public javax.swing.JTextField classBuildingTextField;
public javax.swing.JTextField classNameTextField;
private javax.swing.JLabel classRoomNumber;
public javax.swing.JTextField classRoomNumberTextField;
private javax.swing.JLabel classSection;
public javax.swing.JTextField classSectionTextField;
public javax.swing.JLabel courseID;
public javax.swing.JTextField courseIDTextField;
public javax.swing.JLabel courseName;
public javax.swing.JLabel courseNumber;
public javax.swing.JTextField courseNumberTextField;
private javax.swing.JLabel meetingTime;
public javax.swing.JTextField meetingTimeTextField;
public javax.swing.JTextField semesterTextField;
private javax.swing.JLabel semester;
// End of variables declaration//GEN-END:variables
public void clearComponents() {
classBuildingTextField.setText("");
classNameTextField.setText("");
classRoomNumberTextField.setText("");
classNameTextField.setText("");
classRoomNumberTextField.setText("");
courseIDTextField.setText("");
courseNumberTextField.setText("");
meetingTimeTextField.setText("");
semesterTextField.setText("");
classSectionTextField.setText("");
classNameTextField.requestFocus();
}
}