/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package interfaces;
import io.Preloader;
import interfaces.editClass.*;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import objects.MyCourse;
/**
*
* @author Lilong
* @edit Zach; preloader changes
* @edit Brett; whatever
*/
@SuppressWarnings("serial")
public class MainFrame extends javax.swing.JFrame {
public boolean isDetialMode = false;
public SimpleMode simpleMode;
public AddNewClass addNewClass;
public EditSelectedClass currentCourseWindow;
public ArrayList<MyCourse> courses;
public ArrayList<EditSelectedClass> courseWindows = new ArrayList<EditSelectedClass>();
public MyCourse currentCourse;
public MainFrame() {
initComponents();
SetUp();
}
private void SetUp() {
this.setLocation(400, 300);
preloadGradebooks();
simpleMode = new SimpleMode(this);
addNewClass = new AddNewClass(this);
if (courseWindows.size() > 0) {
currentCourseWindow = courseWindows.get(0);
}
setSimpleModeVisible();
synchronize(); //Update all other JPanel classes
pack();
}
public void setSimpleModeVisible() {
simpleMode.setPanelMenu();
setContentPane(simpleMode);
simpleMode.setVisible(true);
addNewClass.setVisible(false);
if (currentCourseWindow != null)
currentCourseWindow.setVisible(false);
pack();
}
public void setEditSelectedClassVisible(EditSelectedClass selectedCourse) {
setCurrentCourseWindow(selectedCourse);
setContentPane(selectedCourse);
/*if (courses.get(selectedCourse.courseIndex).getLastCategoryIndex() != null && courses.get(selectedCourse.courseIndex).getLastAssignmentIndex() != null)
selectedCourse.loadTable(courses.get(selectedCourse.courseIndex).getLastCategoryIndex(), courses.get(selectedCourse.courseIndex).getLastAssignmentIndex());*/
selectedCourse.setPanelMenu();
simpleMode.setVisible(false);
addNewClass.setVisible(false);
currentCourseWindow.setVisible(true);
pack();
}
public void setAddNewClass() {
setContentPane(addNewClass);
simpleMode.setVisible(false);
if (currentCourseWindow != null)
currentCourseWindow.setVisible(false);
addNewClass.clearComponents();
addNewClass.setVisible(true);
pack();
}
public void sortCourses() {
for (int i = 0; i < courses.size(); i++) {
for (int j = i; j < courses.size(); j++) {
if (courses.get(i).getIdentifier().compareTo(courses.get(j).getIdentifier()) > 0) {
Collections.swap(courses, i, j);
}
}
}
}
/**
* set which course needs to be edited
* @param window a class for editSelectedClass
*/
public void setCurrentCourseWindow(EditSelectedClass window) {
currentCourseWindow = window;
}
/*
* add a single course into the edit course window arraylist
* @course my courses object
*/
public void addCourseWindow(int courseIndex) {
courseWindows.add(new EditSelectedClass(this, courseIndex));
}
/*
* return the single course object which is editing now
*/
public MyCourse getCurrentCourse() {
return currentCourse;
}
/*
* return the arralylist of MyCourses object
*/
public ArrayList<MyCourse> getCourses() {
return courses;
}
/*
* return the the a single editClass in editClassArrayList
*/
public EditSelectedClass getCourseWindow(int i) {
return courseWindows.get(i);
}
private void preloadGradebooks() {
Preloader preload = new Preloader(".xml");
courses = preload.getCourseArray();
}
/*
* important:
* invokeLater in main method make the action performed to run in a reverse order
*/
private void synchronize() {
addNewClass.cancelButton.addActionListener(addNewClass);
addNewClass.addButton.addActionListener(addNewClass); //run first
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("GhostGrader");
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 589, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 433, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
File f = new File("gradebooks" + File.separator + "archive" + File.separator + "records");
f.mkdirs();
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
MainFrame GhostGrader = new MainFrame();
GhostGrader.setVisible(true);
}
});
}
private int toInteger(String string_courseNumber) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}