/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package interfaces;
import io.parseXML;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import objects.MyCourse;
/**
*
* @author li999
*/
public class editCourse extends javax.swing.JPanel implements ActionListener {
public SimpleMode parent;
private int courseIndex;
private MyCourse newCourse;
private MyCourse oldCourse;
private String newIdentifier;
private String oldIdentifier;
public editCourse(SimpleMode parent) {
this.parent = parent;
initComponents();
setup();
}
private void setup(){
}
private void loadCourseIndex() {
for (int i = 0; i < parent.parent.courses.size(); i++) {
if (parent.courseSelectedInEditMenu.equals(parent.parent.courses.get(i).getIdentifier())) {
courseIndex = i;
newCourse = parent.parent.courses.get(i);
newIdentifier = newCourse.getIdentifier();
oldCourse = parent.parent.courses.get(i);
oldIdentifier = oldCourse.getIdentifier();
loadCourseData(courseIndex);
i = parent.parent.courses.size();
}
}
}
private void loadCourseData(int i) {
classNameTextField.setText(parent.parent.courses.get(i).getName());
courseIDTextField.setText(parent.parent.courses.get(i).getCourseID());
String str_courseNumber = String.valueOf(parent.parent.courses.get(i).getCourseNumber());
courseNumberTextField.setText(str_courseNumber);
classSectionTextField.setText(parent.parent.courses.get(i).getSection());
semesterTextField.setText(parent.parent.courses.get(i).getSemester());
classBuildingTextField.setText(parent.parent.courses.get(i).getBuilding());
checkNull(classBuildingTextField);
classRoomNumberTextField.setText(parent.parent.courses.get(i).getRoomID());
checkNull(classRoomNumberTextField);
meetingTimeTextField.setText(parent.parent.courses.get(i).getMeetingTime());
checkNull(meetingTimeTextField);
}
/**
* 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
goBackButton = new javax.swing.JButton();
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();
semeter = 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();
semesterTextField = new javax.swing.JTextField();
saveButton = new javax.swing.JButton();
goBackButton.setFont(new java.awt.Font("Georgia", 0, 18)); // NOI18N
goBackButton.setText("Go Back");
goBackButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
goBackButtonActionPerformed(evt);
}
});
setBorder(javax.swing.BorderFactory.createTitledBorder(null, parent.courseSelectedInEditMenu, 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:");
classBuilding.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
classBuilding.setText("Class Building:");
classRoomNumber.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
classRoomNumber.setText("Class room number:");
meetingTime.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
meetingTime.setText("Meeting Time:");
semeter.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N
semeter.setText("*Semester");
classNameTextField.setText(null);
courseIDTextField.setText(null);
courseNumberTextField.setText(null);
classSectionTextField.setText(null);
classBuildingTextField.setText(null);
classRoomNumberTextField.setText(null);
meetingTimeTextField.setText(null);
semesterTextField.setText(null);
saveButton.setFont(new java.awt.Font("Georgia", 0, 18)); // NOI18N
saveButton.setText("Save");
saveButton.addActionListener(parent);
saveButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(courseName)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(semeter)
.addComponent(courseNumber)
.addComponent(classSection)
.addComponent(classBuilding)
.addComponent(classRoomNumber)
.addComponent(meetingTime)
.addComponent(courseID))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(classNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 304, Short.MAX_VALUE)
.addComponent(courseIDTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
.addComponent(courseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
.addComponent(classSectionTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
.addComponent(classRoomNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE))
.addGap(1, 1, 1))
.addGroup(layout.createSequentialGroup()
.addGap(1, 1, 1)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(classBuildingTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
.addComponent(semesterTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 304, Short.MAX_VALUE)))
.addComponent(meetingTimeTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE))))
.addGap(10, 10, 10))
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(saveButton, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(goBackButton)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.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(courseIDTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(courseID))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(courseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(courseNumber))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(classSectionTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(classSection))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(semeter)
.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)))
.addComponent(courseName))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(saveButton, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(goBackButton, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)))
);
}// </editor-fold>//GEN-END:initComponents
public void actionPerformed(java.awt.event.ActionEvent evt) {
parent.parent.setJMenuBar(null);
setBorder(javax.swing.BorderFactory.createTitledBorder(null, parent.courseSelectedInEditMenu, javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Georgia", 0, 14))); // NOI18N
loadCourseIndex();
}
private void checkNull(JTextField text) {
if (text.getText().equals("null")) {
text.setText("");
}
}
private void goBackButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_goBackButtonActionPerformed
parent.parent.setContentPane(parent);
parent.setPanelMenu();
parent.parent.pack();
}//GEN-LAST:event_goBackButtonActionPerformed
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
if (!parent.parent.addNewClass.textChecker(classNameTextField.getText(), courseName) ||
!parent.parent.addNewClass.textChecker(courseIDTextField.getText(), courseID) ||
!parent.parent.addNewClass.textChecker(courseNumberTextField.getText(), courseNumber) ||
!parent.parent.addNewClass.textChecker(classSectionTextField.getText(), classSection) ||
!parent.parent.addNewClass.textChecker(semesterTextField.getText(), semeter) ||
!parent.parent.addNewClass.integerChecker(courseNumberTextField.getText()))
{}else {
newIdentifier = courseIDTextField.getText() + courseNumberTextField.getText() + "-" +
classSectionTextField.getText() + " " + semesterTextField.getText();
if (checkRepeatedCourse()) {
newCourse.setName(classNameTextField.getText());
newCourse.setCourseID(courseIDTextField.getText());
int integer_courseNumber = Integer.parseInt(courseNumberTextField.getText());
newCourse.setCourseNumber(integer_courseNumber);
newCourse.setSection(classSectionTextField.getText());
newCourse.setSemester(semesterTextField.getText());
newCourse.setBuilding(classBuildingTextField.getText());
newCourse.setRoomID(classRoomNumberTextField.getText());
newCourse.setMeetingTime(meetingTimeTextField.getText());
replaceTheOldFile();
parent.parent.courses.set(courseIndex, newCourse);
parseXML.saveXML(parent.parent.courses.get(courseIndex));
parent.parent.setContentPane(parent);
parent.setPanelMenu();
parent.parent.pack();
parent.setEditMenu();
parent.setRemoveMenu();
} else {
//parent.parent.courses.set(courseIndex, oldCourse);
JOptionPane.showMessageDialog(null,
String.format("%33s", newIdentifier +
" already exists."),"Error",
JOptionPane.ERROR_MESSAGE);
}
}
}//GEN-LAST:event_saveButtonActionPerformed
private boolean checkRepeatedCourse() {
for (int i = 0; i < parent.parent.courses.size(); i++) {
if (newIdentifier.equals(parent.parent.courses.get(i).getIdentifier())) {
if (!newIdentifier.equals(oldIdentifier)) {
return false;
}
}
}
return true;
}
private void replaceTheOldFile() {
String fileDir = "gradebooks" + File.separator + oldIdentifier + ".xml";
File desired = new File (fileDir);
if (desired.exists())
desired.delete();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
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.JButton goBackButton;
private javax.swing.JLabel meetingTime;
public javax.swing.JTextField meetingTimeTextField;
private javax.swing.JButton saveButton;
public javax.swing.JTextField semesterTextField;
private javax.swing.JLabel semeter;
// End of variables declaration//GEN-END:variables
}