/* * Get Organized - Organize your schedule, course assignments, and grades * Copyright © 2012 Alex Laird * getorganized@alexlaird.com * alexlaird.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package adl.go.gui; import adl.go.gui.ColoredComponent.GradientStyle; import adl.go.types.Course; import adl.go.types.Term; import java.awt.Color; import java.awt.Cursor; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ResourceBundle; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.TitledBorder; /** * The Grades dialog. * * @author Alex Laird */ public class GradesDialog extends EscapeDialog { /** * The model for the terms displayed in the combo box in the Grades dialog. */ public DefaultComboBoxModel gradesTermsComboModel = new DefaultComboBoxModel (); /** * The model for the courses displayed in the combo box in the Grades dialog. */ public DefaultComboBoxModel gradesCoursesComboModel = new DefaultComboBoxModel (); /** * Construct the Grades dialog. * * @param viewPanel A reference to the view panel. */ public GradesDialog(ViewPanel viewPanel) { super (viewPanel.mainFrame); setMainPanel (viewPanel); initComponents (); } /** * Initialize the Grades dialog. */ public void init() { setTitle (viewPanel.domain.language.getString ("grades")); gradesBottomJPanel.setBackground (viewPanel.domain.utility.currentTheme.colorDoubleWindowBottomBackground1); gradesTopJPanel.setBackground (viewPanel.domain.utility.currentTheme.colorDoubleWindowTopBackground1); ((TitledBorder) courseSummaryPanelOutter.getBorder ()).setTitleFont (viewPanel.domain.utility.currentTheme.fontPlain12); gradesCoursesComboBox.setBackground (viewPanel.domain.utility.currentTheme.colorButtonBackground); gradesCoursesComboBox.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); gradesLabel.setFont (viewPanel.domain.utility.currentTheme.fontBold14); gradesTermsComboBox.setBackground (viewPanel.domain.utility.currentTheme.colorButtonBackground); gradesTermsComboBox.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); avgGradeLabel.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); gradesCloseButton.setBackground (viewPanel.domain.utility.currentTheme.colorButtonBackground); gradesCloseButton.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); } /** * 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() { gradesJPanel = new javax.swing.JPanel(); gradesBottomJPanel = new adl.go.gui.ColoredJPanel(GradientStyle.NO_GRADIENT, Color.WHITE); gradesCoursesComboBox = new javax.swing.JComboBox(); graphPanel = new GradesGraphPanel(); courseGradesDetails = new javax.swing.JPanel(); courseGradesScrollPane = new javax.swing.JScrollPane(); courseGradesListPanel = new javax.swing.JPanel(); courseSummaryPanelOutter = new javax.swing.JPanel(); courseSummaryScrollPane = new javax.swing.JScrollPane(); courseSummaryPanel = new javax.swing.JPanel(); gradesTopJPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, Color.WHITE); gradesLabel = new javax.swing.JLabel(); gradesTermsComboBox = new javax.swing.JComboBox(); avgGradeLabel = new javax.swing.JLabel(); gradesCloseButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setResizable(false); gradesBottomJPanel.setPreferredSize(new java.awt.Dimension(970, 425)); gradesCoursesComboBox.setModel(gradesCoursesComboModel); gradesCoursesComboBox.setToolTipText(viewPanel.domain.language.getString ("courseDisplayGradesFor")); gradesCoursesComboBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { gradesCoursesComboBoxItemStateChanged(evt); } }); graphPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); graphPanel.setOpaque(false); javax.swing.GroupLayout graphPanelLayout = new javax.swing.GroupLayout(graphPanel); graphPanel.setLayout(graphPanelLayout); graphPanelLayout.setHorizontalGroup( graphPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 680, Short.MAX_VALUE) ); graphPanelLayout.setVerticalGroup( graphPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 211, Short.MAX_VALUE) ); courseGradesDetails.setBorder(javax.swing.BorderFactory.createEtchedBorder()); courseGradesDetails.setOpaque(false); courseGradesScrollPane.setOpaque(false); courseGradesListPanel.setOpaque(false); courseGradesListPanel.setLayout(new javax.swing.BoxLayout(courseGradesListPanel, javax.swing.BoxLayout.PAGE_AXIS)); courseGradesScrollPane.setViewportView(courseGradesListPanel); javax.swing.GroupLayout courseGradesDetailsLayout = new javax.swing.GroupLayout(courseGradesDetails); courseGradesDetails.setLayout(courseGradesDetailsLayout); courseGradesDetailsLayout.setHorizontalGroup( courseGradesDetailsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(courseGradesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 184, javax.swing.GroupLayout.PREFERRED_SIZE) ); courseGradesDetailsLayout.setVerticalGroup( courseGradesDetailsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(courseGradesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE) ); courseSummaryPanelOutter.setBorder(javax.swing.BorderFactory.createTitledBorder(viewPanel.domain.language.getString ("courseSummary"))); courseSummaryPanelOutter.setOpaque(false); courseSummaryScrollPane.setBorder(null); courseSummaryScrollPane.setOpaque(false); courseSummaryPanel.setOpaque(false); courseSummaryPanel.setLayout(new java.awt.GridLayout(4, 1)); courseSummaryScrollPane.setViewportView(courseSummaryPanel); javax.swing.GroupLayout courseSummaryPanelOutterLayout = new javax.swing.GroupLayout(courseSummaryPanelOutter); courseSummaryPanelOutter.setLayout(courseSummaryPanelOutterLayout); courseSummaryPanelOutterLayout.setHorizontalGroup( courseSummaryPanelOutterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(courseSummaryScrollPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 866, Short.MAX_VALUE) ); courseSummaryPanelOutterLayout.setVerticalGroup( courseSummaryPanelOutterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(courseSummaryScrollPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) ); javax.swing.GroupLayout gradesBottomJPanelLayout = new javax.swing.GroupLayout(gradesBottomJPanel); gradesBottomJPanel.setLayout(gradesBottomJPanelLayout); gradesBottomJPanelLayout.setHorizontalGroup( gradesBottomJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, gradesBottomJPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(gradesBottomJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(courseSummaryPanelOutter, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(gradesCoursesComboBox, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, gradesBottomJPanelLayout.createSequentialGroup() .addComponent(courseGradesDetails, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(graphPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) ); gradesBottomJPanelLayout.setVerticalGroup( gradesBottomJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, gradesBottomJPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(gradesBottomJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(graphPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(courseGradesDetails, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(gradesCoursesComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(courseSummaryPanelOutter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); gradesTopJPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); gradesTopJPanel.setPreferredSize(new java.awt.Dimension(970, 49)); gradesLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/adl/go/images/grades_mini.png"))); // NOI18N gradesLabel.setText(viewPanel.domain.language.getString ("grades")); gradesTermsComboBox.setModel(gradesTermsComboModel); gradesTermsComboBox.setToolTipText(viewPanel.domain.language.getString ("termDisplayGradesFor")); gradesTermsComboBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { gradesTermsComboBoxItemStateChanged(evt); } }); avgGradeLabel.setText("Average grade: <<Term Grade>>"); gradesCloseButton.setText(viewPanel.domain.language.getString ("close")); gradesCloseButton.setToolTipText(viewPanel.domain.language.getString ("closeToolTip")); gradesCloseButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { gradesCloseButtonActionPerformed(evt); } }); javax.swing.GroupLayout gradesTopJPanelLayout = new javax.swing.GroupLayout(gradesTopJPanel); gradesTopJPanel.setLayout(gradesTopJPanelLayout); gradesTopJPanelLayout.setHorizontalGroup( gradesTopJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(gradesTopJPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(gradesLabel) .addGap(18, 18, 18) .addComponent(gradesTermsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(avgGradeLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 466, Short.MAX_VALUE) .addComponent(gradesCloseButton) .addContainerGap()) ); gradesTopJPanelLayout.setVerticalGroup( gradesTopJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(gradesTopJPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(gradesTopJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(gradesLabel) .addComponent(gradesTermsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(avgGradeLabel) .addComponent(gradesCloseButton)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout gradesJPanelLayout = new javax.swing.GroupLayout(gradesJPanel); gradesJPanel.setLayout(gradesJPanelLayout); gradesJPanelLayout.setHorizontalGroup( gradesJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(gradesTopJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 898, Short.MAX_VALUE) .addComponent(gradesBottomJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 898, Short.MAX_VALUE) ); gradesJPanelLayout.setVerticalGroup( gradesJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(gradesJPanelLayout.createSequentialGroup() .addComponent(gradesTopJPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(gradesBottomJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(gradesJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(gradesJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pack(); }// </editor-fold>//GEN-END:initComponents private void gradesCoursesComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_gradesCoursesComboBoxItemStateChanged if (gradesTermsComboBox.getSelectedIndex () != -1 && viewPanel.domain.utility.terms.size () > 0 && viewPanel.domain.utility.terms.get (gradesTermsComboBox.getSelectedIndex ()).getCourseCount () > 0 && viewPanel.domain.utility.courses.size () > 0 && gradesTermsComboBox.getSelectedIndex () != -1) { if (gradesCoursesComboBox.getSelectedIndex () != -1) { Course course = viewPanel.domain.utility.terms.get (gradesTermsComboBox.getSelectedIndex ()).getCourse (gradesCoursesComboBox.getSelectedIndex ()); courseSummaryPanel.removeAll (); courseSummaryPanel.setLayout (new GridLayout (4, 4)); for (int i = 0; i < course.getTypeCount (); i += 4) { if (i > 4) { GridLayout layout = (GridLayout) courseSummaryPanel.getLayout (); layout.setRows (layout.getRows () + 2); } JPanel rowPanel = new JPanel (new GridLayout (1, 4)); rowPanel.setOpaque (false); courseSummaryPanel.add (rowPanel); JLabel first = new JLabel (course.getType (i).getTypeName () + " (" + course.getType (i).getWeight () + ")"); first.setFont (viewPanel.domain.utility.currentTheme.fontBold12); rowPanel.add (first); if (i + 1 < course.getTypeCount ()) { JLabel second = new JLabel (course.getType (i + 1).getTypeName () + " (" + course.getType (i + 1).getWeight () + ")"); second.setFont (viewPanel.domain.utility.currentTheme.fontBold12); rowPanel.add (second); } else { rowPanel.add (new JLabel ("")); } if (i + 2 < course.getTypeCount ()) { JLabel third = new JLabel (course.getType (i + 2).getTypeName () + " (" + course.getType (i + 2).getWeight () + ")"); third.setFont (viewPanel.domain.utility.currentTheme.fontBold12); rowPanel.add (third); } else { rowPanel.add (new JLabel ("")); } if (i + 3 < course.getTypeCount ()) { JLabel fourth = new JLabel (course.getType (i + 3).getTypeName () + " (" + course.getType (i + 3).getWeight () + ")"); fourth.setFont (viewPanel.domain.utility.currentTheme.fontBold12); rowPanel.add (fourth); } else { rowPanel.add (new JLabel ("")); } rowPanel = new JPanel (new GridLayout (1, 4)); rowPanel.setOpaque (false); courseSummaryPanel.add (rowPanel); double grade = course.getType (i).getGrade () / 100; String gradeString = viewPanel.domain.language.getString ("notApplicableAbbrev"); if (grade >= 0) { gradeString = Domain.PERCENT_FORMAT.format (grade); } JLabel fifth = new JLabel (" " + gradeString); fifth.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); rowPanel.add (fifth); if (i + 1 < course.getTypeCount ()) { grade = course.getType (i + 1).getGrade () / 100; gradeString = viewPanel.domain.language.getString ("notApplicableAbbrev"); if (grade >= 0) { gradeString = Domain.PERCENT_FORMAT.format (grade); } JLabel sixth = new JLabel (" " + gradeString); sixth.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); rowPanel.add (sixth); } else { rowPanel.add (new JLabel ("")); } if (i + 2 < course.getTypeCount ()) { grade = course.getType (i + 2).getGrade () / 100; gradeString = viewPanel.domain.language.getString ("notApplicableAbbrev"); if (grade >= 0) { gradeString = Domain.PERCENT_FORMAT.format (grade); } JLabel seventh = new JLabel (" " + gradeString); seventh.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); rowPanel.add (seventh); } else { rowPanel.add (new JLabel ("")); } if (i + 3 < course.getTypeCount ()) { grade = course.getType (i + 3).getGrade () / 100; gradeString = viewPanel.domain.language.getString ("notApplicableAbbrev"); if (grade >= 0) { gradeString = Domain.PERCENT_FORMAT.format (grade); } JLabel eigth = new JLabel (" " + gradeString); eigth.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); rowPanel.add (eigth); } else { rowPanel.add (new JLabel ("")); } } if (course.getTypeCount () == 0) { JPanel rowPanel = new JPanel (new GridLayout (1, 4)); rowPanel.setOpaque (false); courseSummaryPanel.add (rowPanel); rowPanel = new JPanel (new GridLayout (1, 4)); rowPanel.setOpaque (false); courseSummaryPanel.add (rowPanel); JLabel label = new JLabel (viewPanel.domain.language.getString ("noTypesAssocWithCourse")); label.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); rowPanel.add (label); rowPanel = new JPanel (new GridLayout (1, 4)); rowPanel.setOpaque (false); courseSummaryPanel.add (rowPanel); JButton button = new JButton (viewPanel.domain.language.getString ("editGradingScale") + "..."); button.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); button.setBackground (viewPanel.domain.utility.currentTheme.colorButtonBackground); final Course passCourse = course; button.addActionListener (new ActionListener () { @Override public void actionPerformed(ActionEvent evt) { dispose (); viewPanel.goEditTypesFromGrades (passCourse); } }); rowPanel.add (button); rowPanel.add (new JLabel ("")); rowPanel.add (new JLabel ("")); rowPanel.add (new JLabel ("")); } courseSummaryPanel.invalidate (); courseSummaryPanel.revalidate (); courseSummaryPanel.repaint (); } } else { courseSummaryPanel.removeAll (); courseSummaryPanel.invalidate (); courseSummaryPanel.revalidate (); courseSummaryPanel.repaint (); } }//GEN-LAST:event_gradesCoursesComboBoxItemStateChanged private void gradesTermsComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_gradesTermsComboBoxItemStateChanged if (viewPanel.domain.utility.terms.size () > 0 && !viewPanel.gradesLoading) { graphPanel.setEnabled (true); if (gradesTermsComboBox.getSelectedIndex () != -1) { // load the table Term term = viewPanel.domain.utility.terms.get (gradesTermsComboBox.getSelectedIndex ()); courseGradesListPanel.removeAll (); courseSummaryPanel.removeAll (); gradesCoursesComboModel.removeAllElements (); for (int i = 0; i < term.getCourseCount (); ++i) { final Course course = viewPanel.domain.utility.courses.get (viewPanel.domain.utility.getCourseIndex (term.getCourse (i))); gradesCoursesComboModel.addElement (course.getTypeName ()); JLabel first = new JLabel (course.getTypeName ()); first.addMouseListener (new MouseAdapter () { @Override public void mouseEntered(MouseEvent evt) { setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR)); } @Override public void mouseExited(MouseEvent evt) { setCursor (Cursor.getDefaultCursor ()); } @Override public void mouseReleased(MouseEvent evt) { gradesCoursesComboBox.setSelectedIndex (viewPanel.domain.utility.terms.get (gradesTermsComboBox.getSelectedIndex ()).getCourseIndex (course)); } }); first.setFont (viewPanel.domain.utility.currentTheme.fontBold12); first.setForeground (course.getColor ()); double grade = viewPanel.domain.calculateGradeForCourse (course) / 100; JLabel second = new JLabel (" " + viewPanel.domain.language.getString ("currentGrade") + ": " + (grade == -0.01 ? viewPanel.domain.language.getString ("notApplicableAbbrev") : Domain.PERCENT_FORMAT.format (grade))); second.addMouseListener (new MouseAdapter () { @Override public void mouseReleased(MouseEvent evt) { gradesCoursesComboBox.setSelectedIndex (viewPanel.domain.utility.terms.get (gradesTermsComboBox.getSelectedIndex ()).getCourseIndex (course)); } }); second.setFont (viewPanel.domain.utility.currentTheme.fontPlain12); courseGradesListPanel.add (first); courseGradesListPanel.add (second); JLabel space = new JLabel ("__"); space.setFont (new Font ("Verdana", Font.PLAIN, 5)); courseGradesListPanel.add (space); space.setForeground (courseGradesListPanel.getBackground ()); } // load the graph graphPanel.setTerm (term); graphPanel.invalidate (); if (gradesCoursesComboModel.getSize () == 0) { gradesCoursesComboModel.addElement ("-" + viewPanel.domain.language.getString ("none") + "-"); } gradesCoursesComboBox.setSelectedIndex (0); double grade = viewPanel.domain.calculateGradeForTerm (term) / 100; avgGradeLabel.setText (viewPanel.domain.language.getString ("averageGrade") + ": " + (grade == -0.01 ? viewPanel.domain.language.getString ("notApplicableAbbrev") : Domain.PERCENT_FORMAT.format (grade))); } } else { avgGradeLabel.setText (""); gradesCoursesComboModel.removeAllElements (); gradesCoursesComboModel.addElement ("-" + viewPanel.domain.language.getString ("none") + "-"); gradesCoursesComboBox.setSelectedIndex (0); courseGradesListPanel.removeAll (); graphPanel.setEnabled (false); graphPanel.invalidate (); } }//GEN-LAST:event_gradesTermsComboBoxItemStateChanged private void gradesCloseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_gradesCloseButtonActionPerformed dispose (); viewPanel.requestFocus (); }//GEN-LAST:event_gradesCloseButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel avgGradeLabel; private javax.swing.JPanel courseGradesDetails; private javax.swing.JPanel courseGradesListPanel; protected javax.swing.JScrollPane courseGradesScrollPane; private javax.swing.JPanel courseSummaryPanel; private javax.swing.JPanel courseSummaryPanelOutter; protected javax.swing.JScrollPane courseSummaryScrollPane; protected adl.go.gui.ColoredJPanel gradesBottomJPanel; private javax.swing.JButton gradesCloseButton; protected javax.swing.JComboBox gradesCoursesComboBox; protected javax.swing.JPanel gradesJPanel; private javax.swing.JLabel gradesLabel; protected javax.swing.JComboBox gradesTermsComboBox; protected adl.go.gui.ColoredJPanel gradesTopJPanel; public adl.go.gui.GradesGraphPanel graphPanel; // End of variables declaration//GEN-END:variables /** * Launches the grades dialog, loading the dialogs term combo box with all * available terms. */ protected void goViewGrades() { if (viewPanel.settingsDialog.isVisible ()) { viewPanel.settingsDialog.closeSettingsDialog (); } if (viewPanel.termsAndCoursesDialog.isVisible ()) { viewPanel.termsAndCoursesDialog.closeTermsAndCoursesDialog (); } viewPanel.gradesLoading = true; viewPanel.domain.utility.loadGradesTermCombo (); viewPanel.gradesLoading = false; if (viewPanel.getSelectedTermIndex () == -1) { if (graphPanel.getTerm () == null) { gradesTermsComboBox.setSelectedIndex (0); gradesTermsComboBoxItemStateChanged (null); } else { gradesTermsComboBox.setSelectedIndex (viewPanel.domain.utility.getTermIndex (graphPanel.getTerm ())); gradesTermsComboBoxItemStateChanged (null); } } else { gradesTermsComboBox.setSelectedIndex (viewPanel.getSelectedTermIndex ()); gradesTermsComboBoxItemStateChanged (null); } pack (); setLocationRelativeTo (viewPanel); setVisible (true); } /** * Apply the language for this dialog. * * @param language The language resource to be applied. */ public void applyLanguage(ResourceBundle language) { } }