/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package grader.UI;
import grader.UI.file.ExportSIS;
import grader.UI.file.ExportServer;
import grader.UI.file.Import;
import grader.UI.file.Login;
import grader.UI.file.MidRosterSync;
import grader.UI.gradebook.AddCategory;
import grader.UI.gradebook.AddItem;
import grader.UI.gradebook.CategoryAndItemManager;
import grader.UI.gradebook.Gradebook;
import grader.UI.help.GraderAboutBox;
import grader.UI.student.NewStudent;
import grader.UI.student.StudentManager;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.GroupLayout;
import javax.swing.Icon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDesktopPane;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JSeparator;
import javax.swing.LayoutStyle;
import javax.swing.Timer;
import org.jdesktop.application.Action;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.TaskMonitor;
/**
* The application's main frame.
*
* @author Kellen
*/
public class GraderView extends FrameView {
public GraderView(SingleFrameApplication app) {
super(app);
initComponents();
desktop = new JDesktopPane();
desktop.setBackground(Color.GRAY);
setComponent(desktop);
// status bar initialization - message timeout, idle icon and busy animation, etc
// ResourceMap resourceMap = getResourceMap();
int messageTimeout = 10;
messageTimer = new Timer(messageTimeout, new ActionListener() {
public void actionPerformed(ActionEvent e) {
statusMessageLabel.setText("");
}
});
messageTimer.setRepeats(false);
// int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
for (int i = 0; i < busyIcons.length; i++) {
// busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
}
busyIconTimer = null; //new Timer(busyAnimationRate, new ActionListener() {
// public void actionPerformed(ActionEvent e) {
// busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
// statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
// }
// });
idleIcon = null; //resourceMap.getIcon("StatusBar.idleIcon");
// statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);
// connecting action tasks to status bar via TaskMonitor
TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
if ("started".equals(propertyName)) {
if (!busyIconTimer.isRunning()) {
statusAnimationLabel.setIcon(busyIcons[0]);
busyIconIndex = 0;
busyIconTimer.start();
}
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
} else if ("done".equals(propertyName)) {
busyIconTimer.stop();
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);
progressBar.setValue(0);
} else if ("message".equals(propertyName)) {
String text = (String)(evt.getNewValue());
statusMessageLabel.setText((text == null) ? "" : text);
messageTimer.restart();
} else if ("progress".equals(propertyName)) {
int value = (Integer)(evt.getNewValue());
progressBar.setVisible(true);
progressBar.setIndeterminate(false);
progressBar.setValue(value);
}
}
});
}
//
/*
* Menu Actions Methods
*/
// File Menu
// @Action
// public void showNew() {
// if (importWizard == null) {
// JFrame mainFrame = GraderApp.getApplication().getMainFrame();
// importWizard = new Import(mainFrame, true);
// importWizard.setLocationRelativeTo(mainFrame);
// }
// GraderApp.getApplication().show(importWizard);
// }
// @Action
// public void showSave() {
// if (importWizard == null) {
// JFrame mainFrame = GraderApp.getApplication().getMainFrame();
// importWizard = new Import(mainFrame, true);
// importWizard.setLocationRelativeTo(mainFrame);
// }
// GraderApp.getApplication().show(importWizard);
// }
// @Action
// public void showSaveAs() {
// if (importWizard == null) {
// JFrame mainFrame = GraderApp.getApplication().getMainFrame();
// importWizard = new Import(mainFrame, true);
// importWizard.setLocationRelativeTo(mainFrame);
// }
// GraderApp.getApplication().show(importWizard);
// }
@Action
public void showLogin() {
if (login == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
login = new Login(mainFrame, true);
login.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(login);
}
@Action
public void showMidTermSync() {
if (midTermSync == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
midTermSync = new MidRosterSync(mainFrame, true);
midTermSync.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(midTermSync);
}
@Action
public void showImport() {
if (importWizard == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
importWizard = new Import(mainFrame, true);
importWizard.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(importWizard);
}
@Action
public void showExportServer() {
if (exportToServer == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
exportToServer = new ExportServer(mainFrame, true);
exportToServer.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(exportToServer);
}
@Action
public void showExportSIS() {
if (exportToSIS == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
exportToSIS = new ExportSIS(mainFrame, true);
exportToSIS.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(exportToSIS);
}
// Edit Menu
// View Menu
// Tools Menu
// Gradebook Menu
@Action
public void showNewGradedItem() {
if (addItem == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
addItem = new AddItem(mainFrame, true);
addItem.setLocationRelativeTo(mainFrame);
addItem.pack();
}
GraderApp.getApplication().show(addItem);
}
@Action
public void showNewCategory() {
if (addCategory == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
addCategory = new AddCategory(mainFrame, true);
addCategory.setLocationRelativeTo(mainFrame);
addCategory.pack();
}
GraderApp.getApplication().show(addCategory);
}
@Action
public void showCatManager() {
if (catAndItemManger == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
catAndItemManger = new CategoryAndItemManager(mainFrame, false);
catAndItemManger.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(catAndItemManger);
}
// Students Menu
@Action
public void showNewStudent() {
if (newStudent == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
newStudent = new NewStudent(mainFrame, false);
newStudent.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(newStudent);
}
@Action
public void showStudentManager() {
if (studentManger == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
studentManger = new StudentManager(mainFrame, false);
studentManger.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(studentManger);
}
// Window Menu
@Action
public void showGradebook() {
if ((gradebook == null) || (gradebook.isClosed())) {
gradebook = new Gradebook("CSC 308", true, true, true, true);
gradebook.setBounds(50, 50, 200, 100);
desktop.add(gradebook, new Integer(1));
gradebook.pack();
gradebook.setVisible(true);
try {
gradebook.setSelected(true);
} catch (java.beans.PropertyVetoException e) {}
}
}
//
// @Action
// public void showPieChart() {
// if ((piechart == null) || (piechart.isClosed())) {
// piechart = new Gradebook("Pie Chart", true, true, true, true);
// piechart.setBounds(50, 50, 200, 100);
// desktop.add(piechart, new Integer(1));
// piechart.setVisible(true);
// try {
// piechart.setSelected(true);
// } catch (java.beans.PropertyVetoException e) {}
// }
//
// }
//
// @Action
// public void showHistogram() {
// if ((histogram == null) || (histogram.isClosed())) {
// histogram = new Gradebook("Histogram", true, true, true, true);
// histogram.setBounds(50, 50, 200, 100);
// desktop.add(histogram, new Integer(1));
// histogram.setVisible(true);
// try {
// histogram.setSelected(true);
// } catch (java.beans.PropertyVetoException e) {}
// }
//
// }
@Action
public void showGradingRange() {
if ((gradingScheme == null) || (gradingScheme.isClosed())) {
gradingScheme = new GradingScheme();
gradingScheme.setBounds(50, 50, 650, 500);
desktop.add(gradingScheme, new Integer(1));
gradingScheme.pack();
gradingScheme.setSize(650, 500);
gradingScheme.setVisible(true);
try {
gradingScheme.setSelected(true);
} catch (java.beans.PropertyVetoException e) {}
}
}
// Help Menu
@Action
public void showAboutBox() {
if (aboutBox == null) {
JFrame mainFrame = GraderApp.getApplication().getMainFrame();
aboutBox = new GraderAboutBox(mainFrame);
aboutBox.setLocationRelativeTo(mainFrame);
}
GraderApp.getApplication().show(aboutBox);
}
//
/**
* Sets up a menu item with the a name and assosiate an action to the item
*/
private void setupMenuItem(JMenuItem item, String name, String actionName){
javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(grader.UI.GraderApp.class).getContext().getActionMap(GraderView.class, this);
item.setAction(actionMap.get(actionName));
item.setText(name);
item.setName(name + "MenuItem");
}
/** This method is called from within the constructor to
* initialize the form.
*/
private void initComponents() {
initMenuItems();
/*
* setup the status panel
*/
statusPanel.setName("statusPanel"); // NOI18N
statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N
statusMessageLabel.setName("statusMessageLabel"); // NOI18N
statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N
progressBar.setName("progressBar"); // NOI18N
/*
* Create the layout for the window
*/
GroupLayout statusPanelLayout = new GroupLayout(statusPanel);
statusPanel.setLayout(statusPanelLayout);
statusPanelLayout.setHorizontalGroup(
statusPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(statusPanelSeparator, GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
.addGroup(statusPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(statusMessageLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 230, Short.MAX_VALUE)
.addComponent(progressBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(statusAnimationLabel)
.addContainerGap())
);
statusPanelLayout.setVerticalGroup(
statusPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(statusPanelLayout.createSequentialGroup()
.addComponent(statusPanelSeparator, GroupLayout.PREFERRED_SIZE, 2, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(statusPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(statusMessageLabel)
.addComponent(statusAnimationLabel)
.addComponent(progressBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(3, 3, 3))
);
/*
* Set all the components
*/
setComponent(mainPanel);
setMenuBar(menuBar);
setStatusBar(statusPanel);
}
private void initMenuItems(){
menuBar = new JMenuBar();
fileMenu = new JMenu();
newMenuItem = new JMenuItem();
openMenuItem = new JMenuItem();
saveMenuItem = new JMenuItem();
saveAsMenuItem = new JMenuItem();
jSeparator1 = new JSeparator();
loginMenuItem = new JMenuItem();
midTermSyncMenuItem = new JMenuItem();
importMenuItem = new JMenuItem();
exportMenu = new JMenu();
exportServerMenuItem = new JMenuItem();
exportSisMenuItem = new JMenuItem();
jSeparator2 = new JSeparator();
exitMenuItem = new JMenuItem();
editMenu = new JMenu();
undoMenuItem = new JMenuItem();
redoMenuItem = new JMenuItem();
revertMenuItem = new JMenuItem();
viewMenu = new JMenu();
toolbarsMenu = new JMenu();
zoomMenu = new JMenu();
jSeparator3 = new JSeparator();
switchViewMenuItem = new JMenuItem();
toolsMenu = new JMenu();
findMenuItem = new JMenuItem();
optionsMenuItem = new JMenuItem();
gradebookMenu = new JMenu();
newGradedItemMenuItem = new JMenuItem();
newCategoryMenuItem = new JMenuItem();
jSeparator4 = new JSeparator();
catManagerMenuItem = new JMenuItem();
studentMenu = new JMenu();
newStudentMenuItem = new JMenuItem();
studentManagerMenuItem = new JMenuItem();
windowMenu = new JMenu();
showGradebook = new JCheckBoxMenuItem();
showPieChartMenuItem = new JMenuItem();
showHistogramMenuItem = new JMenuItem();
showGradingRangeMenuItem = new JMenuItem();
helpMenu = new JMenu();
contentsMenuItem = new JMenuItem();
aboutMenuItem = new JMenuItem();
statusPanel = new JPanel();
statusPanelSeparator = new JSeparator();
statusMessageLabel = new JLabel();
statusAnimationLabel = new JLabel();
progressBar = new JProgressBar();
/*
* Setup all the menus and menu items
*/
menuBar.setName("menuBar");
// org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(grader.UI.GraderApp.class).getContext().getResourceMap(GraderView.class);
fileMenu.setText("File");
fileMenu.setName("fileMenu");
setupMenuItem(newMenuItem, "New", "showNew");
fileMenu.add(newMenuItem);
setupMenuItem(openMenuItem, "Open", "showOpen");
fileMenu.add(openMenuItem);
setupMenuItem(saveMenuItem, "Save", "showSave");
fileMenu.add(saveMenuItem);
setupMenuItem(saveAsMenuItem, "SaveAs", "showSaveAs");
fileMenu.add(saveAsMenuItem);
jSeparator1.setName("jSeparator1");
fileMenu.add(jSeparator1);
setupMenuItem(loginMenuItem, "Login", "showLogin");
fileMenu.add(loginMenuItem);
setupMenuItem(midTermSyncMenuItem, "MidTermSync", "showMidTermSync");
fileMenu.add(midTermSyncMenuItem);
setupMenuItem(importMenuItem, "Import", "showImport");
fileMenu.add(importMenuItem);
exportMenu.setText("Export");
exportMenu.setName("exportMenu");
setupMenuItem(exportServerMenuItem, "Export to Server", "showExportServer");
exportMenu.add(exportServerMenuItem);
setupMenuItem(exportSisMenuItem, "Export to SIS", "showExportSIS");
exportMenu.add(exportSisMenuItem);
fileMenu.add(exportMenu);
jSeparator2.setName("jSeparator2");
fileMenu.add(jSeparator2);
// exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
setupMenuItem(exitMenuItem, "Exit", "quit");
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
editMenu.setText("Edit");
editMenu.setName("editMenu");
setupMenuItem(undoMenuItem, "Undo", "show");
editMenu.add(undoMenuItem);
setupMenuItem(redoMenuItem, "Redo", "show");
editMenu.add(redoMenuItem);
setupMenuItem(revertMenuItem, "Revert", "show");
editMenu.add(revertMenuItem);
menuBar.add(editMenu);
viewMenu.setText("View");
viewMenu.setName("viewMenu");
setupMenuItem(toolbarsMenu, "Toolbars", "showToolbars");
viewMenu.add(toolbarsMenu);
setupMenuItem(zoomMenu, "Zoom", "showZoom");
viewMenu.add(zoomMenu);
jSeparator3.setName("jSeparator3");
viewMenu.add(jSeparator3);
setupMenuItem(switchViewMenuItem, "Switch View", "showSwitchView");
viewMenu.add(switchViewMenuItem);
menuBar.add(viewMenu);
toolsMenu.setText("Tools");
toolsMenu.setName("toolsMenu");
setupMenuItem(findMenuItem, "Find", "showFind");
toolsMenu.add(findMenuItem);
setupMenuItem(optionsMenuItem, "Options", "showOptions");
toolsMenu.add(optionsMenuItem);
menuBar.add(toolsMenu);
gradebookMenu.setText("Gradebook");
gradebookMenu.setName("gradebookMenu");
setupMenuItem(newGradedItemMenuItem, "New Graded Item", "showNewGradedItem");
gradebookMenu.add(newGradedItemMenuItem);
setupMenuItem(newCategoryMenuItem, "New Category", "showNewCategory");
gradebookMenu.add(newCategoryMenuItem);
jSeparator4.setName("jSeparator4");
gradebookMenu.add(jSeparator4);
setupMenuItem(catManagerMenuItem, "Category & Item Manager", "showCatManager");
gradebookMenu.add(catManagerMenuItem);
menuBar.add(gradebookMenu);
studentMenu.setText("Student");
studentMenu.setName("studentMenu");
setupMenuItem(newStudentMenuItem, "New Student", "showNewStudent");
studentMenu.add(newStudentMenuItem);
setupMenuItem(studentManagerMenuItem, "Student Manager", "showStudentManager");
studentMenu.add(studentManagerMenuItem);
menuBar.add(studentMenu);
windowMenu.setText("Window");
windowMenu.setName("windowMenu");
setupMenuItem(showGradebook, "Gradebook", "showGradebook");
windowMenu.add(showGradebook);
setupMenuItem(showPieChartMenuItem, "Pie Chart", "showPieChart");
windowMenu.add(showPieChartMenuItem);
setupMenuItem(showHistogramMenuItem, "Histogram", "showHistogram");
windowMenu.add(showHistogramMenuItem);
setupMenuItem(showGradingRangeMenuItem, "Grading Range", "showGradingRange");
windowMenu.add(showGradingRangeMenuItem);
menuBar.add(windowMenu);
helpMenu.setText("Help");
helpMenu.setName("helpMenu");
setupMenuItem(contentsMenuItem, "Contents", "showContents");
helpMenu.add(contentsMenuItem);
setupMenuItem(aboutMenuItem, "About", "showAbout");
helpMenu.add(aboutMenuItem);
menuBar.add(helpMenu);
}
//
private JMenuBar menuBar;
// file menu items
private JMenu fileMenu;
private JMenuItem newMenuItem;
private JMenuItem openMenuItem;
private JMenuItem saveMenuItem;
private JMenuItem saveAsMenuItem;
private JMenuItem loginMenuItem;
private JMenuItem midTermSyncMenuItem;
private JMenuItem importMenuItem;
private JMenu exportMenu;
private JMenuItem exportServerMenuItem;
private JMenuItem exportSisMenuItem;
private JMenuItem exitMenuItem;
// edit menu items
private JMenu editMenu;
private JMenuItem undoMenuItem;
private JMenuItem redoMenuItem;
private JMenuItem revertMenuItem;
// view menu items
private JMenu viewMenu;
private JMenu toolbarsMenu;
private JMenu zoomMenu;
private JMenuItem switchViewMenuItem;
// tools menu items
private JMenu toolsMenu;
private JMenuItem findMenuItem;
private JMenuItem optionsMenuItem;
// gradebook menu items
private JMenu gradebookMenu;
private JMenuItem newCategoryMenuItem;
private JMenuItem newGradedItemMenuItem;
private JMenuItem catManagerMenuItem;
// student menu items
private JMenu studentMenu;
private JMenuItem newStudentMenuItem;
private JMenuItem studentManagerMenuItem;
// window menu items
private JMenu windowMenu;
private JMenuItem showGradingRangeMenuItem;
private JMenuItem showPieChartMenuItem;
private JMenuItem showHistogramMenuItem;
// help menu items
private JMenu helpMenu;
private JMenuItem contentsMenuItem;
private JMenuItem aboutMenuItem;
private JSeparator jSeparator1;
private JSeparator jSeparator2;
private JSeparator jSeparator3;
private JSeparator jSeparator4;
private JSeparator statusPanelSeparator;
private JCheckBoxMenuItem showGradebook;
private JProgressBar progressBar;
private JLabel statusAnimationLabel;
private JLabel statusMessageLabel;
private JPanel statusPanel;
private JPanel mainPanel;
private final Timer messageTimer;
private final Timer busyIconTimer;
private final Icon idleIcon;
private final Icon[] busyIcons = new Icon[15];
private int busyIconIndex = 0;
private JDesktopPane desktop;
private JDialog aboutBox;
private Gradebook gradebook;
private Gradebook piechart;
private Gradebook histogram;
private GradingScheme gradingScheme;
private JDialog exportToServer;
private JDialog exportToSIS;
private JDialog importWizard;
private JDialog midTermSync;
private JDialog addCategory;
private JDialog addItem;
private JDialog login;
private JDialog catAndItemManger;
private JDialog newStudent;
private JDialog studentManger;
//
}