/*
* 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.resource.LocalUtility;
import adl.go.resource.Updater;
import adl.go.types.Assignment;
import adl.go.types.AssignmentType;
import adl.go.types.Course;
import adl.go.types.Event;
import adl.go.types.Instructor;
import adl.go.types.ListItem;
import adl.go.types.Repeating;
import adl.go.types.Term;
import adl.go.types.Textbook;
import com.apple.eawt.AboutHandler;
import com.apple.eawt.AppEvent.AboutEvent;
import com.apple.eawt.AppEvent.PreferencesEvent;
import com.apple.eawt.AppEvent.QuitEvent;
import com.apple.eawt.Application;
import com.apple.eawt.PreferencesHandler;
import com.apple.eawt.QuitHandler;
import com.apple.eawt.QuitResponse;
import com.toedter.calendar.JTextFieldDateEditor;
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragSource;
import java.awt.dnd.DropTarget;
import java.awt.event.AWTEventListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.ResourceBundle;
import java.util.Stack;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.JTree;
import javax.swing.JViewport;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
/**
* Keep your Course schedule and grades organized with Get Organized, a simple
* and efficient academic planner. Specify Assignment details, keep track of
* up-and-coming and overdue schoolwork, monitor grades, and more. View your
* schedule as a collective list or in a familiar calendar format.
*
* Get Organized is a free, digital planner that eliminates the hassle and cost
* of a physical planner. See the list of Key Features below that will help the
* punctual to stay on top of their schedule and the procrastinator to stay on
* track.
*
* The view of this application handles all UI-specific interactions between the
* user and the domain of the application, which should contain direct
* interaction with the back-end.
*
* @author Alex Laird
*/
public class ViewPanel extends JPanel
{
/**
* The option pane which can be customized to have yes/no, ok/cancel, or
* just ok buttons in it.
*/
public static final JOptionPane OPTION_PANE = new JOptionPane ();
/**
* The "Only this instance" button for repeat events.
*/
public final Integer ONLY_THIS_INSTANCE_OPTION = new Integer (30);
/**
* The "All following" button for repeat events.
*/
public final Integer ALL_FOLLOWING_OPTION = new Integer (31);
/**
* The "All in series" button for repeat events.
*/
public final Integer ALL_IN_SERIES_OPTION = new Integer (32);
/**
* The yes button for the option dialog.
*/
public final JButton YES_OPTION_BUTTON = new JButton ("Yes");
/**
* The no button for the option dialog.
*/
public final JButton NO_OPTION_BUTTON = new JButton ("No");
/**
* The OK button for the option dialog.
*/
public final JButton OK_OPTION_BUTTON = new JButton ("Ok");
/**
* The I understand button for the option dialog.
*/
public final JButton I_UNDERSTAND_OPTION_BUTTON = new JButton ("I understand");
/**
* The cancel button for the option dialog.
*/
public final JButton CANCEL_OPTION_BUTTON = new JButton ("Cancel");
/**
* The "Only this instance" button for repeating events.
*/
public final JButton ONLY_THIS_INSTANCE_BUTTON = new JButton ("Only this instance");
/**
* The "All in series" button for repeating events.
*/
public final JButton ALL_IN_SERIES_BUTTON = new JButton ("All in series");
/**
* The "All following" button for repeating events.
*/
public final JButton ALL_FOLLOWING_BUTTON = new JButton ("This and all following");
/**
* The "All following" button for repeating events.
*/
public final JButton REPLACE_OPTION_BUTTON = new JButton ("Replace");
/**
* The object which contains the merge, replace, and cancel buttons.
*/
public final Object[] REPLACE_CANCEL_CHOICES = new Object[]
{
REPLACE_OPTION_BUTTON, CANCEL_OPTION_BUTTON
};
/**
* The object which contains the yes and no buttons for the option pane.
*/
public final Object[] YES_NO_CHOICES = new Object[]
{
YES_OPTION_BUTTON, NO_OPTION_BUTTON
};
/**
* The object which contains the yes, no, and cancel buttons.
*/
public final Object[] YES_NO_CANCEL_CHOICES = new Object[]
{
YES_OPTION_BUTTON, NO_OPTION_BUTTON, CANCEL_OPTION_BUTTON
};
/**
* The object which contains the ok and cancel buttons for the option pane.
*/
public final Object[] OK_CANCEL_CHOICES = new Object[]
{
OK_OPTION_BUTTON, CANCEL_OPTION_BUTTON
};
/**
* The object which contains only the ok button for the option pane.
*/
public final Object[] OK_CHOICE = new Object[]
{
OK_OPTION_BUTTON
};
/**
* The object which contains four buttons for presenting with a repeat event dialog.
*/
public final Object[] REPEATING_CHOICE = new Object[]
{
ONLY_THIS_INSTANCE_BUTTON, ALL_IN_SERIES_BUTTON, ALL_FOLLOWING_BUTTON, CANCEL_OPTION_BUTTON
};
/**
* The object which contains three buttons for removing repeating events.
*/
public final Object[] REMOVE_REPEATING_CHOICES = new Object[]
{
ONLY_THIS_INSTANCE_BUTTON, ALL_IN_SERIES_BUTTON, ALL_FOLLOWING_BUTTON, CANCEL_OPTION_BUTTON
};
/**
* The object which contains two buttons for updating repeating events.
*/
public final Object[] UPDATE_REPEATING_CHOICES = new Object[]
{
ALL_IN_SERIES_BUTTON, ALL_FOLLOWING_BUTTON, CANCEL_OPTION_BUTTON
};
/**
* The grey color.
*/
public final Color GREY = Color.LIGHT_GRAY;
/**
* The black color.
*/
public final Color BLACK = Color.BLACK;
/**
* The unselected border for a day of a month.
*/
public final Border UNSELECTED_DAY_BORDER = BorderFactory.createEtchedBorder ();
/**
* The selected border for a day of the month.
*/
public final Border SELECTED_DAY_BORDER = BorderFactory.createLoweredBevelBorder ();
/**
* The unit to increment scroll bars.
*/
public final int SCROLL_INCREMENT = 16;
/**
* The source object for draggable assignments and events.
*/
public final DragSource DRAG_SOURCE = new DragSource ();
/**
* The drag-and-drop listener for assignments and events.
*/
public final DragDrop DND_LISTENER = new DragDrop (this);
/**
* The main frame of a stand-alone application.
*/
public MainFrame mainFrame;
/**
* The root node which terms (and ultimately courses) are added to.
*/
public DefaultMutableTreeNode root = new DefaultMutableTreeNode ("root");
/**
* The model for the left-hand term tree.
*/
public DefaultTreeModel termsModel = new DefaultTreeModel (root);
/**
* The model for the middle assignments and events table.
*/
public ExtendedTableModel assignmentsTableModel = new ExtendedTableModel ();
/**
* The model for the courses displayed in the combo box in the Assignment
* Details panel.
*/
public DefaultComboBoxModel courseComboModel = new DefaultComboBoxModel ();
/**
* The model for the textbooks displayed in the combo box in the Assignment
* Details panel.
*/
public DefaultComboBoxModel textbookComboModel = new DefaultComboBoxModel ();
/**
* The model for the types displayed in the combo box in the Assignment
* Details panel.
*/
public DefaultComboBoxModel typeComboModel = new DefaultComboBoxModel ();
/**
* The model for the categories displayed in the combo box in the Event
* Details panel.
*/
public DefaultComboBoxModel categoryComboModel = new DefaultComboBoxModel ();
/**
* The add button in the toolbar.
*/
public ToolbarButton addButton;
/**
* The clone button in the toolbar.
*/
public ToolbarButton cloneButton;
/**
* The remove button in the toolbar.
*/
public ToolbarButton removeButton;
/**
* The ask button in the toolbar.
*/
public ToolbarButton askInstructorButton;
/**
* The grades button in the toolbar.
*/
public ToolbarButton viewGradesButton;
/**
* The preferences button in the toolbar.
*/
public ToolbarButton settingsButton;
/**
* The terms and courses button in the toolbar.
*/
public ToolbarButton termsAndCoursesButton;
/**
* The array that holds references to the panels holding the assignments and
* events for each day of the month shown in Calendar View.
*/
public JPanel[] daysAssignmentsAndEvents;
/**
* The array that holds references to panels shown in month view but outside
* the currently shown month
*/
public JPanel[] daysOutsideMonth;
/**
* The domain object reference performs generic actions specific to the GUI.
*/
public Domain domain = new Domain (this);
/**
* The list of currently shown assignmentsAndEvents in Calendar View.
*/
protected ArrayList<Assignment> shownAssignments = new ArrayList<Assignment> ();
/**
* The list of currently shown events in Calendar View.
*/
protected ArrayList<Event> shownEvents = new ArrayList<Event> ();
/**
* The JPanel of the currently selected day in Calendar View.
*/
protected JPanel selectedDayPanel = null;
/**
* The array that holds references to the panels that hold day elements in
* the Calendar View.
*/
protected ColoredJPanel[] days;
/**
* An extra panel containing assignments and events in Calendar View.
*/
protected ColoredJPanel extraDayPanel1 = new adl.go.gui.ColoredJPanel (GradientStyle.VERTICAL_GRADIENT_DOWN, new Color (255, 255, 255));
/**
* An extra panel containing the label for the day number and the panel that
* will contain assignments and events for this day.
*/
private JPanel extraDay1 = new JPanel ();
/**
* The extra scroll panel around the panel containing the assignments and
* events for this day.
*/
private JScrollPane extraDayScroll1 = new JScrollPane (extraDay1);
/**
* An extra panel containing assignments and events in Calendar View.
*/
protected ColoredJPanel extraDayPanel2 = new adl.go.gui.ColoredJPanel (GradientStyle.VERTICAL_GRADIENT_DOWN, new Color (255, 255, 255));
/**
* An extra panel containing the label for the day number and the panel that
* will contain assignments and events.
*/
private JPanel extraDay2 = new JPanel ();
/**
* The extra scroll panel around the panel containing the assignments and
* events for this day.
*/
private JScrollPane extraDayScroll2 = new JScrollPane (extraDay2);
/**
* An extra panel containing assignments and events in Calendar View.
*/
protected ColoredJPanel extraDayPanel3 = new adl.go.gui.ColoredJPanel (GradientStyle.VERTICAL_GRADIENT_DOWN, new Color (255, 255, 255));
/**
* An extra panel containing the label for the day number and the panel that
* will contain assignments and events.
*/
private JPanel extraDay3 = new JPanel ();
/**
* The extra scroll panel around the panel containing the assignments and
* events for this day.
*/
private JScrollPane extraDayScroll3 = new JScrollPane (extraDay3);
/**
* An extra panel containing assignments and events in Calendar View.
*/
protected ColoredJPanel extraDayPanel4 = new adl.go.gui.ColoredJPanel (GradientStyle.VERTICAL_GRADIENT_DOWN, new Color (255, 255, 255));
/**
* An extra panel containing the label for the day number and the panel that
* will contain assignments and events.
*/
private JPanel extraDay4 = new JPanel ();
/**
* The extra scroll panel around the panel containing the assignments and
* events for this day.
*/
private JScrollPane extraDayScroll4 = new JScrollPane (extraDay4);
/**
* An extra panel containing assignments and events in Calendar View.
*/
protected ColoredJPanel extraDayPanel5 = new adl.go.gui.ColoredJPanel (GradientStyle.VERTICAL_GRADIENT_DOWN, new Color (255, 255, 255));
/**
* An extra panel containing the label for the day number and the panel that
* will contain assignments and events.
*/
private JPanel extraDay5 = new JPanel ();
/**
* The extra scroll panel around the panel containing the assignments and
* events for this day.
*/
private JScrollPane extraDayScroll5 = new JScrollPane (extraDay5);
/**
* An extra panel containing assignments and events in Calendar View.
*/
protected ColoredJPanel extraDayPanel6 = new adl.go.gui.ColoredJPanel (GradientStyle.VERTICAL_GRADIENT_DOWN, new Color (255, 255, 255));
/**
* An extra panel containing the label for the day number and the panel that
* will contain assignments and events.
*/
private JPanel extraDay6 = new JPanel ();
/**
* The extra scroll panel around the panel containing the assignments and
* events for this day.
*/
private JScrollPane extraDayScroll6 = new JScrollPane (extraDay6);
/**
* An extra panel containing assignments and events in Calendar View.
*/
protected ColoredJPanel extraDayPanel7 = new adl.go.gui.ColoredJPanel (GradientStyle.VERTICAL_GRADIENT_DOWN, new Color (255, 255, 255));
/**
* An extra panel containing the label for the day number and the panel that
* will contain assignments and events.
*/
private JPanel extraDay7 = new JPanel ();
/**
* The extra scroll panel around the panel containing the assignments and
* events for this day.
*/
private JScrollPane extraDayScroll7 = new JScrollPane (extraDay7);
/**
* An extra day label
*/
private JLabel extraDayLabel1 = new JLabel ("#", SwingConstants.RIGHT);
/**
* An extra day label
*/
private JLabel extraDayLabel2 = new JLabel ("#", SwingConstants.RIGHT);
/**
* An extra day label
*/
private JLabel extraDayLabel3 = new JLabel ("#", SwingConstants.RIGHT);
/**
* An extra day label
*/
private JLabel extraDayLabel4 = new JLabel ("#", SwingConstants.RIGHT);
/**
* An extra day label
*/
private JLabel extraDayLabel5 = new JLabel ("#", SwingConstants.RIGHT);
/**
* An extra day label
*/
private JLabel extraDayLabel6 = new JLabel ("#", SwingConstants.RIGHT);
/**
* An extra day label
*/
private JLabel extraDayLabel7 = new JLabel ("#", SwingConstants.RIGHT);
/**
* True if the mouse is dragging in the assignments table, false otherwise.
*/
private boolean mouseDraggingInTable = false;
/**
* True if the table selection should be ignored, false otherwise.
*/
public boolean ignoreTableSelection = false;
/**
* True if the application is running initialization, false otherwise.
*/
public boolean initLoading = true;
/**
* True if the grades dialog is launching, false otherwise.
*/
protected boolean launchingGrades = false;
/**
* True while the application goes through its quitting process, false otherwise.
*/
protected boolean quitting = false;
/**
* If contains no elements, name text fields should be reselected.
*/
protected Stack<Boolean> dontReselectName = new Stack<Boolean> ();
/**
* Forces the state change view to load.
*/
private boolean forceViewLoad = false;
/**
* True if a tree selection should be ignored, false otherwise.
*/
private boolean ignoreTreeSelection = false;
/**
* True when event changes have been made (but selection has not been
* terminated), false otherwise.
*/
protected Stack<Boolean> eventChanges = new Stack<Boolean> ();
/**
* True when repeating event changes have been made (but selection has not
* been terminated), false otherwise.
*/
protected boolean repeatEventChanges = false;
/**
* True when Grades dialog is launching, false otherwise.
*/
protected boolean gradesLoading = false;
/**
* The index of the first day in the next month.
*/
public int lastMonthFirst = -1;
/**
* The number of days in the previous month.
*/
public int lastMonthLast = -1;
/**
* The last good directory the user selected from.
*/
protected String lastGoodFile;
/**
* The end date for the currently selected event.
*/
private Date repeatingEndDate;
/**
* The currently selected event (before any changes are made).
*/
private Event tempEvent = null;
/**
* A reference to the about dialog.
*/
protected AboutDialog aboutDialog = new AboutDialog (this);
/**
* A reference to the getting started dialog.
*/
protected GettingStartedDialog gettingStartedDialog = new GettingStartedDialog (this);
/**
* A reference to the Helium dialog.
*/
protected HeliumDialog heliumDialog = new HeliumDialog (this);
/**
* A reference to the import from backup dialog.
*/
protected ImportFromBackupDialog importFromBackupDialog = new ImportFromBackupDialog (this);
/**
* A reference to the print dialog.
*/
protected PrintDialog printDialog = new PrintDialog (this);
/**
* A reference to the settings dialog.
*/
public SettingsDialog settingsDialog = new SettingsDialog (this);
/**
* A reference to the terms and courses dialog.
*/
public TermsAndCoursesDialog termsAndCoursesDialog = new TermsAndCoursesDialog (this);
/**
* A reference to the grades dialog.
*/
public GradesDialog gradesDialog = new GradesDialog (this);
////////////////////////////////////////////////////////////////////////////
// Object Construction
////////////////////////////////////////////////////////////////////////////
/**
* Creates new form MainFrame for a stand-alone application.
*
* @param mainFrame A reference to the main frame.
* @param utility A reference to the utility.
*/
public ViewPanel(MainFrame mainFrame, LocalUtility utility)
{
this.mainFrame = mainFrame;
domain.setUtility (utility);
init ();
}
////////////////////////////////////////////////////////////////////////////
// Initialization
////////////////////////////////////////////////////////////////////////////
/**
* Calls initialization functions for both the applet and frame-based
* applications.
*/
private void init()
{
setCursor (Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR));
domain.utility.constructLocalUtility (this);
domain.utility.setDomain (domain);
domain.utility.loadPreferences ();
domain.utility.loadUserDetails ();
loadLanguageResource (domain.utility.preferences.language);
YES_OPTION_BUTTON.setText (domain.language.getString ("yes"));
NO_OPTION_BUTTON.setText (domain.language.getString ("no"));
OK_OPTION_BUTTON.setText (domain.language.getString ("ok"));
I_UNDERSTAND_OPTION_BUTTON.setText (domain.language.getString ("iUnderstand"));
CANCEL_OPTION_BUTTON.setText (domain.language.getString ("cancel"));
ONLY_THIS_INSTANCE_BUTTON.setText (domain.language.getString ("onlyThisInstance"));
ALL_IN_SERIES_BUTTON.setText (domain.language.getString ("allInSeries"));
ALL_FOLLOWING_BUTTON.setText (domain.language.getString ("allFollowing"));
REPLACE_OPTION_BUTTON.setText (domain.language.getString ("replace"));
initComponents ();
middleTabbedPane.remove (weekViewPanel);
miniCalendar.getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
miniCalendar.getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
dueDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
dueDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
dueDateChooser.getJCalendar ().setWeekOfYearVisible (false);
eventDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
eventDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
eventDateChooser.getJCalendar ().setWeekOfYearVisible (false);
repeatEventEndDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
repeatEventEndDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
repeatEventEndDateChooser.getJCalendar ().setWeekOfYearVisible (false);
termsAndCoursesDialog.termStartDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
termsAndCoursesDialog.termStartDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
termsAndCoursesDialog.termStartDateChooser.getJCalendar ().setWeekOfYearVisible (false);
termsAndCoursesDialog.termEndDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
termsAndCoursesDialog.termEndDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
termsAndCoursesDialog.termEndDateChooser.getJCalendar ().setWeekOfYearVisible (false);
termsAndCoursesDialog.courseStartDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
termsAndCoursesDialog.courseStartDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
termsAndCoursesDialog.courseStartDateChooser.getJCalendar ().setWeekOfYearVisible (false);
termsAndCoursesDialog.courseEndDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
termsAndCoursesDialog.courseEndDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
termsAndCoursesDialog.courseEndDateChooser.getJCalendar ().setWeekOfYearVisible (false);
termsAndCoursesDialog.labStartDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
termsAndCoursesDialog.labStartDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
termsAndCoursesDialog.labStartDateChooser.getJCalendar ().setWeekOfYearVisible (false);
termsAndCoursesDialog.labEndDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
termsAndCoursesDialog.labEndDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
termsAndCoursesDialog.labEndDateChooser.getJCalendar ().setWeekOfYearVisible (false);
settingsDialog.languageComboBox.setSelectedItem (domain.utility.preferences.language);
// initialize the assignments and events details area
blankContentPanel.setVisible (true);
userDetailsContentPanel.setVisible (false);
noUserDetailsPanel.setVisible (false);
termContentPanel.setVisible (false);
courseContentPanel.setVisible (false);
assignmentContentPanel.setVisible (false);
eventContentPanel.setVisible (false);
((TitledBorder) rightPanel.getBorder ()).setTitle (domain.language.getString ("details"));
addButton = new ToolbarButton (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "add_button.png")));
cloneButton = new ToolbarButton (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "clone_button.png")));
removeButton = new ToolbarButton (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "remove_button.png")));
askInstructorButton = new ToolbarButton (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "ask_button.png")));
termsAndCoursesButton = new ToolbarButton (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "terms_courses_button.png")));
viewGradesButton = new ToolbarButton (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "grades_button.png")));
settingsButton = new ToolbarButton (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "settings_button.png")));
aboutDialog.init ();
gettingStartedDialog.init ();
heliumDialog.init ();
gradesDialog.init ();
printDialog.init ();
importFromBackupDialog.init ();
settingsDialog.init ();
termsAndCoursesDialog.init ();
addButton.setEnabled (false);
cloneButton.setEnabled (false);
removeButton.setEnabled (false);
askInstructorButton.setEnabled (false);
viewGradesButton.setEnabled (false);
settingsButton.setEnabled (false);
termsAndCoursesButton.setEnabled (false);
toolBar.add (addButton);
toolBar.addSeparator ();
toolBar.add (cloneButton);
toolBar.addSeparator ();
toolBar.add (removeButton);
toolBar.addSeparator (new Dimension (50, 10));
toolBar.add (askInstructorButton);
toolBar.addSeparator (new Dimension (50, 10));
toolBar.add (viewGradesButton);
toolBar.addSeparator (new Dimension (50, 10));
toolBar.add (termsAndCoursesButton);
toolBar.addSeparator ();
toolBar.add (settingsButton);
UIManager.put ("OptionPane.font", domain.utility.currentTheme.fontPlain12);
UIManager.put ("OptionPane.messageFont", domain.utility.currentTheme.fontPlain12);
UIManager.put ("OptionPane.buttonFont", domain.utility.currentTheme.fontPlain12);
setFontForComponents (fileChooser.getComponents ());
for (int i = 0; i < domain.utility.themes.size (); ++i)
{
domain.utility.themes.get (i).setViewPanel (this);
}
domain.utility.currentTheme.apply ();
domain.logFile = new File (domain.utility.getDataFolder (), "log.dat");
dayScroll1.getViewport ().setOpaque (false);
dayScroll2.getViewport ().setOpaque (false);
dayScroll3.getViewport ().setOpaque (false);
dayScroll4.getViewport ().setOpaque (false);
dayScroll5.getViewport ().setOpaque (false);
dayScroll6.getViewport ().setOpaque (false);
dayScroll7.getViewport ().setOpaque (false);
dayScroll8.getViewport ().setOpaque (false);
dayScroll9.getViewport ().setOpaque (false);
dayScroll10.getViewport ().setOpaque (false);
dayScroll11.getViewport ().setOpaque (false);
dayScroll12.getViewport ().setOpaque (false);
dayScroll13.getViewport ().setOpaque (false);
dayScroll14.getViewport ().setOpaque (false);
dayScroll15.getViewport ().setOpaque (false);
dayScroll16.getViewport ().setOpaque (false);
dayScroll17.getViewport ().setOpaque (false);
dayScroll18.getViewport ().setOpaque (false);
dayScroll19.getViewport ().setOpaque (false);
dayScroll20.getViewport ().setOpaque (false);
dayScroll21.getViewport ().setOpaque (false);
dayScroll22.getViewport ().setOpaque (false);
dayScroll23.getViewport ().setOpaque (false);
dayScroll24.getViewport ().setOpaque (false);
dayScroll25.getViewport ().setOpaque (false);
dayScroll26.getViewport ().setOpaque (false);
dayScroll27.getViewport ().setOpaque (false);
dayScroll28.getViewport ().setOpaque (false);
dayScroll29.getViewport ().setOpaque (false);
dayScroll30.getViewport ().setOpaque (false);
dayScroll31.getViewport ().setOpaque (false);
dayScroll32.getViewport ().setOpaque (false);
dayScroll33.getViewport ().setOpaque (false);
dayScroll34.getViewport ().setOpaque (false);
dayScroll35.getViewport ().setOpaque (false);
termsAndCoursesDialog.courseScrollPane.getViewport ().setOpaque (false);
termsAndCoursesDialog.textbooksScrollPane.getViewport ().setOpaque (false);
settingsDialog.themeScrollPane.getViewport ().setOpaque (false);
gradesDialog.courseSummaryScrollPane.getViewport ().setOpaque (false);
gradesDialog.courseGradesScrollPane.getViewport ().setOpaque (false);
extraDay1.setOpaque (false);
extraDayScroll1.setOpaque (false);
extraDayScroll1.getViewport ().setOpaque (false);
extraDayLabel1.setOpaque (false);
extraDay2.setOpaque (false);
extraDayScroll2.setOpaque (false);
extraDayScroll2.getViewport ().setOpaque (false);
extraDayLabel2.setOpaque (false);
extraDay3.setOpaque (false);
extraDayScroll3.setOpaque (false);
extraDayScroll3.getViewport ().setOpaque (false);
extraDayLabel3.setOpaque (false);
extraDay4.setOpaque (false);
extraDayScroll4.setOpaque (false);
extraDayScroll4.getViewport ().setOpaque (false);
extraDayLabel4.setOpaque (false);
extraDay5.setOpaque (false);
extraDayScroll5.setOpaque (false);
extraDayScroll5.getViewport ().setOpaque (false);
extraDayLabel5.setOpaque (false);
extraDay6.setOpaque (false);
extraDayScroll6.setOpaque (false);
extraDayScroll6.getViewport ().setOpaque (false);
extraDayLabel6.setOpaque (false);
extraDay7.setOpaque (false);
extraDayScroll7.setOpaque (false);
extraDayScroll7.getViewport ().setOpaque (false);
extraDayLabel7.setOpaque (false);
gradesDialog.courseGradesScrollPane.getViewport ().setOpaque (false);
gradesDialog.courseSummaryScrollPane.getViewport ().setOpaque (false);
settingsDialog.preferencesScrollPane.getViewport ().setOpaque (false);
termScrollPane.getViewport ().setOpaque (false);
termsAndCoursesDialog.courseScrollPane.getViewport ().setOpaque (false);
termsAndCoursesDialog.textbooksScrollPane.getViewport ().setOpaque (false);
addButton.setToolTipText (domain.language.getString ("addButtonToolTip"));
addButton.setFont (domain.utility.currentTheme.fontPlain11);
addButton.setText (domain.language.getString ("add"));
addButton.setIconTextGap (-3);
addButton.setHorizontalTextPosition (JLabel.CENTER);
addButton.setVerticalTextPosition (JLabel.BOTTOM);
addButton.addMouseListener (new MouseAdapter ()
{
@Override
public void mousePressed(MouseEvent evt)
{
if (addButton.isEnabled () && !initLoading)
{
addButton.setSelected (true);
}
}
@Override
public void mouseReleased(MouseEvent evt)
{
if (addButton.isEnabled () && !initLoading)
{
addButton.setSelected (true);
addPopupMenu.show (addButton, 0, addButton.getHeight ());
}
}
@Override
public void mouseEntered(MouseEvent evt)
{
if (addButton.isEnabled () && !addButton.isSelected () && !initLoading)
{
addButton.setHover (true);
}
}
@Override
public void mouseExited(MouseEvent evt)
{
if (!addPopupMenu.isShowing ())
{
addButton.setHover (false);
}
}
});
cloneButton.setToolTipText (domain.language.getString ("cloneButtonToolTip"));
cloneButton.setFont (domain.utility.currentTheme.fontPlain11);
cloneButton.setText (domain.language.getString ("clone"));
cloneButton.setIconTextGap (-3);
cloneButton.setHorizontalTextPosition (JLabel.CENTER);
cloneButton.setVerticalTextPosition (JLabel.BOTTOM);
cloneButton.addMouseListener (new MouseAdapter ()
{
@Override
public void mousePressed(MouseEvent evt)
{
if (cloneButton.isEnabled () && !initLoading)
{
cloneButton.setDepressed (true);
}
}
@Override
public void mouseReleased(MouseEvent evt)
{
cloneButton.setDepressed (false);
if (cloneButton.isEnabled () && !initLoading)
{
if (domain.utility.assignmentsAndEvents.get (assignmentsTable.getVectorIndexFromSelectedRow ()).isAssignment ())
{
goCloneAssignment ();
}
else
{
goCloneEvent ();
}
}
}
@Override
public void mouseEntered(MouseEvent evt)
{
if (cloneButton.isEnabled ())
{
cloneButton.setHover (true);
}
}
@Override
public void mouseExited(MouseEvent evt)
{
cloneButton.setHover (false);
}
});
removeButton.setToolTipText (domain.language.getString ("removeButtonToolTip"));
removeButton.setFont (domain.utility.currentTheme.fontPlain11);
removeButton.setText (domain.language.getString ("remove"));
removeButton.setIconTextGap (-3);
removeButton.setHorizontalTextPosition (JLabel.CENTER);
removeButton.setVerticalTextPosition (JLabel.BOTTOM);
removeButton.addMouseListener (new MouseAdapter ()
{
@Override
public void mousePressed(MouseEvent evt)
{
if (removeButton.isEnabled () && !initLoading)
{
removeButton.setDepressed (true);
}
}
@Override
public void mouseReleased(MouseEvent evt)
{
removeButton.setDepressed (false);
if (removeButton.isEnabled () && !initLoading)
{
ListItem item = domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
if (item.isAssignment ())
{
goRemoveAssignment ();
}
else
{
goRemoveEvent (null);
}
}
}
@Override
public void mouseEntered(MouseEvent evt)
{
if (removeButton.isEnabled () && !initLoading)
{
removeButton.setHover (true);
}
}
@Override
public void mouseExited(MouseEvent evt)
{
removeButton.setHover (false);
}
});
askInstructorButton.setToolTipText (domain.language.getString ("askInstructorButtonToolTip"));
askInstructorButton.setFont (domain.utility.currentTheme.fontPlain11);
askInstructorButton.setText (domain.language.getString ("ask"));
askInstructorButton.setIconTextGap (-3);
askInstructorButton.setHorizontalTextPosition (JLabel.CENTER);
askInstructorButton.setVerticalTextPosition (JLabel.BOTTOM);
askInstructorButton.addMouseListener (new MouseAdapter ()
{
@Override
public void mousePressed(MouseEvent evt)
{
if (askInstructorButton.isEnabled () && !initLoading)
{
askInstructorButton.setDepressed (true);
}
}
@Override
public void mouseReleased(MouseEvent evt)
{
askInstructorButton.setDepressed (false);
if (askInstructorButton.isEnabled () && !initLoading)
{
goAskInstructor ();
}
}
@Override
public void mouseEntered(MouseEvent evt)
{
if (askInstructorButton.isEnabled () && !initLoading)
{
askInstructorButton.setHover (true);
}
}
@Override
public void mouseExited(MouseEvent evt)
{
askInstructorButton.setHover (false);
}
});
viewGradesButton.setToolTipText (domain.language.getString ("viewGradesButtonToolTip"));
viewGradesButton.setFont (domain.utility.currentTheme.fontPlain11);
viewGradesButton.setText (domain.language.getString ("grades"));
viewGradesButton.setIconTextGap (-3);
viewGradesButton.setHorizontalTextPosition (JLabel.CENTER);
viewGradesButton.setVerticalTextPosition (JLabel.BOTTOM);
viewGradesButton.addMouseListener (new MouseAdapter ()
{
@Override
public void mousePressed(MouseEvent evt)
{
if (viewGradesButton.isEnabled () && !initLoading)
{
viewGradesButton.setDepressed (true);
}
}
@Override
public void mouseReleased(MouseEvent evt)
{
viewGradesButton.setDepressed (false);
if (viewGradesButton.isEnabled () && !initLoading)
{
launchingGrades = true;
gradesDialog.goViewGrades ();
}
}
@Override
public void mouseEntered(MouseEvent evt)
{
if (viewGradesButton.isEnabled () && !initLoading)
{
viewGradesButton.setHover (true);
}
}
@Override
public void mouseExited(MouseEvent evt)
{
viewGradesButton.setHover (false);
}
});
settingsButton.setToolTipText (domain.language.getString ("settingsButtonToolTip"));
settingsButton.setFont (domain.utility.currentTheme.fontPlain11);
settingsButton.setText (domain.language.getString ("settings"));
settingsButton.setIconTextGap (-3);
settingsButton.setHorizontalTextPosition (JLabel.CENTER);
settingsButton.setVerticalTextPosition (JLabel.BOTTOM);
settingsButton.addMouseListener (new MouseAdapter ()
{
@Override
public void mousePressed(MouseEvent evt)
{
if (settingsButton.isEnabled () && !initLoading)
{
settingsButton.setDepressed (true);
}
}
@Override
public void mouseReleased(MouseEvent evt)
{
settingsButton.setDepressed (false);
if (settingsButton.isEnabled () && !initLoading)
{
settingsDialog.goViewSettings ();
}
}
@Override
public void mouseEntered(MouseEvent evt)
{
if (settingsButton.isEnabled () && !initLoading)
{
settingsButton.setHover (true);
}
}
@Override
public void mouseExited(MouseEvent evt)
{
settingsButton.setHover (false);
}
});
termsAndCoursesButton.setToolTipText (domain.language.getString ("termsAndCoursesButtonToolTip"));
termsAndCoursesButton.setFont (domain.utility.currentTheme.fontPlain11);
termsAndCoursesButton.setText (domain.language.getString ("courses"));
termsAndCoursesButton.setIconTextGap (-3);
termsAndCoursesButton.setHorizontalTextPosition (JLabel.CENTER);
termsAndCoursesButton.setVerticalTextPosition (JLabel.BOTTOM);
termsAndCoursesButton.addMouseListener (new MouseAdapter ()
{
@Override
public void mousePressed(MouseEvent evt)
{
if (termsAndCoursesButton.isEnabled () && !initLoading)
{
termsAndCoursesButton.setDepressed (true);
}
}
@Override
public void mouseReleased(MouseEvent evt)
{
termsAndCoursesButton.setDepressed (false);
if (termsAndCoursesButton.isEnabled () && !initLoading)
{
termsAndCoursesDialog.goViewTermsAndCourses ();
}
}
@Override
public void mouseEntered(MouseEvent evt)
{
if (termsAndCoursesButton.isEnabled () && !initLoading)
{
termsAndCoursesButton.setHover (true);
}
}
@Override
public void mouseExited(MouseEvent evt)
{
termsAndCoursesButton.setHover (false);
}
});
miniCalendar.setDate (domain.today);
}
/**
* Custom initialization of specific components is done here.
*/
private void initMyComponents()
{
try
{
if (Domain.OS_NAME.toLowerCase ().contains ("mac"))
{
Application macApp = Application.getApplication ();
macApp.setPreferencesHandler (new PreferencesHandler ()
{
@Override
public void handlePreferences(PreferencesEvent evt)
{
settingsDialog.goViewSettings ();
}
});
macApp.setQuitHandler (new QuitHandler ()
{
@Override
public void handleQuitRequestWith(QuitEvent evt, QuitResponse rsp)
{
quit (true);
}
});
macApp.setAboutHandler (new AboutHandler ()
{
@Override
public void handleAbout(AboutEvent evt)
{
aboutDialog.goViewAbout ();
}
});
}
try
{
lastGoodFile = new File (Domain.HOME, "Get Organized " + domain.language.getString ("backup") + ".gbak").getCanonicalPath ();
}
catch (IOException ex)
{
}
try
{
domain.today = Domain.DATE_FORMAT.parse (Domain.DATE_FORMAT.format (new Date ()));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
gradesDialog.graphPanel.setUtility (domain.utility);
printDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "printer.png")).getImage ());
gradesDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "grades_button.png")).getImage ());
settingsDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "settings_button.png")).getImage ());
termsAndCoursesDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "terms_courses_button.png")).getImage ());
gettingStartedDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "go.png")).getImage ());
heliumDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "helium.png")).getImage ());
aboutDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "go.png")).getImage ());
updatesDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "go.png")).getImage ());
importFromBackupDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "go.png")).getImage ());
printDialog.setIconImage (new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "printer.png")).getImage ());
// remap shortcut keys to system defaults
Toolkit.getDefaultToolkit ().addAWTEventListener (new AWTEventListener ()
{
@Override
public void eventDispatched(AWTEvent event)
{
KeyEvent kev = (KeyEvent) event;
if (kev.getID () == KeyEvent.KEY_PRESSED || kev.getID () == KeyEvent.KEY_RELEASED || kev.getID () == KeyEvent.KEY_PRESSED)
{
if ((kev.getModifiersEx () & KeyEvent.META_DOWN_MASK) != 0 && !((kev.getModifiersEx () & KeyEvent.CTRL_DOWN_MASK) != 0))
{
kev.consume ();
KeyEvent fake = new KeyEvent (kev.getComponent (), kev.getID (), kev.getWhen (), (kev.getModifiersEx () & ~KeyEvent.META_DOWN_MASK) | KeyEvent.CTRL_DOWN_MASK, kev.getKeyCode (), kev.getKeyChar ());
Toolkit.getDefaultToolkit ().getSystemEventQueue ().postEvent (fake);
}
}
}
}, KeyEvent.KEY_EVENT_MASK);
buildDropTargets ();
extraDayPanel1.setLayout (new BorderLayout ());
extraDayPanel2.setLayout (new BorderLayout ());
extraDayPanel3.setLayout (new BorderLayout ());
extraDayPanel4.setLayout (new BorderLayout ());
extraDayPanel5.setLayout (new BorderLayout ());
extraDayPanel6.setLayout (new BorderLayout ());
extraDayPanel7.setLayout (new BorderLayout ());
// set the main panel of all dialogs to allow escaping
((EscapeDialog) updatesDialog).setMainPanel (this);
((EscapeDialog) repeatEventDialog).setMainPanel (this);
rightPanel.invalidate ();
gradeLabel.setVisible (false);
gradeTextField.setVisible (false);
// initialize the assignemnts table
adjustAssignmentTableColumnWidths ();
assignmentsTable.getSelectionModel ().addListSelectionListener (new ListSelectionListener ()
{
@Override
public void valueChanged(ListSelectionEvent evt)
{
assignmentsTableRowSelected (evt);
}
});
assignmentsTable.getTableHeader ().setFont (domain.utility.currentTheme.fontPlain12);
assignmentsTable.getTableHeader ().addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
assignmentsTableHeaderSelected (evt, -1);
}
});
termsAndCoursesDialog.settingsTypesTable.getColumnModel ().getColumn (1).setMinWidth (70);
termsAndCoursesDialog.settingsTypesTable.getColumnModel ().getColumn (1).setMaxWidth (70);
termsAndCoursesDialog.settingsTypesTable.getTableHeader ().setFont (domain.utility.currentTheme.fontPlain12);
termsAndCoursesDialog.settingsInstructorsTable.getColumnModel ().getColumn (1).setMinWidth (120);
termsAndCoursesDialog.settingsInstructorsTable.getColumnModel ().getColumn (1).setMaxWidth (120);
termsAndCoursesDialog.settingsInstructorsTable.getTableHeader ().setFont (domain.utility.currentTheme.fontPlain12);
// initialize the term tree
termTree.getSelectionModel ().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION);
termTree.getSelectionModel ().addTreeSelectionListener (new TreeSelectionListener ()
{
@Override
public void valueChanged(TreeSelectionEvent evt)
{
if (!ignoreTreeSelection)
{
termTreeNodeSelected (evt);
}
}
});
termTree.addTreeExpansionListener (new TreeExpansionListener ()
{
@Override
public void treeExpanded(TreeExpansionEvent evt)
{
}
@Override
public void treeCollapsed(TreeExpansionEvent evt)
{
expandTermTree (evt);
}
});
extraDayScroll1.setBorder (null);
extraDayScroll1.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
extraDayScroll1.setHorizontalScrollBarPolicy (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
extraDayScroll1.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
scrollPaneMouseReleased (evt);
}
});
extraDayScroll2.setBorder (null);
extraDayScroll2.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
extraDayScroll2.setHorizontalScrollBarPolicy (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
extraDayScroll2.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
scrollPaneMouseReleased (evt);
}
});
extraDayScroll3.setBorder (null);
extraDayScroll3.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
extraDayScroll3.setHorizontalScrollBarPolicy (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
extraDayScroll3.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
scrollPaneMouseReleased (evt);
}
});
extraDayScroll4.setBorder (null);
extraDayScroll4.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
extraDayScroll4.setHorizontalScrollBarPolicy (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
extraDayScroll4.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
scrollPaneMouseReleased (evt);
}
});
extraDayScroll5.setBorder (null);
extraDayScroll5.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
extraDayScroll5.setHorizontalScrollBarPolicy (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
extraDayScroll5.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
scrollPaneMouseReleased (evt);
}
});
extraDayScroll6.setBorder (null);
extraDayScroll6.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
extraDayScroll6.setHorizontalScrollBarPolicy (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
extraDayScroll6.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
scrollPaneMouseReleased (evt);
}
});
extraDayScroll7.setBorder (null);
extraDayScroll7.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
extraDayScroll7.setHorizontalScrollBarPolicy (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
extraDayScroll7.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
scrollPaneMouseReleased (evt);
}
});
extraDayPanel1.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDay1.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDayPanel2.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDay2.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDayPanel3.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDay3.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDayPanel4.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDay4.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDayPanel5.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDay5.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDayPanel6.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDay6.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDayPanel7.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDay7.setBackground (domain.utility.currentTheme.colorDayInMonthBackground1);
extraDayLabel1.setVerticalAlignment (SwingConstants.TOP);
extraDayLabel1.setFont (domain.utility.currentTheme.fontPlain12);
extraDayLabel1.setForeground (domain.utility.currentTheme.colorDayInMonthText);
extraDayLabel2.setVerticalAlignment (SwingConstants.TOP);
extraDayLabel2.setFont (domain.utility.currentTheme.fontPlain12);
extraDayLabel2.setForeground (domain.utility.currentTheme.colorDayInMonthText);
extraDayLabel3.setVerticalAlignment (SwingConstants.TOP);
extraDayLabel3.setFont (domain.utility.currentTheme.fontPlain12);
extraDayLabel3.setForeground (domain.utility.currentTheme.colorDayInMonthText);
extraDayLabel4.setVerticalAlignment (SwingConstants.TOP);
extraDayLabel4.setFont (domain.utility.currentTheme.fontPlain12);
extraDayLabel4.setForeground (domain.utility.currentTheme.colorDayInMonthText);
extraDayLabel5.setVerticalAlignment (SwingConstants.TOP);
extraDayLabel5.setFont (domain.utility.currentTheme.fontPlain12);
extraDayLabel5.setForeground (domain.utility.currentTheme.colorDayInMonthText);
extraDayLabel6.setVerticalAlignment (SwingConstants.TOP);
extraDayLabel6.setFont (domain.utility.currentTheme.fontPlain12);
extraDayLabel6.setForeground (domain.utility.currentTheme.colorDayInMonthText);
extraDayLabel7.setVerticalAlignment (SwingConstants.TOP);
extraDayLabel7.setFont (domain.utility.currentTheme.fontPlain12);
extraDayLabel7.setForeground (domain.utility.currentTheme.colorDayInMonthText);
extraDayPanel1.add (extraDayLabel1, BorderLayout.NORTH);
extraDay1.setLayout (new BoxLayout (extraDay1, BoxLayout.PAGE_AXIS));
extraDayPanel1.add (extraDayScroll1, BorderLayout.CENTER);
extraDayPanel2.add (extraDayLabel2, BorderLayout.NORTH);
extraDay2.setLayout (new BoxLayout (extraDay2, BoxLayout.PAGE_AXIS));
extraDayPanel2.add (extraDayScroll2, BorderLayout.CENTER);
extraDayPanel3.add (extraDayLabel3, BorderLayout.NORTH);
extraDay3.setLayout (new BoxLayout (extraDay3, BoxLayout.PAGE_AXIS));
extraDayPanel3.add (extraDayScroll3, BorderLayout.CENTER);
extraDayPanel4.add (extraDayLabel4, BorderLayout.NORTH);
extraDay4.setLayout (new BoxLayout (extraDay4, BoxLayout.PAGE_AXIS));
extraDayPanel4.add (extraDayScroll4, BorderLayout.CENTER);
extraDayPanel5.add (extraDayLabel5, BorderLayout.NORTH);
extraDay5.setLayout (new BoxLayout (extraDay5, BoxLayout.PAGE_AXIS));
extraDayPanel5.add (extraDayScroll5, BorderLayout.CENTER);
extraDayPanel6.add (extraDayLabel6, BorderLayout.NORTH);
extraDay6.setLayout (new BoxLayout (extraDay6, BoxLayout.PAGE_AXIS));
extraDayPanel6.add (extraDayScroll6, BorderLayout.CENTER);
extraDayPanel7.add (extraDayLabel7, BorderLayout.NORTH);
extraDay7.setLayout (new BoxLayout (extraDay7, BoxLayout.PAGE_AXIS));
extraDayPanel7.add (extraDayScroll7, BorderLayout.CENTER);
// give the extended table and the table's model references to the domain.utility
assignmentsTable.setUtility (domain.utility);
assignmentsTableModel.setUtility (domain.utility);
settingsDialog.settingsCategoriesTable.setUtility (domain.utility);
termsAndCoursesDialog.settingsCoursesTable.setUtility (domain.utility);
termsAndCoursesDialog.settingsTermsTable.setUtility (domain.utility);
termsAndCoursesDialog.settingsTypesTable.setUtility (domain.utility);
termsAndCoursesDialog.settingsInstructorsTable.setUtility (domain.utility);
termsAndCoursesDialog.settingsTextbooksTable.setUtility (domain.utility);
YES_OPTION_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
YES_OPTION_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
YES_OPTION_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (JOptionPane.YES_OPTION));
}
});
NO_OPTION_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
NO_OPTION_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
NO_OPTION_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (JOptionPane.NO_OPTION));
}
});
REPLACE_OPTION_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
REPLACE_OPTION_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
REPLACE_OPTION_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (JOptionPane.YES_OPTION));
}
});
I_UNDERSTAND_OPTION_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
I_UNDERSTAND_OPTION_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
I_UNDERSTAND_OPTION_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (JOptionPane.OK_OPTION));
}
});
OK_OPTION_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
OK_OPTION_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
OK_OPTION_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (JOptionPane.OK_OPTION));
}
});
CANCEL_OPTION_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
CANCEL_OPTION_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
CANCEL_OPTION_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (JOptionPane.CANCEL_OPTION));
}
});
ALL_FOLLOWING_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
ALL_FOLLOWING_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
ALL_FOLLOWING_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (ALL_FOLLOWING_OPTION));
}
});
ALL_IN_SERIES_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
ALL_IN_SERIES_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
ALL_IN_SERIES_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (ALL_IN_SERIES_OPTION));
}
});
ONLY_THIS_INSTANCE_BUTTON.setBackground (domain.utility.currentTheme.colorButtonBackground);
ONLY_THIS_INSTANCE_BUTTON.setFont (domain.utility.currentTheme.fontPlain12);
ONLY_THIS_INSTANCE_BUTTON.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent e)
{
OPTION_PANE.setValue (new Integer (ONLY_THIS_INSTANCE_OPTION));
}
});
// set the look and feel of the JFileChooser
JPanel access = (JPanel) ((JPanel) fileChooser.getComponent (0)).getComponent (0);
((JButton) access.getComponent (0)).setBackground (domain.utility.currentTheme.colorButtonBackground);
((JButton) access.getComponent (2)).setBackground (domain.utility.currentTheme.colorButtonBackground);
((JButton) access.getComponent (4)).setBackground (domain.utility.currentTheme.colorButtonBackground);
((JToggleButton) access.getComponent (6)).setBackground (domain.utility.currentTheme.colorButtonBackground);
((JToggleButton) access.getComponent (7)).setBackground (domain.utility.currentTheme.colorButtonBackground);
access = (JPanel) ((JPanel) fileChooser.getComponent (3)).getComponent (3);
((JButton) access.getComponent (0)).setBackground (domain.utility.currentTheme.colorButtonBackground);
((JButton) access.getComponent (0)).setFont (domain.utility.currentTheme.fontPlain12);
((JButton) access.getComponent (1)).setBackground (domain.utility.currentTheme.colorButtonBackground);
((JButton) access.getComponent (1)).setFont (domain.utility.currentTheme.fontPlain12);
((JButton) access.getComponent (1)).setToolTipText (domain.language.getString ("cancelBackupToolTip"));
((JTextFieldDateEditor) dueDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("dueDateChooserToolTip"));
((JTextFieldDateEditor) eventDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("eventDateChooserToolTip"));
((JTextFieldDateEditor) repeatEventEndDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("repeatEventEndDateChooserToolTip"));
((JTextFieldDateEditor) termsAndCoursesDialog.termStartDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("termStartDateChooserToolTip"));
((JTextFieldDateEditor) termsAndCoursesDialog.termEndDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("termEndDateChooserToolTip"));
((JTextFieldDateEditor) termsAndCoursesDialog.courseStartDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("courseStartDateChooserToolTip"));
((JTextFieldDateEditor) termsAndCoursesDialog.courseEndDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("courseEndDateChooserToolTip"));
((JTextFieldDateEditor) termsAndCoursesDialog.labStartDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("labStartDateChooserToolTip"));
((JTextFieldDateEditor) termsAndCoursesDialog.labEndDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("labEndDateChooserToolTip"));
if (!domain.utility.preferences.dontShowGettingStarted)
{
gettingStartedDialog.showGettingStartedDialog ();
}
if (!domain.utility.preferences.dontShowHelium)
{
heliumDialog.goViewHelium ();
}
}
catch (Exception ex)
{
Domain.LOGGER.add (ex);
}
}
/**
* Build drop targets for all panels.
*/
protected void buildDropTargets()
{
week1Day1.setDropTarget (new DropTarget (week1Day1, DnDConstants.ACTION_MOVE, DND_LISTENER));
week1Day2.setDropTarget (new DropTarget (week1Day2, DnDConstants.ACTION_MOVE, DND_LISTENER));
week1Day3.setDropTarget (new DropTarget (week1Day3, DnDConstants.ACTION_MOVE, DND_LISTENER));
week1Day4.setDropTarget (new DropTarget (week1Day4, DnDConstants.ACTION_MOVE, DND_LISTENER));
week1Day5.setDropTarget (new DropTarget (week1Day5, DnDConstants.ACTION_MOVE, DND_LISTENER));
week1Day6.setDropTarget (new DropTarget (week1Day6, DnDConstants.ACTION_MOVE, DND_LISTENER));
week2Day7.setDropTarget (new DropTarget (week1Day7, DnDConstants.ACTION_MOVE, DND_LISTENER));
week2Day1.setDropTarget (new DropTarget (week2Day1, DnDConstants.ACTION_MOVE, DND_LISTENER));
week2Day2.setDropTarget (new DropTarget (week2Day2, DnDConstants.ACTION_MOVE, DND_LISTENER));
week2Day3.setDropTarget (new DropTarget (week2Day3, DnDConstants.ACTION_MOVE, DND_LISTENER));
week2Day4.setDropTarget (new DropTarget (week2Day4, DnDConstants.ACTION_MOVE, DND_LISTENER));
week2Day5.setDropTarget (new DropTarget (week2Day5, DnDConstants.ACTION_MOVE, DND_LISTENER));
week2Day6.setDropTarget (new DropTarget (week2Day6, DnDConstants.ACTION_MOVE, DND_LISTENER));
week2Day7.setDropTarget (new DropTarget (week2Day7, DnDConstants.ACTION_MOVE, DND_LISTENER));
week3Day1.setDropTarget (new DropTarget (week3Day1, DnDConstants.ACTION_MOVE, DND_LISTENER));
week3Day2.setDropTarget (new DropTarget (week3Day2, DnDConstants.ACTION_MOVE, DND_LISTENER));
week3Day3.setDropTarget (new DropTarget (week3Day3, DnDConstants.ACTION_MOVE, DND_LISTENER));
week3Day4.setDropTarget (new DropTarget (week3Day4, DnDConstants.ACTION_MOVE, DND_LISTENER));
week3Day5.setDropTarget (new DropTarget (week3Day5, DnDConstants.ACTION_MOVE, DND_LISTENER));
week3Day6.setDropTarget (new DropTarget (week3Day6, DnDConstants.ACTION_MOVE, DND_LISTENER));
week3Day7.setDropTarget (new DropTarget (week3Day7, DnDConstants.ACTION_MOVE, DND_LISTENER));
week4Day1.setDropTarget (new DropTarget (week4Day1, DnDConstants.ACTION_MOVE, DND_LISTENER));
week4Day2.setDropTarget (new DropTarget (week4Day2, DnDConstants.ACTION_MOVE, DND_LISTENER));
week4Day3.setDropTarget (new DropTarget (week4Day3, DnDConstants.ACTION_MOVE, DND_LISTENER));
week4Day4.setDropTarget (new DropTarget (week4Day4, DnDConstants.ACTION_MOVE, DND_LISTENER));
week4Day5.setDropTarget (new DropTarget (week4Day5, DnDConstants.ACTION_MOVE, DND_LISTENER));
week4Day6.setDropTarget (new DropTarget (week4Day6, DnDConstants.ACTION_MOVE, DND_LISTENER));
week4Day7.setDropTarget (new DropTarget (week4Day7, DnDConstants.ACTION_MOVE, DND_LISTENER));
week5Day1.setDropTarget (new DropTarget (week5Day1, DnDConstants.ACTION_MOVE, DND_LISTENER));
week5Day2.setDropTarget (new DropTarget (week5Day2, DnDConstants.ACTION_MOVE, DND_LISTENER));
week5Day3.setDropTarget (new DropTarget (week5Day3, DnDConstants.ACTION_MOVE, DND_LISTENER));
week5Day4.setDropTarget (new DropTarget (week5Day4, DnDConstants.ACTION_MOVE, DND_LISTENER));
week5Day5.setDropTarget (new DropTarget (week5Day5, DnDConstants.ACTION_MOVE, DND_LISTENER));
week5Day6.setDropTarget (new DropTarget (week5Day6, DnDConstants.ACTION_MOVE, DND_LISTENER));
week5Day7.setDropTarget (new DropTarget (week5Day7, DnDConstants.ACTION_MOVE, DND_LISTENER));
extraDayPanel1.setDropTarget (new DropTarget (extraDayPanel1, DnDConstants.ACTION_MOVE, DND_LISTENER));
extraDayPanel2.setDropTarget (new DropTarget (extraDayPanel2, DnDConstants.ACTION_MOVE, DND_LISTENER));
extraDayPanel3.setDropTarget (new DropTarget (extraDayPanel3, DnDConstants.ACTION_MOVE, DND_LISTENER));
extraDayPanel4.setDropTarget (new DropTarget (extraDayPanel4, DnDConstants.ACTION_MOVE, DND_LISTENER));
extraDayPanel5.setDropTarget (new DropTarget (extraDayPanel5, DnDConstants.ACTION_MOVE, DND_LISTENER));
extraDayPanel6.setDropTarget (new DropTarget (extraDayPanel6, DnDConstants.ACTION_MOVE, DND_LISTENER));
extraDayPanel7.setDropTarget (new DropTarget (extraDayPanel7, DnDConstants.ACTION_MOVE, DND_LISTENER));
}
/**
* Triggered when a new table header is selected to sort the assignments and
* events list by.
*
* @param evt The mouse click event, if it exists.
*/
public void assignmentsTableHeaderSelected(MouseEvent evt, int colIndex)
{
// get the selected column, and filter (sort) by thatthat column
assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).setHeaderValue (assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).getHeaderValue ().toString ().replaceAll ("\\<html\\>|\\<b\\>|\\</html\\>|\\</b\\>", ""));
if (evt != null)
{
assignmentsTableModel.setColumnSorting (assignmentsTable.getTableHeader ().columnAtPoint (evt.getPoint ()));
}
else
{
assignmentsTableModel.setColumnSorting (colIndex);
}
assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).setHeaderValue ("<html><b>" + assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).getHeaderValue () + "</b></html>");
assignmentsTable.getTableHeader ().resizeAndRepaint ();
filter (true);
// set the preferences sorting model to the selected column
domain.utility.preferences.sortIndex = assignmentsTableModel.getColumnSorting ();
domain.utility.preferences.sortAscending = assignmentsTableModel.isSortAscending ();
domain.needsPreferencesSave = true;
}
/**
* Initializes the states of the add buttons depending on whether terms
* and/or courses exist yet.
*/
protected void initButtons()
{
if (domain.utility.terms.size () > 0)
{
enableCourseButtons ();
}
if (domain.utility.courses.size () > 0)
{
enableAssignmentButtons ();
}
}
/**
* Iterates through any component in the given component and specifies the
* font and size that it should be, maintaining the style of the font.
*
* @param comp The list of components to iterate through (recursively).
*/
private void setFontForComponents(Component[] comp)
{
for (int i = 0; i < comp.length; ++i)
{
if (comp[i] instanceof Container)
{
setFontForComponents (((Container) comp[i]).getComponents ());
}
try
{
comp[i].setFont (new Font ("Verdana", comp[i].getFont ().getStyle (), 11));
}
catch (Exception ex)
{
// do nothing if a setFont function was not found
}
}
}
////////////////////////////////////////////////////////////////////////////
// Interface-Generated Implementation
////////////////////////////////////////////////////////////////////////////
/**
* 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() {
addPopupMenu = new javax.swing.JPopupMenu();
addTermMenuItem = new javax.swing.JMenuItem();
addCourseMenuItem = new javax.swing.JMenuItem();
addAssignmentMenuItem = new javax.swing.JMenuItem();
addPopupSeparator = new javax.swing.JPopupMenu.Separator();
addEventMenuItem = new javax.swing.JMenuItem();
updatesDialog = new adl.go.gui.EscapeDialog();
updatesJPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorSingleWindowBackground1);
updatesProgressBar = new javax.swing.JProgressBar();
updatesCloseButton = new javax.swing.JButton();
termEditMenu = new javax.swing.JPopupMenu();
addTermEditMenuItem = new javax.swing.JMenuItem();
editTermEditMenuItem = new javax.swing.JMenuItem();
removeTermEditMenuItem = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JPopupMenu.Separator();
addCourseEditMenuItem = new javax.swing.JMenuItem();
editCourseEditMenuItem = new javax.swing.JMenuItem();
removeCourseEditMenuItem = new javax.swing.JMenuItem();
jSeparator2 = new javax.swing.JPopupMenu.Separator();
courseWebsiteMenuItem = new javax.swing.JMenuItem();
labWebsiteMenuItem = new javax.swing.JMenuItem();
jSeparator7 = new javax.swing.JPopupMenu.Separator();
editInstructorsEditMenuItem = new javax.swing.JMenuItem();
editTypesEditMenuItem = new javax.swing.JMenuItem();
editTextbooksEditMenuItem = new javax.swing.JMenuItem();
jSeparator3 = new javax.swing.JPopupMenu.Separator();
addAssignmentTermEditMenuItem = new javax.swing.JMenuItem();
assignmentsEditMenu = new javax.swing.JPopupMenu();
addAssignmentEditMenuItem = new javax.swing.JMenuItem();
addEventEditMenuItem = new javax.swing.JMenuItem();
jSeparator5 = new javax.swing.JPopupMenu.Separator();
cloneEditMenuItem = new javax.swing.JMenuItem();
removeEditMenuItem = new javax.swing.JMenuItem();
filter1ButtonGroup = new javax.swing.ButtonGroup();
filter2ButtonGroup = new javax.swing.ButtonGroup();
repeatEventDialog = new adl.go.gui.EscapeDialog();
repeatDialogPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorSingleWindowBackground1);
repeatEventDoneButton = new javax.swing.JButton();
repeatsLabel = new javax.swing.JLabel();
repeatsEveryLabel = new javax.swing.JLabel();
repeatsOnLabel = new javax.swing.JLabel();
repeatsEndingLabel = new javax.swing.JLabel();
repeatEventRepeatsComboBox = new javax.swing.JComboBox();
repeatEventRepeatsEveryComboBox = new javax.swing.JComboBox();
repeatEventEndDateChooser = new com.toedter.calendar.JDateChooser();
reSunCheckBox = new javax.swing.JCheckBox();
reMonCheckBox = new javax.swing.JCheckBox();
reTueCheckBox = new javax.swing.JCheckBox();
reWedCheckBox = new javax.swing.JCheckBox();
reThuCheckBox = new javax.swing.JCheckBox();
reFriCheckBox = new javax.swing.JCheckBox();
reSatCheckBox = new javax.swing.JCheckBox();
everyDescriptionLabel = new javax.swing.JLabel();
fileChooser = new javax.swing.JFileChooser();
askPopupMenu = new javax.swing.JPopupMenu();
printingDialog = new adl.go.gui.EscapeDialog();
printingJPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorSingleWindowBackground1);
printingJLabel = new javax.swing.JLabel();
toolBar = new adl.go.gui.ColoredJToolBar(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorTopBackground1Panel);
leftPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorLeftBackground1Panel);
termScrollPane = new javax.swing.JScrollPane();
termTree = new javax.swing.JTree();
miniCalendar = new com.toedter.calendar.JCalendar();
middlePanel = new javax.swing.JPanel();
loadingPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorLoadingMiddleBackground1Panel);
loadingLabel = new javax.swing.JLabel();
contentPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorMiddleBackground1Panel);
upperPanelForFilters = new javax.swing.JPanel();
bothFilterRadioButton = new javax.swing.JRadioButton();
assignmentsFilterRadioButton = new javax.swing.JRadioButton();
eventsFilterRadioButton = new javax.swing.JRadioButton();
jSeparator6 = new javax.swing.JSeparator();
allFilterRadioButton = new javax.swing.JRadioButton();
overdueFilterRadioButton = new javax.swing.JRadioButton();
doneFilterRadioButton = new javax.swing.JRadioButton();
notDoneFilterRadioButton = new javax.swing.JRadioButton();
middlePanelForTabs = new javax.swing.JPanel();
middleTabbedPane = new javax.swing.JTabbedPane();
listViewPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorMiddleBackground1Panel);
assignmentsListScrollPane = new javax.swing.JScrollPane();
assignmentsTable = new adl.go.gui.ExtendedJTable();
weekViewPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorMiddleCalendarBackgroundPanel1);
monthViewPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorMiddleCalendarBackgroundPanel1);
monthAndYearPanel = new javax.swing.JPanel();
currentMonthLabel = new javax.swing.JLabel();
currentYearLabel = new javax.swing.JLabel();
prevMonthButton = new javax.swing.JLabel();
todayButton = new javax.swing.JLabel();
nextMonthButton = new javax.swing.JLabel();
daysOfWeekPanel = new javax.swing.JPanel();
sundayLabel = new javax.swing.JLabel();
mondayLabel = new javax.swing.JLabel();
tuesdayLabel = new javax.swing.JLabel();
wednesdayLabel = new javax.swing.JLabel();
thursdayLabel = new javax.swing.JLabel();
fridayLabel = new javax.swing.JLabel();
saturdayLabel = new javax.swing.JLabel();
monthDaysPanel = new javax.swing.JPanel();
week1Day1 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel1 = new javax.swing.JLabel();
dayScroll1 = new javax.swing.JScrollPane();
day1 = new javax.swing.JPanel();
week1Day2 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel2 = new javax.swing.JLabel();
dayScroll2 = new javax.swing.JScrollPane();
day2 = new javax.swing.JPanel();
week1Day3 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel3 = new javax.swing.JLabel();
dayScroll3 = new javax.swing.JScrollPane();
day3 = new javax.swing.JPanel();
week1Day4 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel4 = new javax.swing.JLabel();
dayScroll4 = new javax.swing.JScrollPane();
day4 = new javax.swing.JPanel();
week1Day5 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel5 = new javax.swing.JLabel();
dayScroll5 = new javax.swing.JScrollPane();
day5 = new javax.swing.JPanel();
week1Day6 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel6 = new javax.swing.JLabel();
dayScroll6 = new javax.swing.JScrollPane();
day6 = new javax.swing.JPanel();
week1Day7 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel7 = new javax.swing.JLabel();
dayScroll7 = new javax.swing.JScrollPane();
day7 = new javax.swing.JPanel();
week2Day1 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel8 = new javax.swing.JLabel();
dayScroll8 = new javax.swing.JScrollPane();
day8 = new javax.swing.JPanel();
week2Day2 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel9 = new javax.swing.JLabel();
dayScroll9 = new javax.swing.JScrollPane();
day9 = new javax.swing.JPanel();
week2Day3 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel10 = new javax.swing.JLabel();
dayScroll10 = new javax.swing.JScrollPane();
day10 = new javax.swing.JPanel();
week2Day4 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel11 = new javax.swing.JLabel();
dayScroll11 = new javax.swing.JScrollPane();
day11 = new javax.swing.JPanel();
week2Day5 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel12 = new javax.swing.JLabel();
dayScroll12 = new javax.swing.JScrollPane();
day12 = new javax.swing.JPanel();
week2Day6 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel13 = new javax.swing.JLabel();
dayScroll13 = new javax.swing.JScrollPane();
day13 = new javax.swing.JPanel();
week2Day7 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel14 = new javax.swing.JLabel();
dayScroll14 = new javax.swing.JScrollPane();
day14 = new javax.swing.JPanel();
week3Day1 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel15 = new javax.swing.JLabel();
dayScroll15 = new javax.swing.JScrollPane();
day15 = new javax.swing.JPanel();
week3Day2 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel16 = new javax.swing.JLabel();
dayScroll16 = new javax.swing.JScrollPane();
day16 = new javax.swing.JPanel();
week3Day3 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel17 = new javax.swing.JLabel();
dayScroll17 = new javax.swing.JScrollPane();
day17 = new javax.swing.JPanel();
week3Day4 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel18 = new javax.swing.JLabel();
dayScroll18 = new javax.swing.JScrollPane();
day18 = new javax.swing.JPanel();
week3Day5 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel19 = new javax.swing.JLabel();
dayScroll19 = new javax.swing.JScrollPane();
day19 = new javax.swing.JPanel();
week3Day6 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel20 = new javax.swing.JLabel();
dayScroll20 = new javax.swing.JScrollPane();
day20 = new javax.swing.JPanel();
week3Day7 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel21 = new javax.swing.JLabel();
dayScroll21 = new javax.swing.JScrollPane();
day21 = new javax.swing.JPanel();
week4Day1 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel22 = new javax.swing.JLabel();
dayScroll22 = new javax.swing.JScrollPane();
day22 = new javax.swing.JPanel();
week4Day2 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel23 = new javax.swing.JLabel();
dayScroll23 = new javax.swing.JScrollPane();
day23 = new javax.swing.JPanel();
week4Day3 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel24 = new javax.swing.JLabel();
dayScroll24 = new javax.swing.JScrollPane();
day24 = new javax.swing.JPanel();
week4Day4 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel25 = new javax.swing.JLabel();
dayScroll25 = new javax.swing.JScrollPane();
day25 = new javax.swing.JPanel();
week4Day5 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel26 = new javax.swing.JLabel();
dayScroll26 = new javax.swing.JScrollPane();
day26 = new javax.swing.JPanel();
week4Day6 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel27 = new javax.swing.JLabel();
dayScroll27 = new javax.swing.JScrollPane();
day27 = new javax.swing.JPanel();
week4Day7 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel28 = new javax.swing.JLabel();
dayScroll28 = new javax.swing.JScrollPane();
day28 = new javax.swing.JPanel();
week5Day1 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel29 = new javax.swing.JLabel();
dayScroll29 = new javax.swing.JScrollPane();
day29 = new javax.swing.JPanel();
week5Day2 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel30 = new javax.swing.JLabel();
dayScroll30 = new javax.swing.JScrollPane();
day30 = new javax.swing.JPanel();
week5Day3 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel31 = new javax.swing.JLabel();
dayScroll31 = new javax.swing.JScrollPane();
day31 = new javax.swing.JPanel();
week5Day4 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel32 = new javax.swing.JLabel();
dayScroll32 = new javax.swing.JScrollPane();
day32 = new javax.swing.JPanel();
week5Day5 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel33 = new javax.swing.JLabel();
dayScroll33 = new javax.swing.JScrollPane();
day33 = new javax.swing.JPanel();
week5Day6 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel34 = new javax.swing.JLabel();
dayScroll34 = new javax.swing.JScrollPane();
day34 = new javax.swing.JPanel();
week5Day7 = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorDayInMonthBackground1);
dayLabel35 = new javax.swing.JLabel();
dayScroll35 = new javax.swing.JScrollPane();
day35 = new javax.swing.JPanel();
rightPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_DOWN, domain.utility.currentTheme.colorRightBackground1Panel);
blankContentPanel = new javax.swing.JPanel();
noUserDetailsPanel = new javax.swing.JPanel();
noStudentAdvisorDetails = new javax.swing.JLabel();
editUserDetailsButton = new javax.swing.JButton();
userDetailsContentPanel = new javax.swing.JPanel();
userNameDetailsLabel = new javax.swing.JLabel();
schoolDetailsLabel = new javax.swing.JLabel();
idNumberDetailsLabel = new javax.swing.JLabel();
boxNumberDetailsLabel = new javax.swing.JLabel();
advisorDetailsLabel = new javax.swing.JLabel();
officeHoursDetailsLabel = new javax.swing.JLabel();
officeLocationDetailsLabel = new javax.swing.JLabel();
contactAdvisorButton = new javax.swing.JButton();
termContentPanel = new javax.swing.JPanel();
termNameDetailsLabel = new javax.swing.JLabel();
termCoursesDetailsLabel = new javax.swing.JLabel();
termAvgGradeDetailsLabel = new javax.swing.JLabel();
termTextbooksDetailsLabel = new javax.swing.JLabel();
termStartDateDetailsLabel = new javax.swing.JLabel();
termEndDateDetailsLabel = new javax.swing.JLabel();
termTypesDetailsLabel = new javax.swing.JLabel();
termTotalAssignmentsDetailsLabel = new javax.swing.JLabel();
termUnfinishedDetailsLabel = new javax.swing.JLabel();
termCreditsDetailsLabel = new javax.swing.JLabel();
courseContentPanel = new javax.swing.JPanel();
courseNameDetailsLabel = new javax.swing.JLabel();
courseStartDateDetailsLabel = new javax.swing.JLabel();
courseEndDateDetailsLabel = new javax.swing.JLabel();
courseStartTimeDetailsLabel = new javax.swing.JLabel();
courseEndTimeDetailsLabel = new javax.swing.JLabel();
courseCreditsDetailsLabel = new javax.swing.JLabel();
courseRoomDetailsLabel = new javax.swing.JLabel();
courseTotalAssignmentsDetailsLabel = new javax.swing.JLabel();
courseUnfinishedDetailsLabel = new javax.swing.JLabel();
courseCurrentGradeDetailsLabel = new javax.swing.JLabel();
courseTypesDetailsLabel = new javax.swing.JLabel();
courseTextbooksDetailsLabel = new javax.swing.JLabel();
courseDaysDetailsLabel = new javax.swing.JLabel();
assignmentContentPanel = new javax.swing.JPanel();
assignmentNameTextField = new javax.swing.JTextField();
assignmentsSeparator1 = new javax.swing.JSeparator();
courseLabel = new javax.swing.JLabel();
textbookLabel = new javax.swing.JLabel();
assignmentsSeparator2 = new javax.swing.JSeparator();
typeLabel = new javax.swing.JLabel();
priorityLabel = new javax.swing.JLabel();
detailsTypeComboBox = new javax.swing.JComboBox();
detailsCourseComboBox = new javax.swing.JComboBox();
detailsTextbookComboBox = new javax.swing.JComboBox();
gradeLabel = new javax.swing.JLabel();
gradeTextField = new javax.swing.JTextField();
assignmentsSeparator3 = new javax.swing.JSeparator();
completedCheckBox = new javax.swing.JCheckBox();
commentsLabel = new javax.swing.JLabel();
commentsScrollPane = new javax.swing.JScrollPane();
commentsTextArea = new javax.swing.JTextArea();
prioritySlider = new javax.swing.JSlider();
dueDateChooser = new com.toedter.calendar.JDateChooser();
dueHrChooser = new com.toedter.calendar.JSpinnerDateEditor();
dueMinChooser = new com.toedter.calendar.JSpinnerDateEditor();
dueMChooser = new com.toedter.calendar.JSpinnerDateEditor();
assnColon = new javax.swing.JLabel();
eventContentPanel = new javax.swing.JPanel();
eventNameTextField = new javax.swing.JTextField();
eventDateChooser = new com.toedter.calendar.JDateChooser();
commentsScrollPane1 = new javax.swing.JScrollPane();
descriptionTextArea = new javax.swing.JTextArea();
descriptionLabel = new javax.swing.JLabel();
eventsSeparator2 = new javax.swing.JSeparator();
allDayEventCheckBox = new javax.swing.JCheckBox();
locationLabel = new javax.swing.JLabel();
locationTextField = new javax.swing.JTextField();
categoryComboBox = new javax.swing.JComboBox();
jLabel3 = new javax.swing.JLabel();
eventRepeatButton = new javax.swing.JButton();
eventStartHrChooser = new com.toedter.calendar.JSpinnerDateEditor();
eventEndHrChooser = new com.toedter.calendar.JSpinnerDateEditor();
eventStartMinChooser = new com.toedter.calendar.JSpinnerDateEditor();
eventStartMChooser = new com.toedter.calendar.JSpinnerDateEditor();
eventEndMinChooser = new com.toedter.calendar.JSpinnerDateEditor();
eventEndMChooser = new com.toedter.calendar.JSpinnerDateEditor();
eventColon1 = new javax.swing.JLabel();
eventColon2 = new javax.swing.JLabel();
googleMapsButton = new javax.swing.JButton();
eventsSeparator1 = new javax.swing.JSeparator();
statusPanel = new adl.go.gui.ColoredJPanel(GradientStyle.VERTICAL_GRADIENT_UP, domain.utility.currentTheme.colorBottomBackground1Panel);
progressBar = new javax.swing.JProgressBar();
addPopupMenu.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {
public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) {
}
public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
addPopupMenuPopupMenuWillBecomeInvisible(evt);
}
public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
}
});
addTermMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addTermMenuItem.setText(domain.language.getString ("addTerm") + "...");
addTermMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addTermMenuItemActionPerformed(evt);
}
});
addPopupMenu.add(addTermMenuItem);
addCourseMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addCourseMenuItem.setText(domain.language.getString ("addCourse") + "...");
addCourseMenuItem.setEnabled(false);
addCourseMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addCourseMenuItemActionPerformed(evt);
}
});
addPopupMenu.add(addCourseMenuItem);
addAssignmentMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addAssignmentMenuItem.setText(domain.language.getString ("addAssignment"));
addAssignmentMenuItem.setEnabled(false);
addAssignmentMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addAssignmentMenuItemActionPerformed(evt);
}
});
addPopupMenu.add(addAssignmentMenuItem);
addPopupMenu.add(addPopupSeparator);
addEventMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addEventMenuItem.setText(domain.language.getString ("addEvent"));
addEventMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addEventMenuItemActionPerformed(evt);
}
});
addPopupMenu.add(addEventMenuItem);
updatesDialog.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
updatesDialog.setTitle(domain.language.getString ("checkForUpdates"));
updatesDialog.setAlwaysOnTop(true);
updatesDialog.setName("updatesDialog"); // NOI18N
updatesDialog.setResizable(false);
updatesProgressBar.setFont(domain.utility.currentTheme.fontPlain12);
updatesProgressBar.setOpaque(false);
updatesProgressBar.setStringPainted(true);
updatesCloseButton.setBackground(domain.utility.currentTheme.colorButtonBackground);
updatesCloseButton.setFont(domain.utility.currentTheme.fontPlain12);
updatesCloseButton.setText(domain.language.getString ("close"));
updatesCloseButton.setToolTipText(domain.language.getString ("closeToolTip"));
updatesCloseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
updatesCloseButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout updatesJPanelLayout = new javax.swing.GroupLayout(updatesJPanel);
updatesJPanel.setLayout(updatesJPanelLayout);
updatesJPanelLayout.setHorizontalGroup(
updatesJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(updatesJPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(updatesProgressBar, javax.swing.GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(updatesCloseButton)
.addContainerGap())
);
updatesJPanelLayout.setVerticalGroup(
updatesJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(updatesJPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(updatesJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(updatesProgressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(updatesCloseButton))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout updatesDialogLayout = new javax.swing.GroupLayout(updatesDialog.getContentPane());
updatesDialog.getContentPane().setLayout(updatesDialogLayout);
updatesDialogLayout.setHorizontalGroup(
updatesDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(updatesJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
updatesDialogLayout.setVerticalGroup(
updatesDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(updatesJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
addTermEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addTermEditMenuItem.setText(domain.language.getString ("addTerm") + "...");
addTermEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addTermMenuItemActionPerformed(evt);
}
});
termEditMenu.add(addTermEditMenuItem);
editTermEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
editTermEditMenuItem.setText(domain.language.getString ("editTerm") + "...");
editTermEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editTermEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(editTermEditMenuItem);
removeTermEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
removeTermEditMenuItem.setText(domain.language.getString ("removeTerm"));
removeTermEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeTermEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(removeTermEditMenuItem);
termEditMenu.add(jSeparator1);
addCourseEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addCourseEditMenuItem.setText(domain.language.getString ("addCourse") + "...");
addCourseEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addCourseMenuItemActionPerformed(evt);
}
});
termEditMenu.add(addCourseEditMenuItem);
editCourseEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
editCourseEditMenuItem.setText(domain.language.getString ("editCourse") + "...");
editCourseEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editCourseEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(editCourseEditMenuItem);
removeCourseEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
removeCourseEditMenuItem.setText(domain.language.getString ("removeCourse"));
removeCourseEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeCourseEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(removeCourseEditMenuItem);
termEditMenu.add(jSeparator2);
courseWebsiteMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
courseWebsiteMenuItem.setText(domain.language.getString ("courseWebsite"));
courseWebsiteMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
courseWebsiteMenuItemeditGradingScaleEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(courseWebsiteMenuItem);
labWebsiteMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
labWebsiteMenuItem.setText(domain.language.getString ("labWebsite"));
labWebsiteMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
labWebsiteMenuItemeditGradingScaleEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(labWebsiteMenuItem);
termEditMenu.add(jSeparator7);
editInstructorsEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
editInstructorsEditMenuItem.setText(domain.language.getString ("editInstructors") + "...");
editInstructorsEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editInstructorsEditMenuItemeditGradingScaleEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(editInstructorsEditMenuItem);
editTypesEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
editTypesEditMenuItem.setText(domain.language.getString ("editGradingScale") + "...");
editTypesEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editGradingScaleEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(editTypesEditMenuItem);
editTextbooksEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
editTextbooksEditMenuItem.setText(domain.language.getString ("editTextbooks") + "...");
editTextbooksEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editTextbooksEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(editTextbooksEditMenuItem);
termEditMenu.add(jSeparator3);
addAssignmentTermEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addAssignmentTermEditMenuItem.setText(domain.language.getString ("addAssignment"));
addAssignmentTermEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addAssignmentTermEditMenuItemActionPerformed(evt);
}
});
termEditMenu.add(addAssignmentTermEditMenuItem);
addAssignmentEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addAssignmentEditMenuItem.setText(domain.language.getString ("addAssignment"));
addAssignmentEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addAssignmentMenuItemActionPerformed(evt);
}
});
assignmentsEditMenu.add(addAssignmentEditMenuItem);
addEventEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
addEventEditMenuItem.setText(domain.language.getString ("addEvent"));
addEventEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addEventEditMenuItemActionPerformed(evt);
}
});
assignmentsEditMenu.add(addEventEditMenuItem);
assignmentsEditMenu.add(jSeparator5);
cloneEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
cloneEditMenuItem.setText(domain.language.getString ("clone"));
cloneEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cloneEditMenuItemActionPerformed(evt);
}
});
assignmentsEditMenu.add(cloneEditMenuItem);
removeEditMenuItem.setFont(domain.utility.currentTheme.fontPlain11);
removeEditMenuItem.setText(domain.language.getString ("remove"));
removeEditMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeEditMenuItemActionPerformed(evt);
}
});
assignmentsEditMenu.add(removeEditMenuItem);
repeatEventDialog.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
repeatEventDialog.setName("repeatEventDialog"); // NOI18N
repeatEventDialog.setResizable(false);
repeatEventDialog.setUndecorated(true);
repeatDialogPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
repeatEventDoneButton.setBackground(domain.utility.currentTheme.colorButtonBackground);
repeatEventDoneButton.setFont(domain.utility.currentTheme.fontPlain12);
repeatEventDoneButton.setText(domain.language.getString ("done"));
repeatEventDoneButton.setToolTipText(domain.language.getString ("doneEditingRepetitionToolTip"));
repeatEventDoneButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatEventDoneButtonActionPerformed(evt);
}
});
repeatsLabel.setFont(domain.utility.currentTheme.fontBold11);
repeatsLabel.setText(domain.language.getString ("repeats") + ":");
repeatsEveryLabel.setFont(domain.utility.currentTheme.fontBold11);
repeatsEveryLabel.setText(domain.language.getString ("every") + ":");
repeatsOnLabel.setFont(domain.utility.currentTheme.fontBold11);
repeatsOnLabel.setText(domain.language.getString ("on") + ":");
repeatsEndingLabel.setFont(domain.utility.currentTheme.fontBold11);
repeatsEndingLabel.setText(domain.language.getString ("ending") + ":");
repeatEventRepeatsComboBox.setBackground(domain.utility.currentTheme.colorButtonBackground);
repeatEventRepeatsComboBox.setFont(domain.utility.currentTheme.fontPlain12);
repeatEventRepeatsComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] {domain.language.getString ("never"), domain.language.getString ("daily"), domain.language.getString ("weekly"), domain.language.getString ("monthly"), domain.language.getString ("yearly")}));
repeatEventRepeatsComboBox.setToolTipText(domain.language.getString ("howTheEventRepeatsToolTip"));
repeatEventRepeatsComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatEventRepeatsComboBoxActionPerformed(evt);
}
});
repeatEventRepeatsEveryComboBox.setBackground(domain.utility.currentTheme.colorButtonBackground);
repeatEventRepeatsEveryComboBox.setFont(domain.utility.currentTheme.fontPlain12);
repeatEventRepeatsEveryComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30" }));
repeatEventRepeatsEveryComboBox.setToolTipText(domain.language.getString ("theIntervalForRepeatingToolTip"));
repeatEventRepeatsEveryComboBox.setEnabled(false);
repeatEventRepeatsEveryComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatEventRepeatsEveryComboBoxActionPerformed(evt);
}
});
repeatEventEndDateChooser.setToolTipText(domain.language.getString ("endDateForTheRepetitionToolTip"));
repeatEventEndDateChooser.setEnabled(false);
repeatEventEndDateChooser.setFont(domain.utility.currentTheme.fontPlain12);
repeatEventEndDateChooser.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
repeatEventEndDateChooserPropertyChange(evt);
}
});
reSunCheckBox.setFont(domain.utility.currentTheme.fontPlain11);
reSunCheckBox.setText(domain.language.getString ("su"));
reSunCheckBox.setEnabled(false);
reSunCheckBox.setOpaque(false);
reSunCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatDayCheckBoxActionPerformed(evt);
}
});
reMonCheckBox.setFont(domain.utility.currentTheme.fontPlain11);
reMonCheckBox.setText(domain.language.getString ("m"));
reMonCheckBox.setEnabled(false);
reMonCheckBox.setOpaque(false);
reMonCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatDayCheckBoxActionPerformed(evt);
}
});
reTueCheckBox.setFont(domain.utility.currentTheme.fontPlain11);
reTueCheckBox.setText(domain.language.getString ("t"));
reTueCheckBox.setEnabled(false);
reTueCheckBox.setOpaque(false);
reTueCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatDayCheckBoxActionPerformed(evt);
}
});
reWedCheckBox.setFont(domain.utility.currentTheme.fontPlain11);
reWedCheckBox.setText(domain.language.getString ("w"));
reWedCheckBox.setEnabled(false);
reWedCheckBox.setOpaque(false);
reWedCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatDayCheckBoxActionPerformed(evt);
}
});
reThuCheckBox.setFont(domain.utility.currentTheme.fontPlain11);
reThuCheckBox.setText(domain.language.getString ("th"));
reThuCheckBox.setEnabled(false);
reThuCheckBox.setOpaque(false);
reThuCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatDayCheckBoxActionPerformed(evt);
}
});
reFriCheckBox.setFont(domain.utility.currentTheme.fontPlain11);
reFriCheckBox.setText(domain.language.getString ("f"));
reFriCheckBox.setEnabled(false);
reFriCheckBox.setOpaque(false);
reFriCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatDayCheckBoxActionPerformed(evt);
}
});
reSatCheckBox.setFont(domain.utility.currentTheme.fontPlain11);
reSatCheckBox.setText(domain.language.getString ("sa"));
reSatCheckBox.setEnabled(false);
reSatCheckBox.setOpaque(false);
reSatCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
repeatDayCheckBoxActionPerformed(evt);
}
});
everyDescriptionLabel.setFont(domain.utility.currentTheme.fontBold11);
everyDescriptionLabel.setText("<<Desc>>");
javax.swing.GroupLayout repeatDialogPanelLayout = new javax.swing.GroupLayout(repeatDialogPanel);
repeatDialogPanel.setLayout(repeatDialogPanelLayout);
repeatDialogPanelLayout.setHorizontalGroup(
repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(repeatDialogPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(repeatDialogPanelLayout.createSequentialGroup()
.addComponent(repeatsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(repeatEventRepeatsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(repeatDialogPanelLayout.createSequentialGroup()
.addComponent(repeatsEveryLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(repeatEventRepeatsEveryComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(everyDescriptionLabel))
.addGroup(repeatDialogPanelLayout.createSequentialGroup()
.addComponent(repeatsOnLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(repeatDialogPanelLayout.createSequentialGroup()
.addComponent(reThuCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(reFriCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(reSatCheckBox))
.addGroup(repeatDialogPanelLayout.createSequentialGroup()
.addComponent(reSunCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(reMonCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(reTueCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(reWedCheckBox))))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, repeatDialogPanelLayout.createSequentialGroup()
.addComponent(repeatsEndingLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(repeatEventEndDateChooser, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE))
.addComponent(repeatEventDoneButton, javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap())
);
repeatDialogPanelLayout.setVerticalGroup(
repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(repeatDialogPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(repeatsLabel)
.addComponent(repeatEventRepeatsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(repeatsEveryLabel)
.addComponent(repeatEventRepeatsEveryComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(everyDescriptionLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(repeatsOnLabel)
.addComponent(reSunCheckBox)
.addComponent(reMonCheckBox)
.addComponent(reTueCheckBox)
.addComponent(reWedCheckBox))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(reThuCheckBox)
.addComponent(reFriCheckBox)
.addComponent(reSatCheckBox))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(repeatDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(repeatsEndingLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(repeatEventEndDateChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(repeatEventDoneButton)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout repeatEventDialogLayout = new javax.swing.GroupLayout(repeatEventDialog.getContentPane());
repeatEventDialog.getContentPane().setLayout(repeatEventDialogLayout);
repeatEventDialogLayout.setHorizontalGroup(
repeatEventDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(repeatDialogPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
repeatEventDialogLayout.setVerticalGroup(
repeatEventDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(repeatDialogPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
fileChooser.setFileFilter(new ExtensionFileFilter (domain.language.getString ("getOrganizedBackupFiles") + " (.gbak)", new String[] {"GBAK"}));
askPopupMenu.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {
public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) {
}
public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
askPopupMenuPopupMenuWillBecomeInvisible(evt);
}
public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
}
});
printingDialog.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
printingDialog.setTitle(domain.language.getString ("printing"));
printingDialog.setAlwaysOnTop(true);
printingDialog.setName("printingDialog"); // NOI18N
printingDialog.setResizable(false);
printingJLabel.setFont(domain.utility.currentTheme.fontBold12);
printingJLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource(Domain.IMAGES_FOLDER + "printer.png"))); // NOI18N
printingJLabel.setText(domain.language.getString ("getOrganizedPrinting"));
javax.swing.GroupLayout printingJPanelLayout = new javax.swing.GroupLayout(printingJPanel);
printingJPanel.setLayout(printingJPanelLayout);
printingJPanelLayout.setHorizontalGroup(
printingJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(printingJPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(printingJLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE)
.addContainerGap())
);
printingJPanelLayout.setVerticalGroup(
printingJPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(printingJPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(printingJLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout printingDialogLayout = new javax.swing.GroupLayout(printingDialog.getContentPane());
printingDialog.getContentPane().setLayout(printingDialogLayout);
printingDialogLayout.setHorizontalGroup(
printingDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(printingJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
printingDialogLayout.setVerticalGroup(
printingDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(printingJPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
setName("viewPanel"); // NOI18N
addAncestorListener(new javax.swing.event.AncestorListener() {
public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
}
public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
formAncestorAdded(evt);
}
public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
}
});
setLayout(new java.awt.BorderLayout());
toolBar.setFloatable(false);
toolBar.setRollover(true);
toolBar.setName("toolBar"); // NOI18N
toolBar.setPreferredSize(new java.awt.Dimension(1414, 53));
add(toolBar, java.awt.BorderLayout.NORTH);
leftPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
leftPanel.setName("leftPanel"); // NOI18N
leftPanel.setPreferredSize(new java.awt.Dimension(227, 570));
termScrollPane.setName("termScrollPane"); // NOI18N
termScrollPane.setOpaque(false);
termTree.setBackground(new java.awt.Color(238, 238, 238));
termTree.setFont(domain.utility.currentTheme.fontPlain12);
termTree.setModel(termsModel);
termTree.setCellRenderer(new DefaultTreeCellRenderer ()
{
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
{
super.getTreeCellRendererComponent (tree, value, sel, expanded, leaf, row, hasFocus);
if (value instanceof Term || value instanceof Course)
{
setIcon ((Icon) new ImageIcon (getClass ().getResource (Domain.IMAGES_FOLDER + "terms_courses_mini.png")));
}
return this;
}
@Override
public Color getBackground()
{
return null;
}
@Override
public Color getBackgroundNonSelectionColor()
{
return null;
}
});
termTree.setName("termTree"); // NOI18N
termTree.setOpaque(false);
termTree.setRootVisible(false);
termTree.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
termTreeMouseReleased(evt);
}
});
termScrollPane.setViewportView(termTree);
miniCalendar.setFont(domain.utility.currentTheme.fontPlain11);
miniCalendar.setOpaque(true);
miniCalendar.setWeekOfYearVisible(false);
miniCalendar.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
miniCalendarPropertyChange(evt);
}
});
javax.swing.GroupLayout leftPanelLayout = new javax.swing.GroupLayout(leftPanel);
leftPanel.setLayout(leftPanelLayout);
leftPanelLayout.setHorizontalGroup(
leftPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(miniCalendar, javax.swing.GroupLayout.PREFERRED_SIZE, 223, Short.MAX_VALUE)
.addComponent(termScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE)
);
leftPanelLayout.setVerticalGroup(
leftPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, leftPanelLayout.createSequentialGroup()
.addComponent(termScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 485, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(miniCalendar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
add(leftPanel, java.awt.BorderLayout.WEST);
middlePanel.setName("middlePanel"); // NOI18N
middlePanel.setLayout(new java.awt.CardLayout());
loadingPanel.setLayout(new java.awt.BorderLayout());
loadingLabel.setFont(domain.utility.currentTheme.fontBold18);
loadingLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
loadingLabel.setText(domain.language.getString ("loading") + "...");
loadingPanel.add(loadingLabel, java.awt.BorderLayout.CENTER);
middlePanel.add(loadingPanel, "loadingCard");
contentPanel.setOpaque(false);
contentPanel.setLayout(new java.awt.BorderLayout());
upperPanelForFilters.setOpaque(false);
upperPanelForFilters.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 5, 0));
filter1ButtonGroup.add(bothFilterRadioButton);
bothFilterRadioButton.setFont(domain.utility.currentTheme.fontPlain11);
bothFilterRadioButton.setSelected(true);
bothFilterRadioButton.setText(domain.language.getString ("both"));
bothFilterRadioButton.setToolTipText(domain.language.getString ("bothToolTip"));
bothFilterRadioButton.setMargin(new java.awt.Insets(0, 1, 0, 1));
bothFilterRadioButton.setOpaque(false);
bothFilterRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
filter1ButtonActionPerformed(evt);
}
});
upperPanelForFilters.add(bothFilterRadioButton);
filter1ButtonGroup.add(assignmentsFilterRadioButton);
assignmentsFilterRadioButton.setFont(domain.utility.currentTheme.fontPlain11);
assignmentsFilterRadioButton.setText(domain.language.getString ("assignments"));
assignmentsFilterRadioButton.setToolTipText(domain.language.getString ("assignmentsToolTip"));
assignmentsFilterRadioButton.setMargin(new java.awt.Insets(0, 1, 0, 1));
assignmentsFilterRadioButton.setOpaque(false);
assignmentsFilterRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
filter1ButtonActionPerformed(evt);
}
});
upperPanelForFilters.add(assignmentsFilterRadioButton);
filter1ButtonGroup.add(eventsFilterRadioButton);
eventsFilterRadioButton.setFont(domain.utility.currentTheme.fontPlain11);
eventsFilterRadioButton.setText(domain.language.getString ("events"));
eventsFilterRadioButton.setToolTipText(domain.language.getString ("eventsToolTip"));
eventsFilterRadioButton.setMargin(new java.awt.Insets(0, 1, 0, 1));
eventsFilterRadioButton.setOpaque(false);
eventsFilterRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
filter1ButtonActionPerformed(evt);
}
});
upperPanelForFilters.add(eventsFilterRadioButton);
jSeparator6.setOrientation(javax.swing.SwingConstants.VERTICAL);
jSeparator6.setPreferredSize(new java.awt.Dimension(4, 20));
upperPanelForFilters.add(jSeparator6);
filter2ButtonGroup.add(allFilterRadioButton);
allFilterRadioButton.setFont(domain.utility.currentTheme.fontPlain11);
allFilterRadioButton.setSelected(true);
allFilterRadioButton.setText(domain.language.getString ("all"));
allFilterRadioButton.setToolTipText(domain.language.getString ("allToolTip"));
allFilterRadioButton.setMargin(new java.awt.Insets(0, 1, 0, 1));
allFilterRadioButton.setOpaque(false);
allFilterRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
filter2ButtonActionPerformed(evt);
}
});
upperPanelForFilters.add(allFilterRadioButton);
filter2ButtonGroup.add(overdueFilterRadioButton);
overdueFilterRadioButton.setFont(domain.utility.currentTheme.fontPlain11);
overdueFilterRadioButton.setText(domain.language.getString ("overdue"));
overdueFilterRadioButton.setToolTipText(domain.language.getString ("overdueToolTip"));
overdueFilterRadioButton.setOpaque(false);
overdueFilterRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
filter2ButtonActionPerformed(evt);
}
});
upperPanelForFilters.add(overdueFilterRadioButton);
filter2ButtonGroup.add(doneFilterRadioButton);
doneFilterRadioButton.setFont(domain.utility.currentTheme.fontPlain11);
doneFilterRadioButton.setText(domain.language.getString ("done"));
doneFilterRadioButton.setToolTipText(domain.language.getString ("doneToolTip"));
doneFilterRadioButton.setMargin(new java.awt.Insets(0, 1, 0, 1));
doneFilterRadioButton.setOpaque(false);
doneFilterRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
filter2ButtonActionPerformed(evt);
}
});
upperPanelForFilters.add(doneFilterRadioButton);
filter2ButtonGroup.add(notDoneFilterRadioButton);
notDoneFilterRadioButton.setFont(domain.utility.currentTheme.fontPlain11);
notDoneFilterRadioButton.setText(domain.language.getString ("notDone"));
notDoneFilterRadioButton.setToolTipText(domain.language.getString ("notDoneToolTip"));
notDoneFilterRadioButton.setMargin(new java.awt.Insets(0, 1, 0, 1));
notDoneFilterRadioButton.setOpaque(false);
notDoneFilterRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
filter2ButtonActionPerformed(evt);
}
});
upperPanelForFilters.add(notDoneFilterRadioButton);
contentPanel.add(upperPanelForFilters, java.awt.BorderLayout.NORTH);
middlePanelForTabs.setOpaque(false);
middlePanelForTabs.setLayout(new java.awt.GridLayout(1, 0));
middleTabbedPane.setFont(domain.utility.currentTheme.fontPlain11);
middleTabbedPane.setName("middleTabbedPane"); // NOI18N
middleTabbedPane.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
middleTabbedPaneStateChanged(evt);
}
});
listViewPanel.setName("listViewPanel"); // NOI18N
assignmentsTable.setFont(domain.utility.currentTheme.fontPlain11);
assignmentsTable.setModel(assignmentsTableModel);
assignmentsTable.setGridColor(new java.awt.Color(200, 200, 200));
assignmentsTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
assignmentsTable.getTableHeader().setReorderingAllowed(false);
assignmentsTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
assignmentsTableMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
assignmentsTableMouseReleased(evt);
}
});
assignmentsListScrollPane.setViewportView(assignmentsTable);
javax.swing.GroupLayout listViewPanelLayout = new javax.swing.GroupLayout(listViewPanel);
listViewPanel.setLayout(listViewPanelLayout);
listViewPanelLayout.setHorizontalGroup(
listViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(assignmentsListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 880, Short.MAX_VALUE)
);
listViewPanelLayout.setVerticalGroup(
listViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(assignmentsListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 595, Short.MAX_VALUE)
);
middleTabbedPane.addTab(domain.language.getString ("listView"), listViewPanel);
javax.swing.GroupLayout weekViewPanelLayout = new javax.swing.GroupLayout(weekViewPanel);
weekViewPanel.setLayout(weekViewPanelLayout);
weekViewPanelLayout.setHorizontalGroup(
weekViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 880, Short.MAX_VALUE)
);
weekViewPanelLayout.setVerticalGroup(
weekViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 595, Short.MAX_VALUE)
);
middleTabbedPane.addTab(domain.language.getString ("weekView"), weekViewPanel);
monthAndYearPanel.setOpaque(false);
currentMonthLabel.setFont(domain.utility.currentTheme.fontBold12);
currentMonthLabel.setText("Month");
currentYearLabel.setFont(domain.utility.currentTheme.fontBold12);
currentYearLabel.setText("Year");
prevMonthButton.setFont(domain.utility.currentTheme.fontBold12);
prevMonthButton.setText("<< |");
prevMonthButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
prevMonthButtonMouseReleased(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
prevMonthButtonMouseExited(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
prevMonthButtonMouseEntered(evt);
}
});
todayButton.setFont(domain.utility.currentTheme.fontBold12);
todayButton.setText(domain.language.getString ("today"));
todayButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
todayButtonMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
todayButtonMouseExited(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
todayButtonMouseReleased(evt);
}
});
nextMonthButton.setFont(domain.utility.currentTheme.fontBold12);
nextMonthButton.setText("| >>");
nextMonthButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
nextMonthButtonMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
nextMonthButtonMouseExited(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
nextMonthButtonMouseReleased(evt);
}
});
javax.swing.GroupLayout monthAndYearPanelLayout = new javax.swing.GroupLayout(monthAndYearPanel);
monthAndYearPanel.setLayout(monthAndYearPanelLayout);
monthAndYearPanelLayout.setHorizontalGroup(
monthAndYearPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(monthAndYearPanelLayout.createSequentialGroup()
.addComponent(currentMonthLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(currentYearLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 688, Short.MAX_VALUE)
.addComponent(prevMonthButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(todayButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(nextMonthButton)
.addContainerGap())
);
monthAndYearPanelLayout.setVerticalGroup(
monthAndYearPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(monthAndYearPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(currentMonthLabel)
.addComponent(currentYearLabel)
.addComponent(prevMonthButton)
.addComponent(todayButton)
.addComponent(nextMonthButton))
);
daysOfWeekPanel.setOpaque(false);
daysOfWeekPanel.setLayout(new java.awt.GridLayout(1, 7));
sundayLabel.setFont(domain.utility.currentTheme.fontPlain12);
sundayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
sundayLabel.setText(domain.language.getString ("sunday"));
daysOfWeekPanel.add(sundayLabel);
mondayLabel.setFont(domain.utility.currentTheme.fontPlain12);
mondayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
mondayLabel.setText(domain.language.getString ("monday"));
daysOfWeekPanel.add(mondayLabel);
tuesdayLabel.setFont(domain.utility.currentTheme.fontPlain12);
tuesdayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
tuesdayLabel.setText(domain.language.getString ("tuesday"));
daysOfWeekPanel.add(tuesdayLabel);
wednesdayLabel.setFont(domain.utility.currentTheme.fontPlain12);
wednesdayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
wednesdayLabel.setText(domain.language.getString ("wednesday"));
daysOfWeekPanel.add(wednesdayLabel);
thursdayLabel.setFont(domain.utility.currentTheme.fontPlain12);
thursdayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
thursdayLabel.setText(domain.language.getString ("thursday"));
daysOfWeekPanel.add(thursdayLabel);
fridayLabel.setFont(domain.utility.currentTheme.fontPlain12);
fridayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
fridayLabel.setText(domain.language.getString ("friday"));
daysOfWeekPanel.add(fridayLabel);
saturdayLabel.setFont(domain.utility.currentTheme.fontPlain12);
saturdayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
saturdayLabel.setText(domain.language.getString ("saturday"));
daysOfWeekPanel.add(saturdayLabel);
monthDaysPanel.setOpaque(false);
monthDaysPanel.setLayout(new java.awt.GridLayout(5, 7));
week1Day1.setBorder(UNSELECTED_DAY_BORDER);
week1Day1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week1Day1.setLayout(new java.awt.BorderLayout());
dayLabel1.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel1.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel1.setText("#");
dayLabel1.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week1Day1.add(dayLabel1, java.awt.BorderLayout.NORTH);
dayScroll1.setBorder(null);
dayScroll1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll1.setOpaque(false);
dayScroll1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day1.setOpaque(false);
day1.setLayout(new javax.swing.BoxLayout(day1, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll1.setViewportView(day1);
week1Day1.add(dayScroll1, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week1Day1);
week1Day2.setBorder(UNSELECTED_DAY_BORDER);
week1Day2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week1Day2.setLayout(new java.awt.BorderLayout());
dayLabel2.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel2.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel2.setText("#");
dayLabel2.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week1Day2.add(dayLabel2, java.awt.BorderLayout.NORTH);
dayScroll2.setBorder(null);
dayScroll2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll2.setOpaque(false);
dayScroll2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day2.setOpaque(false);
day2.setLayout(new javax.swing.BoxLayout(day2, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll2.setViewportView(day2);
week1Day2.add(dayScroll2, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week1Day2);
week1Day3.setBorder(UNSELECTED_DAY_BORDER);
week1Day3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week1Day3.setLayout(new java.awt.BorderLayout());
dayLabel3.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel3.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel3.setText("#");
dayLabel3.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week1Day3.add(dayLabel3, java.awt.BorderLayout.NORTH);
dayScroll3.setBorder(null);
dayScroll3.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll3.setOpaque(false);
dayScroll3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day3.setOpaque(false);
day3.setLayout(new javax.swing.BoxLayout(day3, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll3.setViewportView(day3);
week1Day3.add(dayScroll3, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week1Day3);
week1Day4.setBorder(UNSELECTED_DAY_BORDER);
week1Day4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week1Day4.setLayout(new java.awt.BorderLayout());
dayLabel4.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel4.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel4.setText("#");
dayLabel4.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week1Day4.add(dayLabel4, java.awt.BorderLayout.NORTH);
dayScroll4.setBorder(null);
dayScroll4.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll4.setOpaque(false);
dayScroll4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day4.setOpaque(false);
day4.setLayout(new javax.swing.BoxLayout(day4, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll4.setViewportView(day4);
week1Day4.add(dayScroll4, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week1Day4);
week1Day5.setBorder(UNSELECTED_DAY_BORDER);
week1Day5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week1Day5.setLayout(new java.awt.BorderLayout());
dayLabel5.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel5.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel5.setText("#");
dayLabel5.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week1Day5.add(dayLabel5, java.awt.BorderLayout.NORTH);
dayScroll5.setBorder(null);
dayScroll5.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll5.setOpaque(false);
dayScroll5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day5.setOpaque(false);
day5.setLayout(new javax.swing.BoxLayout(day5, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll5.setViewportView(day5);
week1Day5.add(dayScroll5, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week1Day5);
week1Day6.setBorder(UNSELECTED_DAY_BORDER);
week1Day6.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week1Day6.setLayout(new java.awt.BorderLayout());
dayLabel6.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel6.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel6.setText("#");
dayLabel6.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week1Day6.add(dayLabel6, java.awt.BorderLayout.NORTH);
dayScroll6.setBorder(null);
dayScroll6.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll6.setOpaque(false);
dayScroll6.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day6.setOpaque(false);
day6.setLayout(new javax.swing.BoxLayout(day6, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll6.setViewportView(day6);
week1Day6.add(dayScroll6, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week1Day6);
week1Day7.setBorder(UNSELECTED_DAY_BORDER);
week1Day7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week1Day7.setLayout(new java.awt.BorderLayout());
dayLabel7.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel7.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel7.setText("#");
dayLabel7.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week1Day7.add(dayLabel7, java.awt.BorderLayout.NORTH);
dayScroll7.setBorder(null);
dayScroll7.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll7.setOpaque(false);
dayScroll7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day7.setOpaque(false);
day7.setLayout(new javax.swing.BoxLayout(day7, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll7.setViewportView(day7);
week1Day7.add(dayScroll7, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week1Day7);
week2Day1.setBorder(UNSELECTED_DAY_BORDER);
week2Day1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week2Day1.setLayout(new java.awt.BorderLayout());
dayLabel8.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel8.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel8.setText("#");
dayLabel8.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week2Day1.add(dayLabel8, java.awt.BorderLayout.NORTH);
dayScroll8.setBorder(null);
dayScroll8.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll8.setOpaque(false);
dayScroll8.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day8.setOpaque(false);
day8.setLayout(new javax.swing.BoxLayout(day8, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll8.setViewportView(day8);
week2Day1.add(dayScroll8, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week2Day1);
week2Day2.setBorder(UNSELECTED_DAY_BORDER);
week2Day2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week2Day2.setLayout(new java.awt.BorderLayout());
dayLabel9.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel9.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel9.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel9.setText("#");
dayLabel9.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week2Day2.add(dayLabel9, java.awt.BorderLayout.NORTH);
dayScroll9.setBorder(null);
dayScroll9.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll9.setOpaque(false);
dayScroll9.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day9.setOpaque(false);
day9.setLayout(new javax.swing.BoxLayout(day9, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll9.setViewportView(day9);
week2Day2.add(dayScroll9, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week2Day2);
week2Day3.setBorder(UNSELECTED_DAY_BORDER);
week2Day3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week2Day3.setLayout(new java.awt.BorderLayout());
dayLabel10.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel10.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel10.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel10.setText("#");
dayLabel10.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week2Day3.add(dayLabel10, java.awt.BorderLayout.NORTH);
dayScroll10.setBorder(null);
dayScroll10.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll10.setOpaque(false);
dayScroll10.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day10.setOpaque(false);
day10.setLayout(new javax.swing.BoxLayout(day10, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll10.setViewportView(day10);
week2Day3.add(dayScroll10, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week2Day3);
week2Day4.setBorder(UNSELECTED_DAY_BORDER);
week2Day4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week2Day4.setLayout(new java.awt.BorderLayout());
dayLabel11.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel11.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel11.setText("#");
dayLabel11.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week2Day4.add(dayLabel11, java.awt.BorderLayout.NORTH);
dayScroll11.setBorder(null);
dayScroll11.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll11.setOpaque(false);
dayScroll11.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day11.setOpaque(false);
day11.setLayout(new javax.swing.BoxLayout(day11, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll11.setViewportView(day11);
week2Day4.add(dayScroll11, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week2Day4);
week2Day5.setBorder(UNSELECTED_DAY_BORDER);
week2Day5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week2Day5.setLayout(new java.awt.BorderLayout());
dayLabel12.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel12.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel12.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel12.setText("#");
dayLabel12.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week2Day5.add(dayLabel12, java.awt.BorderLayout.NORTH);
dayScroll12.setBorder(null);
dayScroll12.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll12.setOpaque(false);
dayScroll12.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day12.setOpaque(false);
day12.setLayout(new javax.swing.BoxLayout(day12, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll12.setViewportView(day12);
week2Day5.add(dayScroll12, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week2Day5);
week2Day6.setBorder(UNSELECTED_DAY_BORDER);
week2Day6.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week2Day6.setLayout(new java.awt.BorderLayout());
dayLabel13.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel13.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel13.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel13.setText("#");
dayLabel13.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week2Day6.add(dayLabel13, java.awt.BorderLayout.NORTH);
dayScroll13.setBorder(null);
dayScroll13.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll13.setOpaque(false);
dayScroll13.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day13.setOpaque(false);
day13.setLayout(new javax.swing.BoxLayout(day13, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll13.setViewportView(day13);
week2Day6.add(dayScroll13, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week2Day6);
week2Day7.setBorder(UNSELECTED_DAY_BORDER);
week2Day7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week2Day7.setLayout(new java.awt.BorderLayout());
dayLabel14.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel14.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel14.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel14.setText("#");
dayLabel14.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week2Day7.add(dayLabel14, java.awt.BorderLayout.NORTH);
dayScroll14.setBorder(null);
dayScroll14.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll14.setOpaque(false);
dayScroll14.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day14.setOpaque(false);
day14.setLayout(new javax.swing.BoxLayout(day14, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll14.setViewportView(day14);
week2Day7.add(dayScroll14, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week2Day7);
week3Day1.setBorder(UNSELECTED_DAY_BORDER);
week3Day1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week3Day1.setLayout(new java.awt.BorderLayout());
dayLabel15.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel15.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel15.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel15.setText("#");
dayLabel15.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week3Day1.add(dayLabel15, java.awt.BorderLayout.NORTH);
dayScroll15.setBorder(null);
dayScroll15.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll15.setOpaque(false);
dayScroll15.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day15.setOpaque(false);
day15.setLayout(new javax.swing.BoxLayout(day15, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll15.setViewportView(day15);
week3Day1.add(dayScroll15, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week3Day1);
week3Day2.setBorder(UNSELECTED_DAY_BORDER);
week3Day2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week3Day2.setLayout(new java.awt.BorderLayout());
dayLabel16.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel16.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel16.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel16.setText("#");
dayLabel16.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week3Day2.add(dayLabel16, java.awt.BorderLayout.NORTH);
dayScroll16.setBorder(null);
dayScroll16.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll16.setOpaque(false);
dayScroll16.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day16.setOpaque(false);
day16.setLayout(new javax.swing.BoxLayout(day16, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll16.setViewportView(day16);
week3Day2.add(dayScroll16, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week3Day2);
week3Day3.setBorder(UNSELECTED_DAY_BORDER);
week3Day3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week3Day3.setLayout(new java.awt.BorderLayout());
dayLabel17.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel17.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel17.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel17.setText("#");
dayLabel17.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week3Day3.add(dayLabel17, java.awt.BorderLayout.NORTH);
dayScroll17.setBorder(null);
dayScroll17.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll17.setOpaque(false);
dayScroll17.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day17.setOpaque(false);
day17.setLayout(new javax.swing.BoxLayout(day17, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll17.setViewportView(day17);
week3Day3.add(dayScroll17, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week3Day3);
week3Day4.setBorder(UNSELECTED_DAY_BORDER);
week3Day4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week3Day4.setLayout(new java.awt.BorderLayout());
dayLabel18.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel18.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel18.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel18.setText("#");
dayLabel18.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week3Day4.add(dayLabel18, java.awt.BorderLayout.NORTH);
dayScroll18.setBorder(null);
dayScroll18.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll18.setOpaque(false);
dayScroll18.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day18.setOpaque(false);
day18.setLayout(new javax.swing.BoxLayout(day18, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll18.setViewportView(day18);
week3Day4.add(dayScroll18, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week3Day4);
week3Day5.setBorder(UNSELECTED_DAY_BORDER);
week3Day5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week3Day5.setLayout(new java.awt.BorderLayout());
dayLabel19.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel19.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel19.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel19.setText("#");
dayLabel19.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week3Day5.add(dayLabel19, java.awt.BorderLayout.NORTH);
dayScroll19.setBorder(null);
dayScroll19.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll19.setOpaque(false);
dayScroll19.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day19.setOpaque(false);
day19.setLayout(new javax.swing.BoxLayout(day19, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll19.setViewportView(day19);
week3Day5.add(dayScroll19, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week3Day5);
week3Day6.setBorder(UNSELECTED_DAY_BORDER);
week3Day6.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week3Day6.setLayout(new java.awt.BorderLayout());
dayLabel20.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel20.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel20.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel20.setText("#");
dayLabel20.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week3Day6.add(dayLabel20, java.awt.BorderLayout.NORTH);
dayScroll20.setBorder(null);
dayScroll20.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll20.setOpaque(false);
dayScroll20.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day20.setOpaque(false);
day20.setLayout(new javax.swing.BoxLayout(day20, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll20.setViewportView(day20);
week3Day6.add(dayScroll20, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week3Day6);
week3Day7.setBorder(UNSELECTED_DAY_BORDER);
week3Day7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week3Day7.setLayout(new java.awt.BorderLayout());
dayLabel21.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel21.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel21.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel21.setText("#");
dayLabel21.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week3Day7.add(dayLabel21, java.awt.BorderLayout.NORTH);
dayScroll21.setBorder(null);
dayScroll21.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll21.setOpaque(false);
dayScroll21.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day21.setOpaque(false);
day21.setLayout(new javax.swing.BoxLayout(day21, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll21.setViewportView(day21);
week3Day7.add(dayScroll21, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week3Day7);
week4Day1.setBorder(UNSELECTED_DAY_BORDER);
week4Day1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week4Day1.setLayout(new java.awt.BorderLayout());
dayLabel22.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel22.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel22.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel22.setText("#");
dayLabel22.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week4Day1.add(dayLabel22, java.awt.BorderLayout.NORTH);
dayScroll22.setBorder(null);
dayScroll22.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll22.setOpaque(false);
dayScroll22.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day22.setOpaque(false);
day22.setLayout(new javax.swing.BoxLayout(day22, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll22.setViewportView(day22);
week4Day1.add(dayScroll22, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week4Day1);
week4Day2.setBorder(UNSELECTED_DAY_BORDER);
week4Day2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week4Day2.setLayout(new java.awt.BorderLayout());
dayLabel23.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel23.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel23.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel23.setText("#");
dayLabel23.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week4Day2.add(dayLabel23, java.awt.BorderLayout.NORTH);
dayScroll23.setBorder(null);
dayScroll23.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll23.setOpaque(false);
dayScroll23.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day23.setOpaque(false);
day23.setLayout(new javax.swing.BoxLayout(day23, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll23.setViewportView(day23);
week4Day2.add(dayScroll23, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week4Day2);
week4Day3.setBorder(UNSELECTED_DAY_BORDER);
week4Day3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week4Day3.setLayout(new java.awt.BorderLayout());
dayLabel24.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel24.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel24.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel24.setText("#");
dayLabel24.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week4Day3.add(dayLabel24, java.awt.BorderLayout.NORTH);
dayScroll24.setBorder(null);
dayScroll24.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll24.setOpaque(false);
dayScroll24.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day24.setOpaque(false);
day24.setLayout(new javax.swing.BoxLayout(day24, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll24.setViewportView(day24);
week4Day3.add(dayScroll24, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week4Day3);
week4Day4.setBorder(UNSELECTED_DAY_BORDER);
week4Day4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week4Day4.setLayout(new java.awt.BorderLayout());
dayLabel25.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel25.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel25.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel25.setText("#");
dayLabel25.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week4Day4.add(dayLabel25, java.awt.BorderLayout.NORTH);
dayScroll25.setBorder(null);
dayScroll25.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll25.setOpaque(false);
dayScroll25.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day25.setOpaque(false);
day25.setLayout(new javax.swing.BoxLayout(day25, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll25.setViewportView(day25);
week4Day4.add(dayScroll25, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week4Day4);
week4Day5.setBorder(UNSELECTED_DAY_BORDER);
week4Day5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week4Day5.setLayout(new java.awt.BorderLayout());
dayLabel26.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel26.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel26.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel26.setText("#");
dayLabel26.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week4Day5.add(dayLabel26, java.awt.BorderLayout.NORTH);
dayScroll26.setBorder(null);
dayScroll26.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll26.setOpaque(false);
dayScroll26.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day26.setOpaque(false);
day26.setLayout(new javax.swing.BoxLayout(day26, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll26.setViewportView(day26);
week4Day5.add(dayScroll26, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week4Day5);
week4Day6.setBorder(UNSELECTED_DAY_BORDER);
week4Day6.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week4Day6.setLayout(new java.awt.BorderLayout());
dayLabel27.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel27.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel27.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel27.setText("#");
dayLabel27.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week4Day6.add(dayLabel27, java.awt.BorderLayout.NORTH);
dayScroll27.setBorder(null);
dayScroll27.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll27.setOpaque(false);
dayScroll27.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day27.setOpaque(false);
day27.setLayout(new javax.swing.BoxLayout(day27, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll27.setViewportView(day27);
week4Day6.add(dayScroll27, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week4Day6);
week4Day7.setBorder(UNSELECTED_DAY_BORDER);
week4Day7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week4Day7.setLayout(new java.awt.BorderLayout());
dayLabel28.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel28.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel28.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel28.setText("#");
dayLabel28.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week4Day7.add(dayLabel28, java.awt.BorderLayout.NORTH);
dayScroll28.setBorder(null);
dayScroll28.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll28.setOpaque(false);
dayScroll28.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day28.setOpaque(false);
day28.setLayout(new javax.swing.BoxLayout(day28, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll28.setViewportView(day28);
week4Day7.add(dayScroll28, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week4Day7);
week5Day1.setBorder(UNSELECTED_DAY_BORDER);
week5Day1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week5Day1.setLayout(new java.awt.BorderLayout());
dayLabel29.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel29.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel29.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel29.setText("#");
dayLabel29.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week5Day1.add(dayLabel29, java.awt.BorderLayout.NORTH);
dayScroll29.setBorder(null);
dayScroll29.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll29.setOpaque(false);
dayScroll29.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day29.setOpaque(false);
day29.setLayout(new javax.swing.BoxLayout(day29, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll29.setViewportView(day29);
week5Day1.add(dayScroll29, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week5Day1);
week5Day2.setBorder(UNSELECTED_DAY_BORDER);
week5Day2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week5Day2.setLayout(new java.awt.BorderLayout());
dayLabel30.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel30.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel30.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel30.setText("#");
dayLabel30.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week5Day2.add(dayLabel30, java.awt.BorderLayout.NORTH);
dayScroll30.setBorder(null);
dayScroll30.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll30.setOpaque(false);
dayScroll30.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day30.setOpaque(false);
day30.setLayout(new javax.swing.BoxLayout(day30, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll30.setViewportView(day30);
week5Day2.add(dayScroll30, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week5Day2);
week5Day3.setBorder(UNSELECTED_DAY_BORDER);
week5Day3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week5Day3.setLayout(new java.awt.BorderLayout());
dayLabel31.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel31.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel31.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel31.setText("#");
dayLabel31.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week5Day3.add(dayLabel31, java.awt.BorderLayout.NORTH);
dayScroll31.setBorder(null);
dayScroll31.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll31.setOpaque(false);
dayScroll31.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day31.setOpaque(false);
day31.setLayout(new javax.swing.BoxLayout(day31, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll31.setViewportView(day31);
week5Day3.add(dayScroll31, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week5Day3);
week5Day4.setBorder(UNSELECTED_DAY_BORDER);
week5Day4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week5Day4.setLayout(new java.awt.BorderLayout());
dayLabel32.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel32.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel32.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel32.setText("#");
dayLabel32.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week5Day4.add(dayLabel32, java.awt.BorderLayout.NORTH);
dayScroll32.setBorder(null);
dayScroll32.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll32.setOpaque(false);
dayScroll32.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day32.setOpaque(false);
day32.setLayout(new javax.swing.BoxLayout(day32, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll32.setViewportView(day32);
week5Day4.add(dayScroll32, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week5Day4);
week5Day5.setBorder(UNSELECTED_DAY_BORDER);
week5Day5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week5Day5.setLayout(new java.awt.BorderLayout());
dayLabel33.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel33.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel33.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel33.setText("#");
dayLabel33.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week5Day5.add(dayLabel33, java.awt.BorderLayout.NORTH);
dayScroll33.setBorder(null);
dayScroll33.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll33.setOpaque(false);
dayScroll33.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day33.setOpaque(false);
day33.setLayout(new javax.swing.BoxLayout(day33, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll33.setViewportView(day33);
week5Day5.add(dayScroll33, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week5Day5);
week5Day6.setBorder(UNSELECTED_DAY_BORDER);
week5Day6.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week5Day6.setLayout(new java.awt.BorderLayout());
dayLabel34.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel34.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel34.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel34.setText("#");
dayLabel34.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week5Day6.add(dayLabel34, java.awt.BorderLayout.NORTH);
dayScroll34.setBorder(null);
dayScroll34.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll34.setOpaque(false);
dayScroll34.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day34.setOpaque(false);
day34.setLayout(new javax.swing.BoxLayout(day34, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll34.setViewportView(day34);
week5Day6.add(dayScroll34, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week5Day6);
week5Day7.setBorder(UNSELECTED_DAY_BORDER);
week5Day7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
dayPanelMouseReleased(evt);
}
});
week5Day7.setLayout(new java.awt.BorderLayout());
dayLabel35.setFont(domain.utility.currentTheme.fontPlain12);
dayLabel35.setForeground(domain.utility.currentTheme.colorDayInMonthText);
dayLabel35.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
dayLabel35.setText("#");
dayLabel35.setVerticalAlignment(javax.swing.SwingConstants.TOP);
week5Day7.add(dayLabel35, java.awt.BorderLayout.NORTH);
dayScroll35.setBorder(null);
dayScroll35.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dayScroll35.setOpaque(false);
dayScroll35.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
scrollPaneMouseReleased(evt);
}
});
day35.setOpaque(false);
day35.setLayout(new javax.swing.BoxLayout(day35, javax.swing.BoxLayout.PAGE_AXIS));
dayScroll35.setViewportView(day35);
week5Day7.add(dayScroll35, java.awt.BorderLayout.CENTER);
monthDaysPanel.add(week5Day7);
javax.swing.GroupLayout monthViewPanelLayout = new javax.swing.GroupLayout(monthViewPanel);
monthViewPanel.setLayout(monthViewPanelLayout);
monthViewPanelLayout.setHorizontalGroup(
monthViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(monthAndYearPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(daysOfWeekPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 880, Short.MAX_VALUE)
.addComponent(monthDaysPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 880, Short.MAX_VALUE)
);
monthViewPanelLayout.setVerticalGroup(
monthViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(monthViewPanelLayout.createSequentialGroup()
.addComponent(monthAndYearPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(daysOfWeekPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(monthDaysPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 555, Short.MAX_VALUE))
);
middleTabbedPane.addTab(domain.language.getString ("monthView"), monthViewPanel);
middlePanelForTabs.add(middleTabbedPane);
contentPanel.add(middlePanelForTabs, java.awt.BorderLayout.CENTER);
middlePanel.add(contentPanel, "card4");
add(middlePanel, java.awt.BorderLayout.CENTER);
rightPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, domain.language.getString ("userDetails"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, domain.utility.currentTheme.fontBold12));
rightPanel.setName("rightPanel"); // NOI18N
rightPanel.setPreferredSize(new java.awt.Dimension(237, 570));
rightPanel.setLayout(new java.awt.CardLayout());
blankContentPanel.setOpaque(false);
javax.swing.GroupLayout blankContentPanelLayout = new javax.swing.GroupLayout(blankContentPanel);
blankContentPanel.setLayout(blankContentPanelLayout);
blankContentPanelLayout.setHorizontalGroup(
blankContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 221, Short.MAX_VALUE)
);
blankContentPanelLayout.setVerticalGroup(
blankContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 616, Short.MAX_VALUE)
);
rightPanel.add(blankContentPanel, "card7");
noUserDetailsPanel.setOpaque(false);
noStudentAdvisorDetails.setFont(domain.utility.currentTheme.fontBold12);
noStudentAdvisorDetails.setText("<html>" + domain.language.getString ("noUserDetailsString") + "</html>");
editUserDetailsButton.setBackground(domain.utility.currentTheme.colorButtonBackground);
editUserDetailsButton.setFont(domain.utility.currentTheme.fontPlain12);
editUserDetailsButton.setText(domain.language.getString ("editUserDetails"));
editUserDetailsButton.setToolTipText(domain.language.getString ("editUserDetailsToolTip"));
editUserDetailsButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editUserDetailsButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout noUserDetailsPanelLayout = new javax.swing.GroupLayout(noUserDetailsPanel);
noUserDetailsPanel.setLayout(noUserDetailsPanelLayout);
noUserDetailsPanelLayout.setHorizontalGroup(
noUserDetailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(noUserDetailsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(noUserDetailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(noStudentAdvisorDetails, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(editUserDetailsButton))
.addContainerGap())
);
noUserDetailsPanelLayout.setVerticalGroup(
noUserDetailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(noUserDetailsPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(noStudentAdvisorDetails)
.addGap(18, 18, 18)
.addComponent(editUserDetailsButton)
.addContainerGap(550, Short.MAX_VALUE))
);
rightPanel.add(noUserDetailsPanel, "card8");
userDetailsContentPanel.setOpaque(false);
userNameDetailsLabel.setFont(domain.utility.currentTheme.fontBold12);
userNameDetailsLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
userNameDetailsLabel.setText("<<User Name>>");
schoolDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
schoolDetailsLabel.setText("School: <<text>>");
idNumberDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
idNumberDetailsLabel.setText("ID number: <<text>>");
boxNumberDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
boxNumberDetailsLabel.setText("Box number: <<text>>");
advisorDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
advisorDetailsLabel.setText("Advisor: <<text>>");
officeHoursDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
officeHoursDetailsLabel.setText("Office hours: <<text>>");
officeLocationDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
officeLocationDetailsLabel.setText("Office location: <<text>>");
contactAdvisorButton.setBackground(domain.utility.currentTheme.colorButtonBackground);
contactAdvisorButton.setFont(domain.utility.currentTheme.fontPlain12);
contactAdvisorButton.setText(domain.language.getString ("contactAdvisor"));
contactAdvisorButton.setToolTipText(domain.language.getString ("contactAdvisorToolTip"));
contactAdvisorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
contactAdvisorButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout userDetailsContentPanelLayout = new javax.swing.GroupLayout(userDetailsContentPanel);
userDetailsContentPanel.setLayout(userDetailsContentPanelLayout);
userDetailsContentPanelLayout.setHorizontalGroup(
userDetailsContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(userDetailsContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(userDetailsContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(userNameDetailsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 205, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(schoolDetailsLabel)
.addComponent(idNumberDetailsLabel)
.addComponent(boxNumberDetailsLabel)
.addComponent(advisorDetailsLabel)
.addComponent(officeHoursDetailsLabel)
.addComponent(officeLocationDetailsLabel)
.addComponent(contactAdvisorButton))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
userDetailsContentPanelLayout.setVerticalGroup(
userDetailsContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(userDetailsContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(userNameDetailsLabel)
.addGap(18, 18, 18)
.addComponent(schoolDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(idNumberDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(boxNumberDetailsLabel)
.addGap(18, 18, 18)
.addComponent(advisorDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(officeHoursDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(officeLocationDetailsLabel)
.addGap(18, 18, 18)
.addComponent(contactAdvisorButton)
.addContainerGap(406, Short.MAX_VALUE))
);
rightPanel.add(userDetailsContentPanel, "card4");
termContentPanel.setOpaque(false);
termNameDetailsLabel.setFont(domain.utility.currentTheme.fontBold12);
termNameDetailsLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
termNameDetailsLabel.setText("<<Term Name>>");
termCoursesDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termCoursesDetailsLabel.setText("Courses: <<count>>");
termAvgGradeDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termAvgGradeDetailsLabel.setText("Average grade: <<grade>>");
termTextbooksDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termTextbooksDetailsLabel.setText("Textbooks: <<count>>");
termStartDateDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termStartDateDetailsLabel.setText("Start date: <<date>>");
termEndDateDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termEndDateDetailsLabel.setText("End date: <<date>>");
termTypesDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termTypesDetailsLabel.setText("Types: <<count>>");
termTotalAssignmentsDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termTotalAssignmentsDetailsLabel.setText("Total assignments: <<count>>");
termUnfinishedDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termUnfinishedDetailsLabel.setText(" Unfinished: <<count>>");
termCreditsDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
termCreditsDetailsLabel.setText("Credits: <<count>>");
javax.swing.GroupLayout termContentPanelLayout = new javax.swing.GroupLayout(termContentPanel);
termContentPanel.setLayout(termContentPanelLayout);
termContentPanelLayout.setHorizontalGroup(
termContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(termContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(termContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(termNameDetailsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 205, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(termStartDateDetailsLabel)
.addComponent(termEndDateDetailsLabel)
.addComponent(termCoursesDetailsLabel)
.addComponent(termCreditsDetailsLabel)
.addComponent(termTotalAssignmentsDetailsLabel)
.addComponent(termAvgGradeDetailsLabel)
.addComponent(termTypesDetailsLabel)
.addComponent(termTextbooksDetailsLabel)
.addComponent(termUnfinishedDetailsLabel))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
termContentPanelLayout.setVerticalGroup(
termContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(termContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(termNameDetailsLabel)
.addGap(18, 18, 18)
.addComponent(termStartDateDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(termEndDateDetailsLabel)
.addGap(18, 18, 18)
.addComponent(termCoursesDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(termCreditsDetailsLabel)
.addGap(18, 18, 18)
.addComponent(termTotalAssignmentsDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(termUnfinishedDetailsLabel)
.addGap(17, 17, 17)
.addComponent(termAvgGradeDetailsLabel)
.addGap(18, 18, 18)
.addComponent(termTypesDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(termTextbooksDetailsLabel)
.addContainerGap(352, Short.MAX_VALUE))
);
rightPanel.add(termContentPanel, "card6");
courseContentPanel.setOpaque(false);
courseNameDetailsLabel.setFont(domain.utility.currentTheme.fontBold12);
courseNameDetailsLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
courseNameDetailsLabel.setText("<<Course Name>>");
courseStartDateDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseStartDateDetailsLabel.setText("Start date: <<date>>");
courseEndDateDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseEndDateDetailsLabel.setText("End date: <<date>>");
courseStartTimeDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseStartTimeDetailsLabel.setText("Start time: <<time>>");
courseEndTimeDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseEndTimeDetailsLabel.setText("End time: <<time>>");
courseCreditsDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseCreditsDetailsLabel.setText("Credits: <<num>>");
courseRoomDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseRoomDetailsLabel.setText("Room: <<num>>");
courseTotalAssignmentsDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseTotalAssignmentsDetailsLabel.setText("Total assignments: <<count>>");
courseUnfinishedDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseUnfinishedDetailsLabel.setText(" Unfinished: <<count>>");
courseCurrentGradeDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseCurrentGradeDetailsLabel.setText("Current grade: <<grade>>");
courseTypesDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseTypesDetailsLabel.setText("Types: <<count>>");
courseTextbooksDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseTextbooksDetailsLabel.setText("Textbooks: <<count>>");
courseDaysDetailsLabel.setFont(domain.utility.currentTheme.fontPlain12);
courseDaysDetailsLabel.setText("Day(s): <<days>>");
courseDaysDetailsLabel.setPreferredSize(new java.awt.Dimension(106, 32));
javax.swing.GroupLayout courseContentPanelLayout = new javax.swing.GroupLayout(courseContentPanel);
courseContentPanel.setLayout(courseContentPanelLayout);
courseContentPanelLayout.setHorizontalGroup(
courseContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(courseContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(courseContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(courseContentPanelLayout.createSequentialGroup()
.addGroup(courseContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(courseNameDetailsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 205, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(courseCreditsDetailsLabel)
.addComponent(courseRoomDetailsLabel)
.addComponent(courseStartDateDetailsLabel)
.addComponent(courseEndDateDetailsLabel)
.addComponent(courseStartTimeDetailsLabel)
.addComponent(courseEndTimeDetailsLabel))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(courseContentPanelLayout.createSequentialGroup()
.addComponent(courseDaysDetailsLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 202, Short.MAX_VALUE)
.addGap(13, 13, 13))
.addGroup(courseContentPanelLayout.createSequentialGroup()
.addGroup(courseContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(courseTotalAssignmentsDetailsLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(courseCurrentGradeDetailsLabel)
.addComponent(courseTypesDetailsLabel)
.addComponent(courseTextbooksDetailsLabel)
.addComponent(courseUnfinishedDetailsLabel))
.addContainerGap(59, Short.MAX_VALUE))))
);
courseContentPanelLayout.setVerticalGroup(
courseContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(courseContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(courseNameDetailsLabel)
.addGap(18, 18, 18)
.addComponent(courseCreditsDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(courseRoomDetailsLabel)
.addGap(18, 18, 18)
.addComponent(courseStartDateDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(courseEndDateDetailsLabel)
.addGap(18, 18, 18)
.addComponent(courseStartTimeDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(courseEndTimeDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(courseDaysDetailsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(courseTotalAssignmentsDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(courseUnfinishedDetailsLabel)
.addGap(17, 17, 17)
.addComponent(courseCurrentGradeDetailsLabel)
.addGap(18, 18, 18)
.addComponent(courseTypesDetailsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(courseTextbooksDetailsLabel)
.addContainerGap(274, Short.MAX_VALUE))
);
rightPanel.add(courseContentPanel, "card5");
assignmentContentPanel.setOpaque(false);
assignmentNameTextField.setFont(domain.utility.currentTheme.fontPlain12);
assignmentNameTextField.setToolTipText(domain.language.getString ("assignmentNameToolTip"));
assignmentNameTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
assignmentNameTextFieldActionPerformed(evt);
}
});
assignmentNameTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
textFieldFocusGained(evt);
}
public void focusLost(java.awt.event.FocusEvent evt) {
assignmentNameTextFieldFocusLost(evt);
}
});
assignmentNameTextField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
textFieldKeyPressed(evt);
}
});
courseLabel.setFont(domain.utility.currentTheme.fontBold11);
courseLabel.setText(domain.language.getString ("course") + ":");
textbookLabel.setFont(domain.utility.currentTheme.fontBold11);
textbookLabel.setText(domain.language.getString ("textbook") + ":");
typeLabel.setFont(domain.utility.currentTheme.fontBold11);
typeLabel.setText(domain.language.getString ("type") + ":");
priorityLabel.setFont(domain.utility.currentTheme.fontBold11);
priorityLabel.setText(domain.language.getString ("priority") + ":");
detailsTypeComboBox.setBackground(domain.utility.currentTheme.colorButtonBackground);
detailsTypeComboBox.setFont(domain.utility.currentTheme.fontPlain12);
detailsTypeComboBox.setModel(typeComboModel);
detailsTypeComboBox.setToolTipText(domain.language.getString ("assnTypeToolTip"));
detailsTypeComboBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
detailsTypeComboBoxItemStateChanged(evt);
}
});
detailsCourseComboBox.setBackground(domain.utility.currentTheme.colorButtonBackground);
detailsCourseComboBox.setFont(domain.utility.currentTheme.fontPlain12);
detailsCourseComboBox.setModel(courseComboModel);
detailsCourseComboBox.setToolTipText(domain.language.getString ("assnCourseToolTip"));
detailsCourseComboBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
detailsCourseComboBoxItemStateChanged(evt);
}
});
detailsTextbookComboBox.setBackground(domain.utility.currentTheme.colorButtonBackground);
detailsTextbookComboBox.setFont(domain.utility.currentTheme.fontPlain12);
detailsTextbookComboBox.setModel(textbookComboModel);
detailsTextbookComboBox.setToolTipText(domain.language.getString ("assnTextbookToolTip"));
detailsTextbookComboBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
detailsTextbookComboBoxItemStateChanged(evt);
}
});
gradeLabel.setFont(domain.utility.currentTheme.fontBold11);
gradeLabel.setText(domain.language.getString ("grade") + ":");
gradeTextField.setFont(domain.utility.currentTheme.fontPlain12);
gradeTextField.setToolTipText(domain.language.getString ("assnGradeToolTip"));
gradeTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
gradeTextFieldActionPerformed(evt);
}
});
gradeTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
textFieldFocusGained(evt);
}
public void focusLost(java.awt.event.FocusEvent evt) {
gradeTextFieldFocusLost(evt);
}
});
gradeTextField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
textFieldKeyPressed(evt);
}
});
completedCheckBox.setFont(domain.utility.currentTheme.fontBold11);
completedCheckBox.setText(domain.language.getString ("completed"));
completedCheckBox.setToolTipText(domain.language.getString ("assnCompletedToolTip"));
completedCheckBox.setOpaque(false);
completedCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
completedCheckBoxActionPerformed(evt);
}
});
commentsLabel.setFont(domain.utility.currentTheme.fontBold11);
commentsLabel.setText(domain.language.getString ("comments") + ":");
commentsScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
commentsTextArea.setColumns(17);
commentsTextArea.setFont(domain.utility.currentTheme.fontPlain12);
commentsTextArea.setLineWrap(true);
commentsTextArea.setRows(4);
commentsTextArea.setTabSize(4);
commentsTextArea.setToolTipText(domain.language.getString ("assnCommentsToolTip"));
commentsTextArea.setWrapStyleWord(true);
commentsTextArea.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
commentsTextAreaFocusGained(evt);
}
public void focusLost(java.awt.event.FocusEvent evt) {
commentsTextAreaFocusLost(evt);
}
});
commentsTextArea.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
commentsTextAreaKeyPressed(evt);
}
});
commentsScrollPane.setViewportView(commentsTextArea);
prioritySlider.setFont(new java.awt.Font("Verdana", 0, 11));
prioritySlider.setMajorTickSpacing(1);
prioritySlider.setMaximum(5);
prioritySlider.setMinimum(1);
prioritySlider.setMinorTickSpacing(1);
prioritySlider.setSnapToTicks(true);
prioritySlider.setToolTipText(domain.language.getString ("assnPriorityToolTip"));
prioritySlider.setOpaque(false);
prioritySlider.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
prioritySliderStateChanged(evt);
}
});
dueDateChooser.setToolTipText(domain.language.getString ("assignmentDueDateToolTip"));
dueDateChooser.setFont(domain.utility.currentTheme.fontPlain12);
dueDateChooser.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
dueDateChooserPropertyChange(evt);
}
});
dueHrChooser.setToolTipText(domain.language.getString ("assnHrDueToolTip"));
dueHrChooser.setEditor(new javax.swing.JSpinner.DateEditor(dueHrChooser, "h"));
dueHrChooser.setFont(domain.utility.currentTheme.fontPlain12);
dueHrChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
dueHrChooserStateChanged(evt);
}
});
dueMinChooser.setToolTipText(domain.language.getString ("assnMinDueToolTip"));
dueMinChooser.setEditor(new javax.swing.JSpinner.DateEditor(dueMinChooser, "mm"));
dueMinChooser.setFont(domain.utility.currentTheme.fontPlain12);
dueMinChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
dueMinChooserStateChanged(evt);
}
});
dueMChooser.setEditor(new javax.swing.JSpinner.DateEditor(dueMChooser, "a"));
dueMChooser.setFont(domain.utility.currentTheme.fontPlain12);
dueMChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
dueMChooserStateChanged(evt);
}
});
assnColon.setFont(domain.utility.currentTheme.fontBold12);
assnColon.setText(":");
javax.swing.GroupLayout assignmentContentPanelLayout = new javax.swing.GroupLayout(assignmentContentPanel);
assignmentContentPanel.setLayout(assignmentContentPanelLayout);
assignmentContentPanelLayout.setHorizontalGroup(
assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, assignmentContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(commentsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(assignmentsSeparator3, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(completedCheckBox)
.addGroup(assignmentContentPanelLayout.createSequentialGroup()
.addComponent(courseLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(detailsCourseComboBox, 0, 131, Short.MAX_VALUE))
.addGroup(assignmentContentPanelLayout.createSequentialGroup()
.addComponent(textbookLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(detailsTextbookComboBox, 0, 131, Short.MAX_VALUE))
.addComponent(assignmentsSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(assignmentsSeparator2, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addGroup(assignmentContentPanelLayout.createSequentialGroup()
.addComponent(priorityLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(prioritySlider, javax.swing.GroupLayout.DEFAULT_SIZE, 131, Short.MAX_VALUE))
.addGroup(assignmentContentPanelLayout.createSequentialGroup()
.addComponent(typeLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(detailsTypeComboBox, 0, 131, Short.MAX_VALUE))
.addGroup(assignmentContentPanelLayout.createSequentialGroup()
.addComponent(gradeLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(gradeTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 131, Short.MAX_VALUE))
.addComponent(commentsLabel)
.addComponent(dueDateChooser, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(assignmentNameTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addGroup(assignmentContentPanelLayout.createSequentialGroup()
.addComponent(dueHrChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(assnColon)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(dueMinChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(dueMChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
assignmentContentPanelLayout.setVerticalGroup(
assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(assignmentContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(assignmentNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(dueDateChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(dueHrChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(assnColon)
.addComponent(dueMinChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(dueMChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(assignmentsSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(courseLabel)
.addComponent(detailsCourseComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(textbookLabel)
.addComponent(detailsTextbookComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(assignmentsSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(typeLabel)
.addComponent(detailsTypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(priorityLabel)
.addComponent(prioritySlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(completedCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(assignmentContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(gradeLabel)
.addComponent(gradeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(assignmentsSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(commentsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(commentsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 270, Short.MAX_VALUE)
.addContainerGap())
);
rightPanel.add(assignmentContentPanel, "card2");
eventContentPanel.setOpaque(false);
eventNameTextField.setFont(domain.utility.currentTheme.fontPlain12);
eventNameTextField.setToolTipText(domain.language.getString ("eventNameToolTip"));
eventNameTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
eventNameTextFieldActionPerformed(evt);
}
});
eventNameTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
textFieldFocusGained(evt);
}
public void focusLost(java.awt.event.FocusEvent evt) {
eventNameTextFieldFocusLost(evt);
}
});
eventNameTextField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
textFieldKeyPressed(evt);
}
});
eventDateChooser.setToolTipText(domain.language.getString ("eventDueDateToolTip"));
eventDateChooser.setFont(domain.utility.currentTheme.fontPlain12);
eventDateChooser.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
eventDateChooserPropertyChange(evt);
}
});
commentsScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
descriptionTextArea.setColumns(17);
descriptionTextArea.setFont(domain.utility.currentTheme.fontPlain12);
descriptionTextArea.setLineWrap(true);
descriptionTextArea.setRows(4);
descriptionTextArea.setTabSize(4);
descriptionTextArea.setToolTipText(domain.language.getString ("eventDescToolTip"));
descriptionTextArea.setWrapStyleWord(true);
descriptionTextArea.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
commentsTextAreaFocusGained(evt);
}
public void focusLost(java.awt.event.FocusEvent evt) {
descriptionTextAreaFocusLost(evt);
}
});
descriptionTextArea.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
descriptionTextAreaKeyPressed(evt);
}
});
commentsScrollPane1.setViewportView(descriptionTextArea);
descriptionLabel.setFont(domain.utility.currentTheme.fontBold11);
descriptionLabel.setText(domain.language.getString ("description") + ":");
allDayEventCheckBox.setFont(domain.utility.currentTheme.fontBold11);
allDayEventCheckBox.setText(domain.language.getString ("allDay"));
allDayEventCheckBox.setToolTipText(domain.language.getString ("allDayToolTip"));
allDayEventCheckBox.setOpaque(false);
allDayEventCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
allDayEventCheckBoxActionPerformed(evt);
}
});
locationLabel.setFont(domain.utility.currentTheme.fontBold11);
locationLabel.setText(domain.language.getString ("location") + ":");
locationTextField.setFont(domain.utility.currentTheme.fontPlain12);
locationTextField.setToolTipText(domain.language.getString ("eventLocationToolTip"));
locationTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
locationTextFieldActionPerformed(evt);
}
});
locationTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
textFieldFocusGained(evt);
}
public void focusLost(java.awt.event.FocusEvent evt) {
locationTextFieldFocusLost(evt);
}
});
locationTextField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
textFieldKeyPressed(evt);
}
});
categoryComboBox.setBackground(domain.utility.currentTheme.colorButtonBackground);
categoryComboBox.setFont(domain.utility.currentTheme.fontPlain12);
categoryComboBox.setModel(categoryComboModel);
categoryComboBox.setToolTipText(domain.language.getString ("eventCategoryToolTip"));
categoryComboBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
categoryComboBoxItemStateChanged(evt);
}
});
jLabel3.setFont(domain.utility.currentTheme.fontBold11);
jLabel3.setText(domain.language.getString ("category") + ":");
eventRepeatButton.setBackground(domain.utility.currentTheme.colorButtonBackground);
eventRepeatButton.setFont(domain.utility.currentTheme.fontPlain12);
eventRepeatButton.setText(domain.language.getString ("repeat"));
eventRepeatButton.setToolTipText(domain.language.getString ("repeatButtonToolTip"));
eventRepeatButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
eventRepeatButtonActionPerformed(evt);
}
});
eventStartHrChooser.setModel(new javax.swing.SpinnerDateModel());
eventStartHrChooser.setToolTipText(domain.language.getString ("startHrToolTip"));
eventStartHrChooser.setEditor(new javax.swing.JSpinner.DateEditor(eventStartHrChooser, "h"));
eventStartHrChooser.setFont(domain.utility.currentTheme.fontPlain12);
eventStartHrChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
eventStartHrChooserStateChanged(evt);
}
});
eventEndHrChooser.setToolTipText(domain.language.getString ("endHrToolTip"));
eventEndHrChooser.setEditor(new javax.swing.JSpinner.DateEditor(eventEndHrChooser, "h"));
eventEndHrChooser.setFont(domain.utility.currentTheme.fontPlain12);
eventEndHrChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
eventEndHrChooserStateChanged(evt);
}
});
eventStartMinChooser.setToolTipText(domain.language.getString ("startMinToolTip"));
eventStartMinChooser.setEditor(new javax.swing.JSpinner.DateEditor(eventStartMinChooser, "mm"));
eventStartMinChooser.setFont(domain.utility.currentTheme.fontPlain12);
eventStartMinChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
eventStartMinChooserStateChanged(evt);
}
});
eventStartMChooser.setEditor(new javax.swing.JSpinner.DateEditor(eventStartMChooser, "a"));
eventStartMChooser.setFont(domain.utility.currentTheme.fontPlain12);
eventStartMChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
eventStartMChooserStateChanged(evt);
}
});
eventEndMinChooser.setToolTipText(domain.language.getString ("endMinToolTip"));
eventEndMinChooser.setEditor(new javax.swing.JSpinner.DateEditor(eventEndMinChooser, "mm"));
eventEndMinChooser.setFont(domain.utility.currentTheme.fontPlain12);
eventEndMinChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
eventEndMinChooserStateChanged(evt);
}
});
eventEndMChooser.setEditor(new javax.swing.JSpinner.DateEditor(eventEndMChooser, "a"));
eventEndMChooser.setFont(domain.utility.currentTheme.fontPlain12);
eventEndMChooser.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
eventEndMChooserStateChanged(evt);
}
});
eventColon1.setFont(domain.utility.currentTheme.fontBold12);
eventColon1.setText(":");
eventColon2.setFont(domain.utility.currentTheme.fontBold12);
eventColon2.setText(":");
googleMapsButton.setBackground(domain.utility.currentTheme.colorButtonBackground);
googleMapsButton.setFont(domain.utility.currentTheme.fontPlain12);
googleMapsButton.setText(domain.language.getString ("googleMaps"));
googleMapsButton.setToolTipText(domain.language.getString ("eventLocationButtonToolTip"));
googleMapsButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
googleMapsButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout eventContentPanelLayout = new javax.swing.GroupLayout(eventContentPanel);
eventContentPanel.setLayout(eventContentPanelLayout);
eventContentPanelLayout.setHorizontalGroup(
eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(eventContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(eventsSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addGroup(eventContentPanelLayout.createSequentialGroup()
.addComponent(allDayEventCheckBox, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 27, Short.MAX_VALUE)
.addComponent(eventRepeatButton))
.addGroup(eventContentPanelLayout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(categoryComboBox, 0, 131, Short.MAX_VALUE))
.addGroup(eventContentPanelLayout.createSequentialGroup()
.addComponent(locationLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 36, Short.MAX_VALUE)
.addComponent(googleMapsButton))
.addComponent(descriptionLabel)
.addGroup(eventContentPanelLayout.createSequentialGroup()
.addGroup(eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(eventStartHrChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(eventEndHrChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(eventContentPanelLayout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(eventColon2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(eventEndMinChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(eventEndMChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, eventContentPanelLayout.createSequentialGroup()
.addGap(1, 1, 1)
.addComponent(eventColon1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(eventStartMinChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(eventStartMChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addComponent(eventDateChooser, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(eventNameTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(commentsScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(locationTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addComponent(eventsSeparator2, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE))
.addContainerGap())
);
eventContentPanelLayout.setVerticalGroup(
eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(eventContentPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(eventNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(eventDateChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(eventStartHrChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(eventColon1)
.addComponent(eventStartMinChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(eventStartMChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(eventEndHrChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(eventColon2)
.addComponent(eventEndMinChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(eventEndMChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(allDayEventCheckBox)
.addComponent(eventRepeatButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(eventsSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(categoryComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addGap(18, 18, 18)
.addGroup(eventContentPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(locationLabel)
.addComponent(googleMapsButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(locationTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(eventsSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(descriptionLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(commentsScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE)
.addContainerGap())
);
rightPanel.add(eventContentPanel, "card3");
add(rightPanel, java.awt.BorderLayout.EAST);
statusPanel.setName("statusPanel"); // NOI18N
statusPanel.setPreferredSize(new java.awt.Dimension(1414, 27));
statusPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 20, 2));
progressBar.setFont(domain.utility.currentTheme.fontPlain10);
progressBar.setIndeterminate(true);
progressBar.setName("progressBar"); // NOI18N
progressBar.setOpaque(false);
progressBar.setPreferredSize(new java.awt.Dimension(150, 23));
progressBar.setString(domain.language.getString ("loading") + "...");
progressBar.setStringPainted(true);
statusPanel.add(progressBar);
add(statusPanel, java.awt.BorderLayout.SOUTH);
}// </editor-fold>//GEN-END:initComponents
private void addTermMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addTermMenuItemActionPerformed
termsAndCoursesDialog.goViewTermsAndCourses ();
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (0);
domain.addTerm ();
}//GEN-LAST:event_addTermMenuItemActionPerformed
private void addCourseMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addCourseMenuItemActionPerformed
termsAndCoursesDialog.goViewTermsAndCourses ();
domain.termsAndCoursesOpening.push (true);
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (1);
domain.termsAndCoursesOpening.pop ();
domain.addCourse ();
}//GEN-LAST:event_addCourseMenuItemActionPerformed
private void addAssignmentMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addAssignmentMenuItemActionPerformed
domain.addAssignment ();
}//GEN-LAST:event_addAssignmentMenuItemActionPerformed
private void assignmentNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_assignmentNameTextFieldActionPerformed
domain.setAssignmentName (domain.currentIndexFromVector);
if (evt != null && dontReselectName.empty ())
{
assignmentNameTextField.requestFocus ();
assignmentNameTextField.selectAll ();
}
}//GEN-LAST:event_assignmentNameTextFieldActionPerformed
private void assignmentNameTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_assignmentNameTextFieldFocusLost
assignmentNameTextFieldActionPerformed (null);
}//GEN-LAST:event_assignmentNameTextFieldFocusLost
protected void completedCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_completedCheckBoxActionPerformed
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
ListItem item = domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
if (item.isAssignment ())
{
Assignment assignment = (Assignment) item;
assignment.setIsDone (completedCheckBox.isSelected ());
refreshAssignmentsRowAt (domain.currentIndexFromVector);
assignment.refreshText ();
assignment.getCourse ().markChanged ();
filter (true);
refreshBusyDays ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = days[Integer.parseInt (assignment.getDueDate ().split ("/")[1]) - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
if (domain.utility.preferences.sortIndex == 0)
{
scrollToItemOrToday (assignment);
}
}
}
if (completedCheckBox.isSelected () && !gradeLabel.isVisible ())
{
gradeLabel.setVisible (true);
gradeTextField.setVisible (true);
gradeTextField.requestFocus ();
}
else
{
if (!completedCheckBox.isSelected () && gradeLabel.isVisible ())
{
gradeLabel.setVisible (false);
gradeTextField.setVisible (false);
commentsTextArea.requestFocus ();
}
}
}//GEN-LAST:event_completedCheckBoxActionPerformed
private void gradeTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_gradeTextFieldActionPerformed
domain.setAssignmentGrade (domain.currentIndexFromVector);
if (evt != null)
{
gradeTextField.requestFocus ();
gradeTextField.selectAll ();
}
}//GEN-LAST:event_gradeTextFieldActionPerformed
private void gradeTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_gradeTextFieldFocusLost
if (assignmentContentPanel.isVisible ())
{
gradeTextFieldActionPerformed (null);
}
}//GEN-LAST:event_gradeTextFieldFocusLost
private void commentsTextAreaFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_commentsTextAreaFocusLost
if (assignmentContentPanel.isVisible ())
{
domain.setAssignmentComments (domain.currentIndexFromVector);
}
}//GEN-LAST:event_commentsTextAreaFocusLost
private synchronized void commentsTextAreaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_commentsTextAreaKeyPressed
((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getCourse ().markChanged ();
}//GEN-LAST:event_commentsTextAreaKeyPressed
private synchronized void prioritySliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_prioritySliderStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
assignment.setPriority (prioritySlider.getValue ());
assignment.refreshText ();
refreshAssignmentsRowAt (domain.currentIndexFromVector);
assignment.getCourse ().markChanged ();
}
}//GEN-LAST:event_prioritySliderStateChanged
private void detailsCourseComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_detailsCourseComboBoxItemStateChanged
if (detailsCourseComboBox.getSelectedIndex () != -1 && domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
Course oldCourse = assignment.getCourse ();
oldCourse.markChanged ();
oldCourse.removeAssignment (assignment);
assignment.setCourse (assignment.getCourse ().getTerm ().getCourse (detailsCourseComboBox.getSelectedIndex ()));
assignment.getCourse ().addAssignment (assignment);
assignment.refreshText ();
refreshAssignmentsRowAt (domain.currentIndexFromVector);
if ((assignment.getDueTime (0) + assignment.getDueTime (1) + assignment.getDueTime (2)).equals ((oldCourse.getStartTime (0) + oldCourse.getStartTime (1) + oldCourse.getStartTime (2))))
{
try
{
dueHrChooser.setValue (Domain.HR_FORMAT.parse (assignment.getCourse ().getStartTime (0)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
dueMinChooser.setValue (Domain.MIN_FORMAT.parse (assignment.getCourse ().getStartTime (1)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
dueMChooser.setValue (Domain.M_FORMAT.parse (assignment.getCourse ().getStartTime (2)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
domain.utility.loadDetailsTextbookBox ();
domain.utility.loadDetailsTypeBox ();
assignment.getCourse ().markChanged ();
if (getSelectedCourseIndex () != -1)
{
// setting the selection path calls filters and also saves
termTree.setSelectionPath (new TreePath (assignment.getCourse ().getPath ()));
}
else
{
filter (true);
}
assignmentsTable.setSelectedRow (assignment.getUniqueID (), 6);
if (domain.utility.preferences.sortIndex == 3)
{
scrollToItemOrToday ((ListItem) assignment);
}
}
}//GEN-LAST:event_detailsCourseComboBoxItemStateChanged
private synchronized void detailsTextbookComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_detailsTextbookComboBoxItemStateChanged
if (detailsTextbookComboBox.getSelectedIndex () != -1 && detailsTextbookComboBox.getSelectedIndex () != 0
&& domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
assignment.setTextbook (assignment.getCourse ().getTextbook (detailsTextbookComboBox.getSelectedIndex () - 1));
assignment.getCourse ().markChanged ();
}
else
{
if (domain.assignmentOrEventLoading.empty ())
{
((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).setTextbook (null);
((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getCourse ().markChanged ();
}
}
}//GEN-LAST:event_detailsTextbookComboBoxItemStateChanged
private synchronized void detailsTypeComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_detailsTypeComboBoxItemStateChanged
if (detailsTypeComboBox.getSelectedIndex () != -1 && detailsTypeComboBox.getSelectedIndex () != 0
&& domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
assignment.setType (assignment.getCourse ().getType (detailsTypeComboBox.getSelectedIndex () - 1));
refreshAssignmentsRowAt (domain.currentIndexFromVector);
assignment.getCourse ().markChanged ();
filter (true);
if (domain.utility.preferences.sortIndex == 2)
{
scrollToItemOrToday ((ListItem) assignment);
}
}
else
{
if (domain.assignmentOrEventLoading.empty ())
{
((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).setType (null);
refreshAssignmentsRowAt (domain.currentIndexFromVector);
((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getCourse ().markChanged ();
}
}
}//GEN-LAST:event_detailsTypeComboBoxItemStateChanged
private void textFieldFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_textFieldFocusGained
((JTextField) evt.getComponent ()).selectAll ();
}//GEN-LAST:event_textFieldFocusGained
private void commentsTextAreaFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_commentsTextAreaFocusGained
((JTextArea) evt.getComponent ()).selectAll ();
}//GEN-LAST:event_commentsTextAreaFocusGained
private void dueDateChooserPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_dueDateChooserPropertyChange
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty () && !quitting)
{
checkAssignmentOrEventChanges (domain.currentIndexFromVector);
domain.assignmentOrEventLoading.push (true);
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
try
{
String dueDate = Domain.DATE_FORMAT.format (dueDateChooser.getDate ());
if (middleTabbedPane.getSelectedIndex () == 1)
{
assignment.getParent ().remove (assignment);
}
assignment.setDueDate (dueDate);
Calendar cal = Calendar.getInstance ();
cal.setTime (dueDateChooser.getDate ());
assignment.refreshText ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
try
{
daysAssignmentsAndEvents[Integer.parseInt (dueDate.split ("/")[1]) - 1].add (assignment);
}
catch (ArrayIndexOutOfBoundsException ex)
{
}
}
// adjust the Calendar View to the new month and year to display
miniCalendar.setDate (Domain.DATE_FORMAT.parse (assignment.getDueDate ()));
refreshAssignmentsRowAt (domain.currentIndexFromVector);
assignment.getCourse ().markChanged ();
filter (true);
refreshBusyDays ();
if (domain.utility.preferences.sortIndex == 4)
{
scrollToItemOrToday ((ListItem) assignment);
}
}
catch (NullPointerException ex)
{
try
{
dueDateChooser.setDate (Domain.DATE_FORMAT.parse (assignment.getDueDate ()));
}
catch (ParseException innerEx)
{
Domain.LOGGER.add (ex);
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
domain.assignmentOrEventLoading.pop ();
}
}//GEN-LAST:event_dueDateChooserPropertyChange
private void miniCalendarPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_miniCalendarPropertyChange
if ((evt.getPropertyName ().contains ("calendar") || evt.getPropertyName ().contains ("date")) && !initLoading && !quitting && domain.assignmentOrEventLoading.empty ())
{
String[] oldDateString;
String[] newDateString;
if (evt.getPropertyName ().contains ("calendar"))
{
oldDateString = Domain.DATE_FORMAT.format (((GregorianCalendar) evt.getOldValue ()).getTime ()).split ("/");
newDateString = Domain.DATE_FORMAT.format (((GregorianCalendar) evt.getNewValue ()).getTime ()).split ("/");
}
else
{
oldDateString = Domain.DATE_FORMAT.format (((Date) evt.getOldValue ()).getTime ()).split ("/");
newDateString = Domain.DATE_FORMAT.format (((Date) evt.getNewValue ()).getTime ()).split ("/");
}
String oldMonth = oldDateString[0];
String newMonth = newDateString[0];
String oldYear = oldDateString[2];
String newYear = newDateString[2];
if (middleTabbedPane.getSelectedIndex () == 0)
{
if (oldMonth.equals (newMonth) && oldYear.equals (newYear))
{
String selectedDate = Domain.DATE_FORMAT.format (miniCalendar.getDate ());
for (int i = 0; i < domain.utility.assignmentsAndEvents.size (); ++i)
{
if (selectedDate.equals (domain.utility.assignmentsAndEvents.get (i).getDueDate ()))
{
assignmentsTable.setSelectedRow (i);
}
}
}
}
else
{
if (!oldMonth.equals (newMonth) || !oldYear.equals (newYear))
{
loadCalendarView (true);
}
String[] split = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = days[Integer.parseInt (split[1]) - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
// if the new month is not within the current selected term, switch the selected term
// so proper assignments will be shown
try
{
if (getSelectedTermIndex () != -1)
{
Date newDate;
if (evt.getPropertyName ().contains ("calendar"))
{
newDate = Domain.MONTH_YEAR_FORMAT.parse (Domain.MONTH_YEAR_FORMAT.format (((GregorianCalendar) evt.getNewValue ()).getTime ()));
}
else
{
newDate = Domain.MONTH_YEAR_FORMAT.parse (Domain.MONTH_YEAR_FORMAT.format (((Date) evt.getNewValue ()).getTime ()));
}
Term currentTerm = domain.utility.terms.get (getSelectedTermIndex ());
Date startDate = Domain.MONTH_YEAR_FORMAT.parse (currentTerm.getStartDate ().split ("/")[0] + "/" + currentTerm.getStartDate ().split ("/")[2]);
Date endDate = Domain.MONTH_YEAR_FORMAT.parse (currentTerm.getEndDate ().split ("/")[0] + "/" + currentTerm.getEndDate ().split ("/")[2]);
if (startDate.after (newDate) || endDate.before (newDate))
{
smartSelectCurrentTerm (newDate);
}
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
refreshBusyDays ();
}//GEN-LAST:event_miniCalendarPropertyChange
private void editTermEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editTermEditMenuItemActionPerformed
goEditTerm ();
}//GEN-LAST:event_editTermEditMenuItemActionPerformed
private void removeTermEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeTermEditMenuItemActionPerformed
goRemoveTerm ();
}//GEN-LAST:event_removeTermEditMenuItemActionPerformed
private void editCourseEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editCourseEditMenuItemActionPerformed
goEditCourse ();
}//GEN-LAST:event_editCourseEditMenuItemActionPerformed
private void removeCourseEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeCourseEditMenuItemActionPerformed
goRemoveCourse ();
}//GEN-LAST:event_removeCourseEditMenuItemActionPerformed
private void removeEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeEditMenuItemActionPerformed
if (domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).isAssignment ())
{
goRemoveAssignment ();
}
else
{
goRemoveEvent (null);
}
}//GEN-LAST:event_removeEditMenuItemActionPerformed
private synchronized void middleTabbedPaneStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_middleTabbedPaneStateChanged
if (!initLoading || forceViewLoad)
{
if (middleTabbedPane.getSelectedIndex () == 0)
{
int index = assignmentsTable.getSelectedRow ();
domain.assignmentOrEventLoading.push (true);
domain.utility.loadAssignmentsTable (true);
assignmentsTable.setSelectedRow (index);
domain.assignmentOrEventLoading.pop ();
}
else
{
loadCalendarView (true);
}
domain.utility.preferences.middleTabbedPaneIndex = middleTabbedPane.getSelectedIndex ();
domain.needsPreferencesSave = true;
}
}//GEN-LAST:event_middleTabbedPaneStateChanged
private void addAssignmentTermEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addAssignmentTermEditMenuItemActionPerformed
goAddAssignment ();
}//GEN-LAST:event_addAssignmentTermEditMenuItemActionPerformed
private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded
Thread load = new Thread (new Runnable ()
{
@Override
public void run()
{
try
{
initMyComponents ();
// start the worker thread and request a load
domain.workerThread.start ();
domain.utility.load ();
domain.utility.loadTermTree ();
domain.utility.loadAssignmentsTable (true);
findTermWithin ();
syncWithPreferences (false);
filter (true);
assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).setHeaderValue ("<html><b>" + assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).getHeaderValue () + "</b></html>");
expandTermTree (new TreeExpansionEvent (this, null));
refreshBusyDays ();
initButtons ();
scrollToItemOrToday (null);
contentPanel.setVisible (true);
loadingPanel.setVisible (false);
domain.setProgressState (progressBar, false, "", false, -1);
initLoading = false;
Theme tempCurrent = domain.utility.currentTheme;
settingsDialog.currentThemeComboBoxItemStateChanged ();
domain.utility.currentTheme = tempCurrent;
addButton.setEnabled (true);
viewGradesButton.setEnabled (true);
settingsButton.setEnabled (true);
termsAndCoursesButton.setEnabled (true);
domain.workerThread.setAllowSave (true);
termTree.invalidate ();
termTree.revalidate ();
termTree.repaint ();
}
catch (Exception ex)
{
Domain.LOGGER.add (ex);
}
finally
{
setCursor (Cursor.getDefaultCursor ());
}
}
});
load.start ();
}//GEN-LAST:event_formAncestorAdded
private void dayPanelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_dayPanelMouseReleased
checkAssignmentOrEventChanges (domain.currentIndexFromVector);
checkRepeatEventChanges (domain.currentIndexFromVector);
if (selectedDayPanel != evt.getSource () && getIndexFromDaysArray ((JPanel) evt.getSource ()) != -1)
{
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = (JPanel) evt.getSource ();
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
int dayIndex = getIndexFromDaysArray ((JPanel) evt.getSource ());
Calendar cal = miniCalendar.getCalendar ();
cal.set (Calendar.DAY_OF_MONTH, dayIndex + 1);
miniCalendar.setDate (cal.getTime ());
refreshBusyDays ();
}
else if (selectedDayPanel != evt.getSource ())
{
String day = ((JLabel) ((JPanel) evt.getSource ()).getComponent (0)).getText ();
int dayNum = Integer.parseInt (day);
Calendar cal = miniCalendar.getCalendar ();
if (dayNum > 7)
{
cal.add (Calendar.MONTH, -1);
}
else
{
cal.add (Calendar.MONTH, 1);
}
cal.set (Calendar.DAY_OF_MONTH, dayNum);
miniCalendar.setDate (cal.getTime ());
loadCalendarView (false);
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = days[dayNum - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
if ((evt.getButton () == 2 || evt.getButton () == 3) && getIndexFromDaysArray ((JPanel) evt.getSource ()) != -1)
{
if (domain.utility.courses.size () > 0
&& ((getSelectedCourseIndex () == -1 && getSelectedTermIndex () == -1)
|| (getSelectedTermIndex () != -1 && domain.utility.terms.get (getSelectedTermIndex ()).getCourseCount () > 0)))
{
addAssignmentEditMenuItem.setEnabled (true);
}
else
{
addAssignmentEditMenuItem.setEnabled (false);
}
cloneEditMenuItem.setEnabled (false);
removeEditMenuItem.setEnabled (false);
assignmentsEditMenu.show (evt.getComponent (), evt.getPoint ().x, evt.getPoint ().y);
}
}//GEN-LAST:event_dayPanelMouseReleased
private void scrollPaneMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_scrollPaneMouseReleased
checkAssignmentOrEventChanges (domain.currentIndexFromVector);
checkRepeatEventChanges (domain.currentIndexFromVector);
if (selectedDayPanel != (JPanel) ((JScrollPane) evt.getSource ()).getParent () && getIndexFromDaysArray ((JPanel) ((JScrollPane) evt.getSource ()).getParent ()) != -1)
{
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = (JPanel) ((JScrollPane) evt.getSource ()).getParent ();
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
int dayIndex = getIndexFromDaysArray ((JPanel) ((JScrollPane) evt.getSource ()).getParent ());
Calendar cal = miniCalendar.getCalendar ();
cal.set (Calendar.DAY_OF_MONTH, dayIndex + 1);
miniCalendar.setDate (cal.getTime ());
refreshBusyDays ();
}
else if (selectedDayPanel != (JPanel) ((JScrollPane) evt.getSource ()).getParent ())
{
String day = ((JLabel) ((JPanel) ((JScrollPane) evt.getSource ()).getParent ()).getComponent (0)).getText ();
int dayNum = Integer.parseInt (day);
Calendar cal = miniCalendar.getCalendar ();
if (dayNum > 7)
{
cal.add (Calendar.MONTH, -1);
}
else
{
cal.add (Calendar.MONTH, 1);
}
cal.set (Calendar.DAY_OF_MONTH, dayNum);
miniCalendar.setDate (cal.getTime ());
loadCalendarView (false);
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = days[dayNum - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
if ((evt.getButton () == 2 || evt.getButton () == 3) && getIndexFromDaysArray ((JPanel) ((JScrollPane) evt.getSource ()).getParent ()) != -1)
{
if (domain.utility.courses.size () > 0
&& ((getSelectedCourseIndex () == -1 && getSelectedTermIndex () == -1)
|| (getSelectedTermIndex () != -1 && domain.utility.terms.get (getSelectedTermIndex ()).getCourseCount () > 0)))
{
addAssignmentEditMenuItem.setEnabled (true);
}
else
{
addAssignmentEditMenuItem.setEnabled (false);
}
cloneEditMenuItem.setEnabled (false);
removeEditMenuItem.setEnabled (false);
assignmentsEditMenu.show (evt.getComponent (), evt.getPoint ().x, evt.getPoint ().y);
}
}//GEN-LAST:event_scrollPaneMouseReleased
private void assignmentsTableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_assignmentsTableMouseReleased
mouseDraggingInTable = false;
if (evt.getButton () == 1
&& domain.currentIndexFromVector != -1
&& assignmentsTable.columnAtPoint (evt.getPoint ()) != 0
&& assignmentsTable.rowAtPoint (evt.getPoint ()) != -1)
{
ListItem item = domain.utility.assignmentsAndEvents.get (assignmentsTable.getVectorIndexFromSelectedRow (assignmentsTable.rowAtPoint (evt.getPoint ())));
if (dontReselectName.empty ())
{
if (item.isAssignment ())
{
assignmentNameTextField.requestFocus ();
}
else
{
eventNameTextField.requestFocus ();
}
}
}
else
{
if (evt.getButton () == 1
&& assignmentsTable.columnAtPoint (evt.getPoint ()) == 0
&& assignmentsTable.rowAtPoint (evt.getPoint ()) != -1)
{
assignmentsTable.setSelectedRow (assignmentsTable.rowAtPoint (evt.getPoint ()));
assignmentsTableRowSelected (null);
ListItem item = domain.utility.assignmentsAndEvents.get (assignmentsTable.getVectorIndexFromSelectedRow (assignmentsTable.rowAtPoint (evt.getPoint ())));
if (item.isAssignment ())
{
completedCheckBox.setSelected (!((Assignment) item).isDone ());
completedCheckBoxActionPerformed (null);
}
}
}
if (evt.getButton () == 2 || evt.getButton () == 3)
{
checkAssignmentOrEventChanges (domain.currentIndexFromVector);
checkRepeatEventChanges (domain.currentIndexFromVector);
assignmentsTable.setSelectedRow (assignmentsTable.rowAtPoint (evt.getPoint ()));
showAssignmentAndEventEditMenu (evt);
}
}//GEN-LAST:event_assignmentsTableMouseReleased
private void termTreeMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_termTreeMouseReleased
TreePath path = termTree.getPathForLocation ((int) Math.round (evt.getPoint ().x), (int) Math.round (evt.getPoint ().y));
termTree.getSelectionModel ().setSelectionPath (path);
if (evt.getButton () == 1 && evt.getClickCount () == 2)
{
if (getSelectedCourseIndexFrom (getSelectedTermIndex ()) != -1)
{
goEditCourse ();
}
else
{
if (getSelectedTermIndex () != -1)
{
goEditTerm ();
}
}
}
else
{
if (evt.getButton () == 2 || evt.getButton () == 3)
{
showTermEditMenu (evt);
}
}
}//GEN-LAST:event_termTreeMouseReleased
private void addPopupMenuPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {//GEN-FIRST:event_addPopupMenuPopupMenuWillBecomeInvisible
addButton.setSelected (false);
}//GEN-LAST:event_addPopupMenuPopupMenuWillBecomeInvisible
private void updatesCloseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updatesCloseButtonActionPerformed
updatesDialog.dispose ();
setCursor (Cursor.getDefaultCursor ());
requestFocus ();
}//GEN-LAST:event_updatesCloseButtonActionPerformed
private void editGradingScaleEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editGradingScaleEditMenuItemActionPerformed
goEditTypes ();
}//GEN-LAST:event_editGradingScaleEditMenuItemActionPerformed
private void editTextbooksEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editTextbooksEditMenuItemActionPerformed
goEditTextbooks ();
}//GEN-LAST:event_editTextbooksEditMenuItemActionPerformed
private void nextMonthButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_nextMonthButtonMouseReleased
Calendar cal = Calendar.getInstance ();
cal.setTime (miniCalendar.getDate ());
cal.add (Calendar.MONTH, 1);
miniCalendar.setDate (cal.getTime ());
loadCalendarView (false);
}//GEN-LAST:event_nextMonthButtonMouseReleased
private void prevMonthButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_prevMonthButtonMouseReleased
Calendar cal = Calendar.getInstance ();
cal.setTime (miniCalendar.getDate ());
cal.add (Calendar.MONTH, -1);
miniCalendar.setDate (cal.getTime ());
loadCalendarView (false);
}//GEN-LAST:event_prevMonthButtonMouseReleased
private void todayButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_todayButtonMouseReleased
String[] todaySplit = Domain.DATE_FORMAT.format (domain.today).split ("/");
miniCalendar.getYearChooser ().setYear (Integer.parseInt (todaySplit[2]));
miniCalendar.getMonthChooser ().setMonth (Integer.parseInt (todaySplit[0]) - 1);
miniCalendar.getDayChooser ().setDay (Integer.parseInt (todaySplit[1]));
loadCalendarView (false);
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = days[Integer.parseInt (Domain.DATE_FORMAT.format (domain.today).split ("/")[1]) - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
scrollToItemOrToday (null);
}//GEN-LAST:event_todayButtonMouseReleased
private void addEventMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addEventMenuItemActionPerformed
domain.addEvent (null);
}//GEN-LAST:event_addEventMenuItemActionPerformed
private void todayButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_todayButtonMouseEntered
todayButton.setForeground (Color.GRAY);
}//GEN-LAST:event_todayButtonMouseEntered
private void prevMonthButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_prevMonthButtonMouseEntered
prevMonthButton.setForeground (Color.GRAY);
}//GEN-LAST:event_prevMonthButtonMouseEntered
private void nextMonthButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_nextMonthButtonMouseEntered
nextMonthButton.setForeground (Color.GRAY);
}//GEN-LAST:event_nextMonthButtonMouseEntered
private void nextMonthButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_nextMonthButtonMouseExited
nextMonthButton.setForeground (Color.BLACK);
}//GEN-LAST:event_nextMonthButtonMouseExited
private void todayButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_todayButtonMouseExited
todayButton.setForeground (Color.BLACK);
}//GEN-LAST:event_todayButtonMouseExited
private void prevMonthButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_prevMonthButtonMouseExited
prevMonthButton.setForeground (Color.BLACK);
}//GEN-LAST:event_prevMonthButtonMouseExited
private void eventNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_eventNameTextFieldActionPerformed
domain.setEventName (domain.currentIndexFromVector);
if (evt != null && dontReselectName.empty ())
{
eventNameTextField.requestFocus ();
eventNameTextField.selectAll ();
}
}//GEN-LAST:event_eventNameTextFieldActionPerformed
private void eventNameTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_eventNameTextFieldFocusLost
eventNameTextFieldActionPerformed (null);
}//GEN-LAST:event_eventNameTextFieldFocusLost
private void eventDateChooserPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_eventDateChooserPropertyChange
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty () && !quitting)
{
eventChanges.push (true);
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
Event localTempEvent = null;
try
{
localTempEvent = domain.createCloneObject (event, domain.utility, Domain.DATE_FORMAT.parse (event.getDueDate ()), false);
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
boolean wasRepeating = false;
// remove the attachment to repetition
if (event.getRepeating ().getID () != -1)
{
wasRepeating = true;
event.getRepeating ().setID (-1);
domain.utility.repeatingEvents.remove (event);
}
try
{
String dueDate = Domain.DATE_FORMAT.format (eventDateChooser.getDate ());
if (middleTabbedPane.getSelectedIndex () == 1)
{
event.getParent ().remove (event);
}
event.getEventYear ().markChanged ();
event.getEventYear ().removeEvent (event);
event.setDate (dueDate, domain.utility);
Calendar cal = Calendar.getInstance ();
cal.setTime (eventDateChooser.getDate ());
event.getEventYear ().addEvent (event);
event.refreshText ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
try
{
daysAssignmentsAndEvents[Integer.parseInt (dueDate.split ("/")[1]) - 1].add (event);
}
catch (ArrayIndexOutOfBoundsException ex)
{
}
}
miniCalendar.setDate (eventDateChooser.getDate ());
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.getEventYear ().markChanged ();
filter (true);
refreshBusyDays ();
if (domain.utility.preferences.sortIndex == 4)
{
scrollToItemOrToday ((ListItem) event);
}
}
catch (NullPointerException ex)
{
try
{
domain.assignmentOrEventLoading.push (true);
eventDateChooser.setDate (Domain.DATE_FORMAT.parse (event.getDueDate ()));
domain.assignmentOrEventLoading.pop ();
}
catch (ParseException innerEx)
{
Domain.LOGGER.add (ex);
}
}
OPTION_PANE.setValue (null);
if (wasRepeating)
{
ViewPanel.OPTION_PANE.setOptions (YES_NO_CHOICES);
ViewPanel.OPTION_PANE.setMessage (domain.language.getString ("editRepeatingEventText"));
ViewPanel.OPTION_PANE.setMessageType (JOptionPane.QUESTION_MESSAGE);
JDialog optionDialog = ViewPanel.OPTION_PANE.createDialog (this, domain.language.getString ("editRepeatingEvent"));
optionDialog.setVisible (true);
}
if (OPTION_PANE.getValue () == null || (OPTION_PANE.getValue () != null && Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.YES_OPTION))
{
try
{
domain.assignmentOrEventLoading.push (true);
eventDateChooser.setDate (Domain.DATE_FORMAT.parse (event.getDueDate ()));
domain.assignmentOrEventLoading.pop ();
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
else
{
try
{
domain.assignmentOrEventLoading.push (true);
eventDateChooser.setDate (Domain.DATE_FORMAT.parse (localTempEvent.getDueDate ()));
domain.assignmentOrEventLoading.pop ();
try
{
event.getRepeating ().setID (localTempEvent.getRepeating ().getID ());
domain.utility.repeatingEvents.add (event);
String dueDate = localTempEvent.getDueDate ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
event.getParent ().remove (event);
}
event.getEventYear ().markChanged ();
event.getEventYear ().removeEvent (event);
event.setDate (dueDate, domain.utility);
Calendar cal = Calendar.getInstance ();
cal.setTime (eventDateChooser.getDate ());
event.getEventYear ().addEvent (event);
event.refreshText ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
try
{
daysAssignmentsAndEvents[Integer.parseInt (dueDate.split ("/")[1]) - 1].add (event);
}
catch (ArrayIndexOutOfBoundsException ex)
{
}
}
miniCalendar.setDate (eventDateChooser.getDate ());
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.getEventYear ().markChanged ();
refreshBusyDays ();
if (domain.utility.preferences.sortIndex == 4)
{
scrollToItemOrToday ((ListItem) event);
}
}
catch (NullPointerException ex)
{
try
{
domain.assignmentOrEventLoading.push (true);
eventDateChooser.setDate (Domain.DATE_FORMAT.parse (event.getDueDate ()));
domain.assignmentOrEventLoading.pop ();
}
catch (ParseException innerEx)
{
Domain.LOGGER.add (ex);
}
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
}
}//GEN-LAST:event_eventDateChooserPropertyChange
private void descriptionTextAreaFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_descriptionTextAreaFocusLost
if (eventContentPanel.isVisible ())
{
domain.setEventDescription (domain.currentIndexFromVector);
}
}//GEN-LAST:event_descriptionTextAreaFocusLost
private synchronized void descriptionTextAreaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_descriptionTextAreaKeyPressed
((Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getEventYear ().markChanged ();
}//GEN-LAST:event_descriptionTextAreaKeyPressed
private void filter1ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_filter1ButtonActionPerformed
if (!initLoading)
{
assignmentsTable.setSelectedRow (-1);
assignmentsTableRowSelected (null);
if (bothFilterRadioButton.isSelected ())
{
domain.utility.preferences.filter1Index = 0;
}
else
{
if (assignmentsFilterRadioButton.isSelected ())
{
domain.utility.preferences.filter1Index = 1;
}
else
{
domain.utility.preferences.filter1Index = 2;
}
}
domain.needsPreferencesSave = true;
filter (true);
}
}//GEN-LAST:event_filter1ButtonActionPerformed
private void filter2ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_filter2ButtonActionPerformed
if (!initLoading)
{
assignmentsTable.setSelectedRow (-1);
assignmentsTableRowSelected (null);
if (allFilterRadioButton.isSelected ())
{
domain.utility.preferences.filter2Index = 0;
}
else
{
if (doneFilterRadioButton.isSelected ())
{
domain.utility.preferences.filter2Index = 1;
}
else
{
if (notDoneFilterRadioButton.isSelected ())
{
domain.utility.preferences.filter2Index = 2;
}
else
{
domain.utility.preferences.filter2Index = 3;
}
}
}
domain.needsPreferencesSave = true;
filter (true);
}
}//GEN-LAST:event_filter2ButtonActionPerformed
private void allDayEventCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_allDayEventCheckBoxActionPerformed
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
domain.assignmentOrEventLoading.push (true);
ListItem item = domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
if (!item.isAssignment ())
{
Event event = (Event) item;
setEventIsAllDay (event);
}
domain.assignmentOrEventLoading.pop ();
}
if (allDayEventCheckBox.isSelected ())
{
eventStartHrChooser.setEnabled (false);
eventStartMinChooser.setEnabled (false);
eventStartMChooser.setEnabled (false);
eventEndHrChooser.setEnabled (false);
eventEndMinChooser.setEnabled (false);
eventEndMChooser.setEnabled (false);
eventColon1.setEnabled (false);
eventColon2.setEnabled (false);
}
else
{
eventStartHrChooser.setEnabled (true);
eventStartMinChooser.setEnabled (true);
eventStartMChooser.setEnabled (true);
eventEndHrChooser.setEnabled (true);
eventEndMinChooser.setEnabled (true);
eventEndMChooser.setEnabled (true);
eventColon1.setEnabled (true);
eventColon2.setEnabled (true);
}
}//GEN-LAST:event_allDayEventCheckBoxActionPerformed
private synchronized void textFieldKeyPressed(java.awt.event.KeyEvent evt)//GEN-FIRST:event_textFieldKeyPressed
{//GEN-HEADEREND:event_textFieldKeyPressed
if (evt.getKeyCode () == KeyEvent.VK_ESCAPE)
{
if (evt.getSource () == assignmentNameTextField)
{
Assignment assn = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
assignmentNameTextField.setText (assn.getItemName ());
assn.getCourse ().markChanged ();
}
else if (evt.getSource () == gradeTextField)
{
Assignment assn = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
gradeTextField.setText (assn.getItemName ());
assn.getCourse ().markChanged ();
}
else if (evt.getSource () == eventNameTextField)
{
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
eventNameTextField.setText (event.getItemName ());
event.getEventYear ().markChanged ();
}
else if (evt.getSource () == locationTextField)
{
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
locationTextField.setText (event.getItemName ());
event.getEventYear ().markChanged ();
}
}
else
{
ListItem item = domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
if (item.isAssignment ())
{
((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getCourse ().markChanged ();
}
else
{
((Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getEventYear ().markChanged ();
}
}
}//GEN-LAST:event_textFieldKeyPressed
private void locationTextFieldActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_locationTextFieldActionPerformed
{//GEN-HEADEREND:event_locationTextFieldActionPerformed
domain.setEventLocation (domain.currentIndexFromVector);
if (evt != null)
{
gradeTextField.requestFocus ();
gradeTextField.selectAll ();
}
}//GEN-LAST:event_locationTextFieldActionPerformed
private void locationTextFieldFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_locationTextFieldFocusLost
{//GEN-HEADEREND:event_locationTextFieldFocusLost
if (eventContentPanel.isVisible ())
{
locationTextFieldActionPerformed (null);
}
}//GEN-LAST:event_locationTextFieldFocusLost
private synchronized void categoryComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_categoryComboBoxItemStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty () && !initLoading)
{
eventChanges.push (true);
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
setEventCategory (event);
event.getEventYear ().markChanged ();
}
}//GEN-LAST:event_categoryComboBoxItemStateChanged
private void cloneEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cloneEditMenuItemActionPerformed
if (domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).isAssignment ())
{
goCloneAssignment ();
}
else
{
goCloneEvent ();
}
}//GEN-LAST:event_cloneEditMenuItemActionPerformed
private void eventRepeatButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_eventRepeatButtonActionPerformed
showRepeatEventDialog ();
}//GEN-LAST:event_eventRepeatButtonActionPerformed
private void repeatEventDoneButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repeatEventDoneButtonActionPerformed
closeRepeatEventDialog ();
}//GEN-LAST:event_repeatEventDoneButtonActionPerformed
private void repeatEventRepeatsComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repeatEventRepeatsComboBoxActionPerformed
repeatEventChanges = true;
int index = repeatEventRepeatsComboBox.getSelectedIndex ();
int count = repeatEventRepeatsEveryComboBox.getSelectedIndex () + 1;
if (index == 1)
{
if (count > 1)
{
everyDescriptionLabel.setText (domain.language.getString ("days"));
}
else
{
everyDescriptionLabel.setText (domain.language.getString ("day"));
}
}
// no repetition
if (index == 0)
{
everyDescriptionLabel.setText ("");
repeatEventRepeatsEveryComboBox.setEnabled (false);
reSunCheckBox.setEnabled (false);
reMonCheckBox.setEnabled (false);
reTueCheckBox.setEnabled (false);
reWedCheckBox.setEnabled (false);
reThuCheckBox.setEnabled (false);
reFriCheckBox.setEnabled (false);
reSatCheckBox.setEnabled (false);
repeatEventEndDateChooser.setEnabled (false);
}
// repeat weekly
else if (index == 2)
{
if (count > 1)
{
everyDescriptionLabel.setText (domain.language.getString ("weeks"));
}
else
{
everyDescriptionLabel.setText (domain.language.getString ("week"));
}
repeatEventRepeatsEveryComboBox.setEnabled (true);
reSunCheckBox.setEnabled (true);
reMonCheckBox.setEnabled (true);
reTueCheckBox.setEnabled (true);
reWedCheckBox.setEnabled (true);
reThuCheckBox.setEnabled (true);
reFriCheckBox.setEnabled (true);
reSatCheckBox.setEnabled (true);
repeatEventEndDateChooser.setEnabled (true);
// grab the current day and set it
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
Calendar cal = Calendar.getInstance ();
try
{
cal.setTime (Domain.DATE_FORMAT.parse (event.getDueDate ()));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
switch (cal.get (Calendar.DAY_OF_WEEK))
{
case 1:
{
reSunCheckBox.setSelected (true);
break;
}
case 2:
{
reMonCheckBox.setSelected (true);
break;
}
case 3:
{
reTueCheckBox.setSelected (true);
break;
}
case 4:
{
reWedCheckBox.setSelected (true);
break;
}
case 5:
{
reThuCheckBox.setSelected (true);
break;
}
case 6:
{
reFriCheckBox.setSelected (true);
break;
}
case 7:
{
reSatCheckBox.setSelected (true);
break;
}
}
}
// repeat monthly or yearly
else
{
if (index == 3)
{
if (count > 1)
{
everyDescriptionLabel.setText (domain.language.getString ("months"));
}
else
{
everyDescriptionLabel.setText (domain.language.getString ("month"));
}
}
else if (index == 4)
{
if (count > 1)
{
everyDescriptionLabel.setText (domain.language.getString ("years"));
}
else
{
everyDescriptionLabel.setText (domain.language.getString ("year"));
}
}
repeatEventRepeatsEveryComboBox.setEnabled (true);
reSunCheckBox.setEnabled (false);
reMonCheckBox.setEnabled (false);
reTueCheckBox.setEnabled (false);
reWedCheckBox.setEnabled (false);
reThuCheckBox.setEnabled (false);
reFriCheckBox.setEnabled (false);
reSatCheckBox.setEnabled (false);
repeatEventEndDateChooser.setEnabled (true);
}
}//GEN-LAST:event_repeatEventRepeatsComboBoxActionPerformed
private void repeatEventEndDateChooserPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_repeatEventEndDateChooserPropertyChange
if (repeatEventEndDateChooser.getDate () != null)
{
if (!evt.getPropertyName ().equals ("ancestor"))
{
repeatEventChanges = true;
}
if (repeatEventEndDateChooser.getDate ().before (eventDateChooser.getDate ()))
{
repeatEventEndDateChooser.setDate (eventDateChooser.getDate ());
}
repeatingEndDate = repeatEventEndDateChooser.getDate ();
}
}//GEN-LAST:event_repeatEventEndDateChooserPropertyChange
private void assignmentsTableMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_assignmentsTableMousePressed
mouseDraggingInTable = true;
}//GEN-LAST:event_assignmentsTableMousePressed
private synchronized void dueHrChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_dueHrChooserStateChanged
{//GEN-HEADEREND:event_dueHrChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty () && !quitting)
{
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
String time = Domain.HR_FORMAT.format (dueHrChooser.getValue ());
assignment.setDueTime (0, time);
assignment.getCourse ().markChanged ();
}
}//GEN-LAST:event_dueHrChooserStateChanged
private synchronized void dueMinChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_dueMinChooserStateChanged
{//GEN-HEADEREND:event_dueMinChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty () && !quitting)
{
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
String time = Domain.MIN_FORMAT.format (dueMinChooser.getValue ());
assignment.setDueTime (1, time);
assignment.getCourse ().markChanged ();
}
}//GEN-LAST:event_dueMinChooserStateChanged
private synchronized void dueMChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_dueMChooserStateChanged
{//GEN-HEADEREND:event_dueMChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty () && !quitting)
{
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
String dueTime = Domain.M_FORMAT.format (dueMChooser.getValue ());
assignment.setDueTime (2, dueTime);
assignment.getCourse ().markChanged ();
}
}//GEN-LAST:event_dueMChooserStateChanged
private void eventStartHrChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_eventStartHrChooserStateChanged
{//GEN-HEADEREND:event_eventStartHrChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
eventChanges.push (true);
dontReselectName.push (true);
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
try
{
Date startDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
Date endDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
if (startDate.after (endDate))
{
eventEndHrChooser.setValue (eventStartHrChooser.getValue ());
eventEndMinChooser.setValue (eventStartMinChooser.getValue ());
eventEndMChooser.setValue (eventStartMChooser.getValue ());
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
setEventStartHr (event);
dontReselectName.pop ();
}
}//GEN-LAST:event_eventStartHrChooserStateChanged
private void eventEndHrChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_eventEndHrChooserStateChanged
{//GEN-HEADEREND:event_eventEndHrChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
eventChanges.push (true);
dontReselectName.push (true);
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
try
{
Date startDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
Date endDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
if (startDate.after (endDate))
{
eventStartHrChooser.setValue (eventEndHrChooser.getValue ());
eventStartMinChooser.setValue (eventEndMinChooser.getValue ());
eventStartMChooser.setValue (eventEndMChooser.getValue ());
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
setEventEndHr (event);
dontReselectName.pop ();
}
}//GEN-LAST:event_eventEndHrChooserStateChanged
private void eventStartMinChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_eventStartMinChooserStateChanged
{//GEN-HEADEREND:event_eventStartMinChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
eventChanges.push (true);
dontReselectName.push (true);
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
try
{
Date startDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
Date endDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
if (startDate.after (endDate))
{
eventEndHrChooser.setValue (eventStartHrChooser.getValue ());
eventEndMinChooser.setValue (eventStartMinChooser.getValue ());
eventEndMChooser.setValue (eventStartMChooser.getValue ());
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
setEventStartMin (event);
dontReselectName.pop ();
}
}//GEN-LAST:event_eventStartMinChooserStateChanged
private void eventStartMChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_eventStartMChooserStateChanged
{//GEN-HEADEREND:event_eventStartMChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
eventChanges.push (true);
dontReselectName.push (true);
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
try
{
Date startDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
Date endDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
if (startDate.after (endDate))
{
eventEndHrChooser.setValue (eventStartHrChooser.getValue ());
eventEndMinChooser.setValue (eventStartMinChooser.getValue ());
eventEndMChooser.setValue (eventStartMChooser.getValue ());
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
setEventStartM (event);
dontReselectName.pop ();
}
}//GEN-LAST:event_eventStartMChooserStateChanged
private void eventEndMinChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_eventEndMinChooserStateChanged
{//GEN-HEADEREND:event_eventEndMinChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
eventChanges.push (true);
dontReselectName.push (true);
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
try
{
Date startDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
Date endDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
if (startDate.after (endDate))
{
eventStartHrChooser.setValue (eventEndHrChooser.getValue ());
eventStartMinChooser.setValue (eventEndMinChooser.getValue ());
eventStartMChooser.setValue (eventEndMChooser.getValue ());
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
setEventEndMin (event);
dontReselectName.pop ();
}
}//GEN-LAST:event_eventEndMinChooserStateChanged
private void eventEndMChooserStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_eventEndMChooserStateChanged
{//GEN-HEADEREND:event_eventEndMChooserStateChanged
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty ())
{
eventChanges.push (true);
dontReselectName.push (true);
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
try
{
Date startDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
Date endDate = Domain.TIME_FORMAT.parse (Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()) + ":" + Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()) + " " + Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
if (startDate.after (endDate))
{
eventStartHrChooser.setValue (eventEndHrChooser.getValue ());
eventStartMinChooser.setValue (eventEndMinChooser.getValue ());
eventStartMChooser.setValue (eventEndMChooser.getValue ());
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
setEventEndM (event);
dontReselectName.pop ();
}
}//GEN-LAST:event_eventEndMChooserStateChanged
private void googleMapsButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_googleMapsButtonActionPerformed
{//GEN-HEADEREND:event_googleMapsButtonActionPerformed
if (Domain.desktop != null)
{
try
{
Domain.desktop.browse (new URI ("http://maps.google.com/maps?daddr=" + locationTextField.getText ().replaceAll (" ", "+").replaceAll ("\\.", "%2E").replaceAll ("\\\"", "%22")));
}
catch (IOException ex)
{
Domain.LOGGER.add (ex);
}
catch (URISyntaxException ex)
{
Domain.LOGGER.add (ex);
}
}
else
{
OPTION_PANE.setOptions (OK_CHOICE);
OPTION_PANE.setMessage (domain.language.getString ("browserCouldntLaunch"));
OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("unableToVisit"));
optionDialog.setVisible (true);
}
}//GEN-LAST:event_googleMapsButtonActionPerformed
private void repeatEventRepeatsEveryComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repeatEventRepeatsEveryComboBoxActionPerformed
repeatEventChanges = true;
int index = repeatEventRepeatsComboBox.getSelectedIndex ();
int count = repeatEventRepeatsEveryComboBox.getSelectedIndex () + 1;
if (index == 1)
{
if (count > 1)
{
everyDescriptionLabel.setText (domain.language.getString ("days"));
}
else
{
everyDescriptionLabel.setText (domain.language.getString ("day"));
}
}
if (index == 2)
{
if (count > 1)
{
everyDescriptionLabel.setText (domain.language.getString ("weeks"));
}
else
{
everyDescriptionLabel.setText (domain.language.getString ("week"));
}
}
else if (index == 3)
{
if (count > 1)
{
everyDescriptionLabel.setText (domain.language.getString ("months"));
}
else
{
everyDescriptionLabel.setText (domain.language.getString ("month"));
}
}
else if (index == 4)
{
if (count > 1)
{
everyDescriptionLabel.setText (domain.language.getString ("years"));
}
else
{
everyDescriptionLabel.setText (domain.language.getString ("year"));
}
}
}//GEN-LAST:event_repeatEventRepeatsEveryComboBoxActionPerformed
private void repeatDayCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repeatDayCheckBoxActionPerformed
repeatEventChanges = true;
}//GEN-LAST:event_repeatDayCheckBoxActionPerformed
private void askPopupMenuPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {//GEN-FIRST:event_askPopupMenuPopupMenuWillBecomeInvisible
askInstructorButton.setSelected (false);
}//GEN-LAST:event_askPopupMenuPopupMenuWillBecomeInvisible
private void editInstructorsEditMenuItemeditGradingScaleEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editInstructorsEditMenuItemeditGradingScaleEditMenuItemActionPerformed
goEditInstructors ();
}//GEN-LAST:event_editInstructorsEditMenuItemeditGradingScaleEditMenuItemActionPerformed
private void labWebsiteMenuItemeditGradingScaleEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_labWebsiteMenuItemeditGradingScaleEditMenuItemActionPerformed
visitLabWebsite ();
}//GEN-LAST:event_labWebsiteMenuItemeditGradingScaleEditMenuItemActionPerformed
private void courseWebsiteMenuItemeditGradingScaleEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_courseWebsiteMenuItemeditGradingScaleEditMenuItemActionPerformed
visitCourseWebsite ();
}//GEN-LAST:event_courseWebsiteMenuItemeditGradingScaleEditMenuItemActionPerformed
private void contactAdvisorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_contactAdvisorButtonActionPerformed
settingsDialog.goViewSettings ();
settingsDialog.settingsTabbedPane.setSelectedIndex (1);
settingsDialog.advisorNameTextField.requestFocus ();
settingsDialog.advisorNameTextField.selectAll ();
}//GEN-LAST:event_contactAdvisorButtonActionPerformed
private void editUserDetailsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editUserDetailsButtonActionPerformed
settingsDialog.goViewSettings ();
settingsDialog.settingsTabbedPane.setSelectedIndex (1);
settingsDialog.studentNameTextField.requestFocus ();
settingsDialog.studentNameTextField.selectAll ();
}//GEN-LAST:event_editUserDetailsButtonActionPerformed
private void addEventEditMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addEventEditMenuItemActionPerformed
domain.addEvent (null);
}//GEN-LAST:event_addEventEditMenuItemActionPerformed
////////////////////////////////////////////////////////////////////////////
// Custom Implementation
////////////////////////////////////////////////////////////////////////////
/**
* Load the resource bundle for the given domain.language.
*
* @param language The language to load the resource for.
*/
protected void loadLanguageResource(String languageString)
{
try
{
if (languageString.equals ("English"))
{
domain.language = ResourceBundle.getBundle ("adl.go.resource.languages.bundle_en");
dueDateChooser.getDateEditor ().setEnabled (true);
eventDateChooser.getDateEditor ().setEnabled (true);
repeatEventEndDateChooser.getDateEditor ().setEnabled (true);
termsAndCoursesDialog.termStartDateChooser.getDateEditor ().setEnabled (true);
termsAndCoursesDialog.termEndDateChooser.getDateEditor ().setEnabled (true);
termsAndCoursesDialog.courseStartDateChooser.getDateEditor ().setEnabled (true);
termsAndCoursesDialog.courseEndDateChooser.getDateEditor ().setEnabled (true);
termsAndCoursesDialog.labStartDateChooser.getDateEditor ().setEnabled (true);
termsAndCoursesDialog.labEndDateChooser.getDateEditor ().setEnabled (true);
}
else
{
dueDateChooser.getDateEditor ().setEnabled (false);
eventDateChooser.getDateEditor ().setEnabled (false);
repeatEventEndDateChooser.getDateEditor ().setEnabled (false);
termsAndCoursesDialog.termStartDateChooser.getDateEditor ().setEnabled (false);
termsAndCoursesDialog.termEndDateChooser.getDateEditor ().setEnabled (false);
termsAndCoursesDialog.courseStartDateChooser.getDateEditor ().setEnabled (false);
termsAndCoursesDialog.courseEndDateChooser.getDateEditor ().setEnabled (false);
termsAndCoursesDialog.labStartDateChooser.getDateEditor ().setEnabled (false);
termsAndCoursesDialog.labEndDateChooser.getDateEditor ().setEnabled (false);
if (languageString.equals ("Español"))
{
domain.language = ResourceBundle.getBundle ("adl.go.resource.languages.bundle_es");
}
}
}
catch (NullPointerException ex)
{
}
}
/**
* Initialize and write to backup file.
*
* @param file The file to write to.
*/
private void backupThread(final File file)
{
new Thread (new Runnable ()
{
@Override
public void run()
{
initLoading = true;
domain.utility.writeBackupFile (file);
updatesDialog.dispose ();
updatesCloseButton.setVisible (true);
updatesDialog.setTitle (domain.language.getString ("checkForUpdates"));
initLoading = false;
requestFocus ();
}
}).start ();
}
/**
* Close the open windows.
*/
protected void closeOpenWindows()
{
// close any open windows
if (aboutDialog.isVisible ())
{
aboutDialog.dispose ();
}
if (repeatEventDialog.isVisible ())
{
repeatEventDialog.dispose ();
}
if (gettingStartedDialog.isVisible ())
{
gettingStartedDialog.dispose ();
}
if (heliumDialog.isVisible())
{
heliumDialog.dispose();
}
if (gradesDialog.isVisible ())
{
gradesDialog.dispose ();
}
if (printDialog.isVisible ())
{
printDialog.dispose ();
}
if (importFromBackupDialog.isVisible ())
{
importFromBackupDialog.dispose ();
}
if (settingsDialog.isVisible ())
{
settingsDialog.closeSettingsDialog ();
}
if (termsAndCoursesDialog.isVisible ())
{
termsAndCoursesDialog.closeTermsAndCoursesDialog ();
}
}
/**
* Allow the user to backup all preferences and course information into a
* single, accessible backup file.
*/
protected void backup()
{
closeOpenWindows ();
fileChooser.setDialogType (JFileChooser.SAVE_DIALOG);
fileChooser.setApproveButtonText (domain.language.getString ("backup"));
fileChooser.setApproveButtonToolTipText (domain.language.getString ("backupGetOrganized"));
fileChooser.setDialogTitle (domain.language.getString ("backupGetOrganized"));
File selectedFile = new File (lastGoodFile);
fileChooser.setSelectedFile (selectedFile);
int response = fileChooser.showSaveDialog (this);
while (response == JFileChooser.APPROVE_OPTION)
{
selectedFile = fileChooser.getSelectedFile ();
try
{
lastGoodFile = selectedFile.getCanonicalPath ();
}
catch (IOException ex)
{
}
// ensure an extension is on the file
if (selectedFile.getName ().indexOf (".") == -1)
{
selectedFile = new File (fileChooser.getSelectedFile ().toString () + ".gbak");
}
// ensure the file is a valid backup file
if (!selectedFile.toString ().endsWith (".gbak"))
{
OPTION_PANE.setOptions (OK_CHOICE);
OPTION_PANE.setMessage (domain.language.getString ("mustBeValidExtension") + " (.gbak).");
OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("invalidExtension"));
optionDialog.setVisible (true);
fileChooser.setSelectedFile (new File (fileChooser.getSelectedFile ().toString ().substring (0, fileChooser.getSelectedFile ().toString ().lastIndexOf (".")) + ".gbak"));
response = fileChooser.showSaveDialog (this);
continue;
}
if (selectedFile.isFile ())
{
OPTION_PANE.setOptions (YES_NO_CANCEL_CHOICES);
OPTION_PANE.setMessage (domain.language.getString ("filenameAlreadyExists"));
OPTION_PANE.setMessageType (JOptionPane.QUESTION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("overwriteFile"));
optionDialog.setVisible (true);
if (Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.YES_OPTION)
{
domain.setProgressState (updatesProgressBar, true, domain.language.getString ("backingUpGetOrganized") + " ...", true, -1);
updatesCloseButton.setVisible (false);
updatesDialog.setTitle (domain.language.getString ("backingUp"));
updatesDialog.pack ();
updatesDialog.setLocationRelativeTo (this);
updatesDialog.setVisible (true);
backupThread (selectedFile);
break;
}
else if (Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.NO_OPTION)
{
fileChooser.setSelectedFile (selectedFile);
response = fileChooser.showSaveDialog (this);
continue;
}
else
{
break;
}
}
else
{
domain.setProgressState (updatesProgressBar, true, domain.language.getString ("backingUpGetOrganized") + " ...", true, -1);
updatesCloseButton.setVisible (false);
updatesDialog.setTitle (domain.language.getString ("backingUp"));
updatesDialog.pack ();
updatesDialog.setLocationRelativeTo (this);
updatesDialog.setVisible (true);
backupThread (selectedFile);
break;
}
}
}
/**
* Refind domain.today's date.
*/
public void refindToday()
{
miniCalendar.getDayChooser ().drawDays ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
loadCalendarView (true);
}
}
/**
* Import all data from a given backup file.
*/
protected void restoreFromBackup()
{
closeOpenWindows ();
fileChooser.setDialogType (JFileChooser.OPEN_DIALOG);
fileChooser.setApproveButtonText (domain.language.getString ("restore"));
fileChooser.setApproveButtonToolTipText (domain.language.getString ("restoreToBackupToolTip"));
fileChooser.setDialogTitle (domain.language.getString ("restoreToBackup"));
File selectedFile = new File (lastGoodFile);
fileChooser.setSelectedFile (selectedFile);
int response = fileChooser.showOpenDialog (this);
while (response == JFileChooser.APPROVE_OPTION)
{
final File permFile = fileChooser.getSelectedFile ();
if (!permFile.isFile () || !selectedFile.toString ().endsWith (".gbak"))
{
OPTION_PANE.setOptions (OK_CHOICE);
OPTION_PANE.setMessage (domain.language.getString ("mustBeValidExtension") + " (.gbak).");
OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("invalidExtension"));
optionDialog.setVisible (true);
fileChooser.setSelectedFile (new File (fileChooser.getSelectedFile ().toString ().substring (0, fileChooser.getSelectedFile ().toString ().lastIndexOf (".")) + ".gbak"));
response = fileChooser.showOpenDialog (this);
continue;
}
try
{
lastGoodFile = permFile.getCanonicalPath ();
}
catch (IOException ex)
{
}
OPTION_PANE.setOptions (REPLACE_CANCEL_CHOICES);
OPTION_PANE.setMessage (domain.language.getString ("permanentlyEraseCurrentData"));
OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("overwriteExistingData"));
optionDialog.setVisible (true);
if (Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.YES_OPTION)
{
loadingPanel.setVisible (true);
contentPanel.setVisible (false);
setCursor (Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR));
domain.setProgressState (progressBar, true, domain.language.getString ("restoringGetOrganized"), true, -1);
loadingLabel.setText (domain.language.getString ("restoringGetOrganized") + " ...");
miniCalendar.setDate (domain.today);
final ViewPanel viewPanel = this;
new Thread (new Runnable ()
{
@Override
public void run()
{
initLoading = true;
ignoreTableSelection = true;
assignmentsTable.setSelectedRow (-1);
assignmentsTableRowSelected (null);
termsAndCoursesDialog.settingsTermsTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsTermsTableRowSelected (null);
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsCoursesTableRowSelected (null);
domain.currentCourseIndex = -1;
domain.currentTermIndex = -1;
domain.currentTextbookIndex = -1;
domain.currentTypeIndex = -1;
domain.currentInstructorIndex = -1;
eventChanges.clear ();
repeatEventChanges = false;
settingsDialog.settingsTabbedPane.setSelectedIndex (0);
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (0);
domain.workerThread.setAllowSave (false);
boolean success = false;
boolean fatal = false;
try
{
success = domain.utility.restoreFromBackup (permFile);
}
catch (Exception ex)
{
success = false;
fatal = true;
}
domain.setProgressState (progressBar, true, domain.language.getString ("loading") + "...", true, -1);
loadingLabel.setText (domain.language.getString ("loading") + "...");
requestFocus ();
if (!success && !fatal)
{
setCursor (Cursor.getDefaultCursor ());
contentPanel.setVisible (true);
loadingPanel.setVisible (false);
OPTION_PANE.setOptions (OK_CHOICE);
OPTION_PANE.setMessage (domain.language.getString ("invalidRestoreFile"));
OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog innerOptionDialog = OPTION_PANE.createDialog (viewPanel, domain.language.getString ("noChangesMade"));
innerOptionDialog.setVisible (true);
initLoading = false;
domain.workerThread.setAllowSave (true);
}
else if (success && !fatal)
{
assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).setHeaderValue (assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).getHeaderValue ().toString ().replaceAll ("\\<html\\>|\\<b\\>|\\</html\\>|\\</b\\>", ""));
termTree.getSelectionModel ().setSelectionPath (null);
domain.utility.loadTermTree ();
domain.utility.loadAssignmentsTable (true);
findTermWithin ();
syncWithPreferences (true);
filter (false);
assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).setHeaderValue ("<html><b>" + assignmentsTable.getColumnModel ().getColumn (assignmentsTableModel.getColumnSorting ()).getHeaderValue () + "</b></html>");
expandTermTree (new TreeExpansionEvent (this, null));
refreshBusyDays ();
initButtons ();
scrollToItemOrToday (null);
if (!domain.utility.preferences.autoUpdate)
{
domain.setProgressState (progressBar, false, "", false, -1);
}
setCursor (Cursor.getDefaultCursor ());
contentPanel.setVisible (true);
loadingPanel.setVisible (false);
initLoading = false;
ignoreTableSelection = false;
for (int i = 0; i < domain.utility.courses.size (); ++i)
{
domain.utility.courses.get (i).markChanged ();
}
for (int i = 0; i < domain.utility.eventYears.size (); ++i)
{
domain.utility.eventYears.get (i).markChanged ();
}
domain.needsCoursesAndTermsSave = true;
domain.needsPreferencesSave = true;
domain.needsSettingsSaveBool = true;
domain.utility.currentTheme.apply ();
domain.workerThread.setAllowSave (true);
termTree.invalidate ();
termTree.revalidate ();
termTree.repaint ();
}
else
{
setCursor (Cursor.getDefaultCursor ());
contentPanel.setVisible (true);
loadingPanel.setVisible (false);
initLoading = false;
ignoreTableSelection = false;
domain.setProgressState (updatesProgressBar, false, "", false, -1);
domain.workerThread.setAllowSave (true);
OPTION_PANE.setOptions (OK_CHOICE);
OPTION_PANE.setMessage (domain.language.getString ("aFatalErrorHasOccurred"));
OPTION_PANE.setMessageType (JOptionPane.ERROR_MESSAGE);
JDialog innerOptionDialog = OPTION_PANE.createDialog (viewPanel, domain.language.getString ("fatalError"));
innerOptionDialog.setVisible (true);
quit (true);
}
}
}).start ();
}
break;
}
}
/**
* Set the given event to all day or not, depending on state of checkbox.
*
* @param event The event to set as all day.
*/
private void setEventIsAllDay(Event event)
{
eventChanges.push (true);
event.setIsAllDay (allDayEventCheckBox.isSelected ());
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.refreshText ();
event.getEventYear ().markChanged ();
filter (true);
if (middleTabbedPane.getSelectedIndex () == 1)
{
refreshDayInCalendar (Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1);
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = days[Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
}
/**
* Set the category of the given event.
*
* @param event The event to set the category for.
*/
private void setEventCategory(Event event)
{
event.getCategory ().removeEvent (event);
event.setCategory (domain.utility.preferences.categories.get (categoryComboBox.getSelectedIndex ()));
event.getCategory ().addEvent (event);
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.refreshText ();
if (domain.utility.preferences.sortIndex == 3)
{
scrollToItemOrToday (event);
}
}
/**
* Set the start time of the given event.
*
* @param event The event to set the start time for.
*/
private synchronized void setEventStartHr(Event event)
{
event.setStartTime (0, Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()));
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.getEventYear ().markChanged ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
refreshDayInCalendar (Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1);
}
}
/**
* Set the start time of the given event.
*
* @param event The event to set the start time for.
*/
private synchronized void setEventStartMin(Event event)
{
event.setStartTime (1, Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()));
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.getEventYear ().markChanged ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
refreshDayInCalendar (Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1);
}
}
/**
* Set the start time of the given event.
*
* @param event The event to set the start time for.
*/
private synchronized void setEventStartM(Event event)
{
event.setStartTime (2, Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.getEventYear ().markChanged ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
refreshDayInCalendar (Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1);
}
}
/**
* Set the end time of the given event.
*
* @param event The event to set the end time for.
*/
private synchronized void setEventEndHr(Event event)
{
event.setEndTime (0, Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()));
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.getEventYear ().markChanged ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
refreshDayInCalendar (Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1);
}
}
/**
* Set the end time of the given event.
*
* @param event The event to set the end time for.
*/
private synchronized void setEventEndMin(Event event)
{
event.setEndTime (1, Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()));
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.getEventYear ().markChanged ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
refreshDayInCalendar (Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1);
}
}
/**
* Set the end time of the given event.
*
* @param event The event to set the end time for.
*/
private synchronized void setEventEndM(Event event)
{
event.setEndTime (2, Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
refreshAssignmentsRowAt (domain.currentIndexFromVector);
event.getEventYear ().markChanged ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
refreshDayInCalendar (Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1);
}
}
/**
* Select the term in the term tree that the given date is contained within.
*
* @param date The date that is to be matched within a term.
*/
private void smartSelectCurrentTerm(Date date)
{
try
{
for (int i = 0; i < domain.utility.terms.size (); ++i)
{
Term term = domain.utility.terms.get (i);
if ((Domain.MONTH_YEAR_FORMAT.parse (term.getStartDate ().split ("/")[0] + "/" + term.getStartDate ().split ("/")[2])).compareTo (date) <= 0
&& (Domain.MONTH_YEAR_FORMAT.parse (term.getEndDate ().split ("/")[0] + "/" + term.getEndDate ().split ("/")[2])).compareTo (date) >= 0)
{
termTree.setSelectionPath (new TreePath (term.getPath ()));
break;
}
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
/**
* Checks if the current date is within any of the state to end dates of all
* terms and sets that term as selected if it is.
*/
public void findTermWithin()
{
for (int i = 0; i < domain.utility.terms.size (); ++i)
{
Term term = domain.utility.terms.get (i);
try
{
Calendar cal1 = Calendar.getInstance ();
Calendar cal2 = Calendar.getInstance ();
cal1.setTime (Domain.DATE_FORMAT.parse (term.getStartDate ()));
cal1.add (Calendar.DAY_OF_YEAR, -1);
cal2.setTime (Domain.DATE_FORMAT.parse (term.getEndDate ()));
cal2.add (Calendar.DAY_OF_YEAR, 1);
if (domain.today.after (cal1.getTime ())
&& domain.today.before (cal2.getTime ()))
{
TreePath path = new TreePath (term.getPath ());
termTree.getSelectionModel ().setSelectionPath (path);
break;
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
if (termTree.getSelectionModel ().getSelectionPath () == null && domain.utility.terms.size () > 0)
{
termTree.getSelectionModel ().setSelectionPath (new TreePath (domain.utility.terms.get (0).getPath ()));
}
termTreeNodeSelected (new TreeSelectionEvent (this, null, true, null, null));
}
/**
* Performs a close operation on the repeating event dialog, checking for
* unsaved changes first.
*/
public void closeRepeatEventDialog()
{
if (repeatEventDialog.isVisible ())
{
repeatEventDialog.dispose ();
requestFocus ();
if (domain.currentIndexFromVector != -1 && domain.assignmentOrEventLoading.empty () && !quitting)
{
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
String repeatingString = "";
if (repeatEventRepeatsComboBox.getSelectedIndex () != 0)
{
boolean alreadyRepeating = true;
String oldRepeating = event.getRepeating ().toString ();
String dueDate = event.getDueDate ();
// assign a unique ID to the repeating event if it has not already been given one
if (event.getRepeating ().getID () == -1)
{
alreadyRepeating = false;
oldRepeating = null;
event.getRepeating ().setID (System.currentTimeMillis ());
}
else
{
dueDate = event.getRepeating ().getStartDate ();
}
repeatingString = repeatEventRepeatsComboBox.getSelectedIndex () + "-"
+ repeatEventRepeatsEveryComboBox.getSelectedIndex () + "-"
+ reSunCheckBox.isSelected () + "-"
+ reMonCheckBox.isSelected () + "-"
+ reTueCheckBox.isSelected () + "-"
+ reWedCheckBox.isSelected () + "-"
+ reThuCheckBox.isSelected () + "-"
+ reFriCheckBox.isSelected () + "-"
+ reSatCheckBox.isSelected () + "-"
+ dueDate + "-"
+ Domain.DATE_FORMAT.format (repeatingEndDate);
event.setRepeating (repeatingString);
if (!alreadyRepeating)
{
domain.utility.repeatingEvents.add (event);
createRepeatingInstances (event);
}
else
{
if (repeatEventChanges)
{
updateRepeatingInstaces (event, oldRepeating);
}
}
eventChanges.clear ();
}
else if (event.getRepeating ().getID () != -1)
{
ViewPanel.OPTION_PANE.setOptions (YES_NO_CHOICES);
ViewPanel.OPTION_PANE.setMessage (domain.language.getString ("removeRepeatingEventsText"));
ViewPanel.OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = ViewPanel.OPTION_PANE.createDialog (this, domain.language.getString ("removeRepeatingEvents"));
optionDialog.setVisible (true);
if (OPTION_PANE.getValue () != null && Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.YES_OPTION)
{
destroyRepeatingInstances (event);
event.getRepeating ().setID (-1);
domain.utility.repeatingEvents.remove (event);
event.getEventYear ().markChanged ();
}
eventChanges.clear ();
}
event.getEventYear ().markChanged ();
}
repeatingEndDate = null;
}
}
/**
* Clones the given event with its repetition attached to it.
*
* @param toClone The event to clone repetitively.
* @param inMonth The month which is currently shown in Calendar View.
* @param date The date to set for the newly created event (since it's
* cloned in repetition, the date is the only part that changes).
*/
private void cloneEventWithRepeat(Event toClone, boolean inMonth, Date date)
{
domain.assignmentOrEventLoading.push (true);
Event event = domain.createCloneObject (toClone, domain.utility, date, true);
if (domain.utility.preferences.filter1Index != 1)
{
assignmentsTableModel.addRow (event.getRowObject ());
}
domain.utility.assignmentsAndEvents.add (event);
domain.utility.repeatingEvents.add (event);
if (inMonth)
{
if (middleTabbedPane.getSelectedIndex () == 1)
{
if (domain.utility.preferences.filter1Index != 1)
{
daysAssignmentsAndEvents[Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1].add (event);
shownEvents.add (event);
}
event.getLabel ().addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
eventMouseReleased (evt);
}
});
DRAG_SOURCE.createDefaultDragGestureRecognizer (event.getLabel (), DnDConstants.ACTION_MOVE, DND_LISTENER);
event.refreshText ();
refreshDayInCalendar (Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1);
}
refreshBusyDays ();
}
domain.assignmentOrEventLoading.pop ();
}
/**
* Updates all repeating instances of the currently selected event.
*
* @param event The original event in the series of repetition.
* @param oldRepeating If only updating following, this will be attached to
* preceding repeating instances
*/
private void updateRepeatingInstaces(Event event, String oldRepeating)
{
OPTION_PANE.setOptions (UPDATE_REPEATING_CHOICES);
OPTION_PANE.setMessage (domain.language.getString ("modifiedRepetitionText"));
OPTION_PANE.setMessageType (JOptionPane.QUESTION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("modifiedRepetitionText"));
optionDialog.setVisible (true);
if (OPTION_PANE.getValue () != null)
{
if (Integer.parseInt (OPTION_PANE.getValue ().toString ()) == ALL_IN_SERIES_OPTION)
{
goRemoveEvent (event);
event.setDate (event.getRepeating ().getStartDate (), domain.utility);
event.getEventYear ().markChanged ();
domain.addEvent (event);
domain.utility.repeatingEvents.add (event);
createRepeatingInstances (event);
}
else if (Integer.parseInt (OPTION_PANE.getValue ().toString ()) == ALL_FOLLOWING_OPTION)
{
try
{
goRemoveEvent (event);
String preDate = event.getDueDate ();
String postDate = preDate;
String postEndDate = event.getRepeating ().getEndDate ();
Date newDate = Domain.DATE_FORMAT.parse (preDate);
Calendar newCalendar = Calendar.getInstance ();
newCalendar.setTime (newDate);
newCalendar.add (Calendar.DATE, -1);
newDate = newCalendar.getTime ();
preDate = Domain.DATE_FORMAT.format (newDate);
Event preEvent = event;
Event postEvent = domain.createCloneObject (preEvent, domain.utility, Domain.DATE_FORMAT.parse (preEvent.getDueDate ()), true);
if (oldRepeating != null)
{
preEvent.setRepeating (oldRepeating);
}
preEvent.setDate (event.getRepeating ().getStartDate (), domain.utility);
long uniqueID = System.currentTimeMillis ();
while (domain.utility.getByID (uniqueID) != null)
{
uniqueID = (long) (uniqueID * Math.random ());
}
preEvent.getRepeating ().setID (uniqueID);
preEvent.getRepeating ().setEndDate (preDate);
preEvent.setDate (preEvent.getRepeating ().getStartDate (), domain.utility);
preEvent.getEventYear ().markChanged ();
postEvent.setDate (postDate, domain.utility);
postEvent.getRepeating ().setStartDate (postDate);
postEvent.getRepeating ().setEndDate (postEndDate);
postEvent.getEventYear ().markChanged ();
domain.addEvent (preEvent);
domain.utility.repeatingEvents.add (preEvent);
createRepeatingInstances (preEvent);
domain.addEvent (postEvent);
domain.utility.repeatingEvents.add (postEvent);
createRepeatingInstances (postEvent);
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
else
{
if (tempEvent != null)
{
event.setItemName (tempEvent.getItemName ());
event.setCategory (tempEvent.getCategory ());
event.setDate (tempEvent.getDueDate (), domain.utility);
event.setDescription (tempEvent.getDescription ());
event.setStartTime (0, tempEvent.getStartTime (0));
event.setStartTime (1, tempEvent.getStartTime (1));
event.setStartTime (2, tempEvent.getStartTime (2));
event.setEndTime (0, tempEvent.getEndTime (0));
event.setEndTime (1, tempEvent.getEndTime (1));
event.setEndTime (2, tempEvent.getEndTime (2));
event.setIsAllDay (tempEvent.isAllDay ());
event.setEventLocation (tempEvent.getEventLocation ());
event.setRepeating (tempEvent.getRepeating ().toString ());
event.getRepeating ().setID (tempEvent.getRepeating ().getID ());
event.getEventYear ().markChanged ();
event.refreshRowObject ();
event.refreshText ();
eventChanges.pop ();
repeatEventChanges = false;
}
}
}
else
{
if (tempEvent != null)
{
event.setItemName (tempEvent.getItemName ());
event.setCategory (tempEvent.getCategory ());
event.setDate (tempEvent.getDueDate (), domain.utility);
event.setDescription (tempEvent.getDescription ());
event.setStartTime (0, tempEvent.getStartTime (0));
event.setStartTime (1, tempEvent.getStartTime (1));
event.setStartTime (2, tempEvent.getStartTime (2));
event.setEndTime (0, tempEvent.getEndTime (0));
event.setEndTime (1, tempEvent.getEndTime (1));
event.setEndTime (2, tempEvent.getEndTime (2));
event.setIsAllDay (tempEvent.isAllDay ());
event.setEventLocation (tempEvent.getEventLocation ());
event.setRepeating (tempEvent.getRepeating ().toString ());
event.getRepeating ().setID (tempEvent.getRepeating ().getID ());
event.getEventYear ().markChanged ();
event.refreshRowObject ();
event.refreshText ();
eventChanges.pop ();
repeatEventChanges = false;
}
}
}
/**
* Create separate instances for each event in a repeating series.
*
* @param event The event to create repeating instances of.
*/
private void createRepeatingInstances(Event tempEvent)
{
final Event event = tempEvent;
final Repeating repeat = event.getRepeating ();
setCursor (Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR));
Thread thread = new Thread (new Runnable ()
{
@Override
public void run()
{
Calendar cal = Calendar.getInstance ();
try
{
int monthDifCount = 0;
int yearDifCount = 0;
Date startDate = Domain.DATE_FORMAT.parse (repeat.getStartDate ());
cal.setTime (startDate);
cal.add (Calendar.DAY_OF_WEEK, 1);
int curMonth = cal.get (Calendar.MONTH);
int curYear = cal.get (Calendar.YEAR);
Date endDate = Domain.DATE_FORMAT.parse (repeat.getEndDate ());
while (cal.getTime ().compareTo (endDate) <= 0)
{
if (cal.get (Calendar.MONTH) != curMonth)
{
++monthDifCount;
curMonth = cal.get (Calendar.MONTH);
}
if (cal.get (Calendar.YEAR) != curYear)
{
++yearDifCount;
curYear = cal.get (Calendar.YEAR);
}
// repeating daily
if (event.getRepeating ().getRepeatsIndex () == 1)
{
long dayDiff = (cal.getTime ().getTime () - startDate.getTime ()) / (1000 * 60 * 60 * 24);
if (dayDiff % (event.getRepeating ().getRepeatsEveryIndex () + 1) == 0)
{
String[] firstSplit = Domain.DATE_FORMAT.format (cal.getTime ()).split ("/");
String[] secondSplit = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
cloneEventWithRepeat (event, firstSplit[1].equals (secondSplit[1]) && firstSplit[2].equals (secondSplit[2]), cal.getTime ());
}
}
// repeating weekly
else if (event.getRepeating ().getRepeatsIndex () == 2)
{
int dayOfWeek = cal.get (Calendar.DAY_OF_WEEK);
Repeating repeat = event.getRepeating ();
switch (dayOfWeek)
{
case 1:
{
if (repeat.getSunday ())
{
repeatCheckAndAdd (event, startDate, cal);
}
break;
}
case 2:
{
if (repeat.getMonday ())
{
repeatCheckAndAdd (event, startDate, cal);
}
break;
}
case 3:
{
if (repeat.getTuesday ())
{
repeatCheckAndAdd (event, startDate, cal);
}
break;
}
case 4:
{
if (repeat.getWednesday ())
{
repeatCheckAndAdd (event, startDate, cal);
}
break;
}
case 5:
{
if (repeat.getThursday ())
{
repeatCheckAndAdd (event, startDate, cal);
}
break;
}
case 6:
{
if (repeat.getFriday ())
{
repeatCheckAndAdd (event, startDate, cal);
}
break;
}
case 7:
{
if (repeat.getSaturday ())
{
repeatCheckAndAdd (event, startDate, cal);
}
break;
}
}
}
// repeating monthly
else if (event.getRepeating ().getRepeatsIndex () == 3)
{
String[] firstSplit = Domain.DATE_FORMAT.format (startDate).split ("/");
String[] secondSplit = Domain.DATE_FORMAT.format (cal.getTime ()).split ("/");
if (firstSplit[1].equals (secondSplit[1])
&& monthDifCount % (event.getRepeating ().getRepeatsEveryIndex () + 1) == 0)
{
firstSplit = Domain.DATE_FORMAT.format (cal.getTime ()).split ("/");
secondSplit = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
cloneEventWithRepeat (event, firstSplit[1].equals (secondSplit[1]) && firstSplit[2].equals (secondSplit[2]), cal.getTime ());
}
}
// repeating annually
else if (event.getRepeating ().getRepeatsIndex () == 4)
{
String[] firstSplit = Domain.DATE_FORMAT.format (startDate).split ("/");
String[] secondSplit = Domain.DATE_FORMAT.format (cal.getTime ()).split ("/");
if (firstSplit[1].equals (secondSplit[1])
&& yearDifCount % (event.getRepeating ().getRepeatsEveryIndex () + 1) == 0)
{
firstSplit = Domain.DATE_FORMAT.format (cal.getTime ()).split ("/");
secondSplit = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
cloneEventWithRepeat (event, firstSplit[1].equals (secondSplit[1]) && firstSplit[2].equals (secondSplit[2]), cal.getTime ());
}
}
cal.add (Calendar.DAY_OF_WEEK, 1);
}
event.getEventYear ().markChanged ();
filter (true);
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
});
thread.start ();
try
{
thread.join ();
}
catch (InterruptedException ex)
{
Domain.LOGGER.add (ex);
}
setCursor (Cursor.getDefaultCursor ());
}
/**
* Check that the given event falls on a day that the current repetition
* desires, then add it.
*
* @param event The event to be checked.
* @param startDate The start date of the repetiton.
* @param cal The repetition's calendar reference.
*/
public void repeatCheckAndAdd(Event event, Date startDate, Calendar cal)
{
long dayDiff = (cal.getTime ().getTime () - startDate.getTime ()) / (1000 * 60 * 60 * 24);
switch (event.getRepeating ().getRepeatsIndex ())
{
// weekly repeating
case 2:
{
if ((dayDiff / 7) % (event.getRepeating ().getRepeatsEveryIndex () + 1) == 0)
{
String[] firstSplit = Domain.DATE_FORMAT.format (cal.getTime ()).split ("/");
String[] secondSplit = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
cloneEventWithRepeat (event, firstSplit[1].equals (secondSplit[1]) && firstSplit[2].equals (secondSplit[2]), cal.getTime ());
}
break;
}
// monthly repeating
case 3:
{
if ((dayDiff / 30) % (event.getRepeating ().getRepeatsEveryIndex () + 1) == 0)
{
String[] firstSplit = Domain.DATE_FORMAT.format (cal.getTime ()).split ("/");
String[] secondSplit = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
cloneEventWithRepeat (event, firstSplit[1].equals (secondSplit[1]) && firstSplit[2].equals (secondSplit[2]), cal.getTime ());
}
break;
}
// yearly repeating
case 4:
{
if ((dayDiff / 365) % (event.getRepeating ().getRepeatsEveryIndex () + 1) == 0)
{
String[] firstSplit = Domain.DATE_FORMAT.format (cal.getTime ()).split ("/");
String[] secondSplit = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
cloneEventWithRepeat (event, firstSplit[1].equals (secondSplit[1]) && firstSplit[2].equals (secondSplit[2]), cal.getTime ());
}
break;
}
}
}
/**
* Destroy all instances of a repeating event (except the given one).
*
* @param event The event to destroy repeating instances of.
*/
private void destroyRepeatingInstances(final Event event)
{
setCursor (Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR));
Thread thread = new Thread (new Runnable ()
{
@Override
public void run()
{
assignmentsTable.removingSelectionInterval = true;
for (int i = domain.utility.repeatingEvents.size () - 1; i >= 0; --i)
{
Event repEvent = domain.utility.repeatingEvents.get (i);
if (repEvent != event
&& repEvent.getRepeating ().getID () == event.getRepeating ().getID ())
{
if (middleTabbedPane.getSelectedIndex () == 1)
{
JPanel parent = (JPanel) repEvent.getParent ();
if (parent != null)
{
parent.remove (repEvent);
parent.invalidate ();
}
shownEvents.remove (repEvent);
}
domain.utility.assignmentsAndEvents.remove (repEvent);
domain.utility.repeatingEvents.remove (repEvent);
repEvent.getCategory ().removeEvent (repEvent);
repEvent.getEventYear ().removeEvent (repEvent);
repEvent.getEventYear ().markChanged ();
assignmentsTableModel.removeRow (domain.utility.getAssignmentOrEventIndexByID (repEvent.getUniqueID ()));
}
}
assignmentsTable.removingSelectionInterval = false;
}
});
thread.start ();
try
{
thread.join ();
}
catch (InterruptedException ex)
{
Domain.LOGGER.add (ex);
}
setCursor (Cursor.getDefaultCursor ());
}
/**
* Display the repeat event dialog for the currently selected event.
*/
protected void showRepeatEventDialog()
{
Event event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
try
{
String nextMonth = Integer.parseInt (event.getDueDate ().substring (0, 2)) + 1 + "";
if (nextMonth.length () == 1)
{
nextMonth = "0" + nextMonth;
}
String endDate = nextMonth + event.getDueDate ().substring (2, event.getDueDate ().length ());
if (event.getRepeating ().getID () != -1)
{
String[] parsed = event.getRepeating ().toString ().split ("-");
endDate = parsed[10];
repeatEventRepeatsComboBox.setSelectedIndex (Integer.parseInt (parsed[0]));
repeatEventRepeatsEveryComboBox.setSelectedIndex (Integer.parseInt (parsed[1]));
reSunCheckBox.setSelected (Boolean.valueOf (parsed[2]));
reMonCheckBox.setSelected (Boolean.valueOf (parsed[3]));
reTueCheckBox.setSelected (Boolean.valueOf (parsed[4]));
reWedCheckBox.setSelected (Boolean.valueOf (parsed[5]));
reThuCheckBox.setSelected (Boolean.valueOf (parsed[6]));
reFriCheckBox.setSelected (Boolean.valueOf (parsed[7]));
reSatCheckBox.setSelected (Boolean.valueOf (parsed[8]));
}
else
{
repeatEventRepeatsComboBox.setSelectedIndex (0);
repeatEventRepeatsEveryComboBox.setSelectedIndex (0);
reSunCheckBox.setSelected (false);
reMonCheckBox.setSelected (false);
reTueCheckBox.setSelected (false);
reWedCheckBox.setSelected (false);
reThuCheckBox.setSelected (false);
reFriCheckBox.setSelected (false);
reSatCheckBox.setSelected (false);
// grab the current day and set it
Calendar cal = Calendar.getInstance ();
try
{
cal.setTime (Domain.DATE_FORMAT.parse (event.getDueDate ()));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
switch (cal.get (Calendar.DAY_OF_WEEK))
{
case 1:
{
reSunCheckBox.setSelected (true);
break;
}
case 2:
{
reMonCheckBox.setSelected (true);
break;
}
case 3:
{
reTueCheckBox.setSelected (true);
break;
}
case 4:
{
reWedCheckBox.setSelected (true);
break;
}
case 5:
{
reThuCheckBox.setSelected (true);
break;
}
case 6:
{
reFriCheckBox.setSelected (true);
break;
}
case 7:
{
reSatCheckBox.setSelected (true);
break;
}
}
}
repeatEventEndDateChooser.setDate (Domain.DATE_FORMAT.parse (endDate));
repeatEventChanges = false;
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
repeatEventDialog.pack ();
repeatEventDialog.setSize (230, repeatEventDialog.getHeight ());
repeatEventDialog.setLocation (eventRepeatButton.getLocationOnScreen ().x - (repeatEventDialog.getWidth () - eventRepeatButton.getWidth ()),
eventRepeatButton.getLocationOnScreen ().y + 20);
repeatEventDialog.setVisible (true);
}
/**
* Swaps the first and second element in the given list.
*
* @param model The list to swap the elements in.
* @param index 0 for terms, 1 for courses, 2 for types, 3 for textbooks, 4
* for instructors
* @param first The first element location.
* @param second The second element location.
*/
public void swap(ExtendedSettingsTableModel model, int index, int first, int second)
{
Object temp1 = model.getValueAt (first, 0);
Object temp2 = model.getValueAt (first, 1);
Object temp3 = model.getValueAt (first, 2);
model.setValueAt (model.getValueAt (second, 0), first, 0);
model.setValueAt (model.getValueAt (second, 1), first, 1);
try
{
model.setValueAt (model.getValueAt (second, 2), first, 2);
}
catch (ArrayIndexOutOfBoundsException ex)
{
}
model.setValueAt (temp1, second, 0);
model.setValueAt (temp2, second, 1);
try
{
model.setValueAt (temp3, second, 2);
}
catch (ArrayIndexOutOfBoundsException ex)
{
}
switch (index)
{
case 0:
{
root.insert ((Term) root.getChildAt (second), first);
domain.refreshTermTree ();
Term tempType = domain.utility.terms.get (first);
domain.utility.terms.set (first, domain.utility.terms.get (second));
domain.utility.terms.set (second, tempType);
break;
}
case 1:
{
Course tempType = domain.utility.courses.get (first);
domain.utility.courses.set (first, domain.utility.courses.get (second));
domain.utility.courses.set (second, tempType);
break;
}
case 2:
{
AssignmentType tempType = domain.utility.types.get (first);
domain.utility.types.set (first, domain.utility.types.get (second));
domain.utility.types.set (second, tempType);
break;
}
case 3:
{
Textbook tempType = domain.utility.textbooks.get (first);
domain.utility.textbooks.set (first, domain.utility.textbooks.get (second));
domain.utility.textbooks.set (second, tempType);
break;
}
case 4:
{
Instructor tempType = domain.utility.instructors.get (first);
domain.utility.instructors.set (first, domain.utility.instructors.get (second));
domain.utility.instructors.set (second, tempType);
break;
}
}
}
/**
* Retrieve a reference to the domain class.
*/
public Domain getDomain()
{
return domain;
}
/**
* Refreshes the days marked as busy on the mini calendar.
*/
public void refreshBusyDays()
{
Calendar cal = Calendar.getInstance ();
cal.setTime (miniCalendar.getDate ());
int year = cal.get (Calendar.YEAR);
int month = cal.get (Calendar.MONTH) + 1;
int dueCount = 0;
miniCalendar.getDayChooser ().revertAllDayForegrounds ();
for (int i = 0; i < domain.utility.assignmentsAndEvents.size (); ++i)
{
ListItem item = domain.utility.assignmentsAndEvents.get (i);
try
{
boolean isDone = true;
Date dueDate = Domain.DATE_FORMAT.parse (item.getDueDate ());
if (item.isAssignment () && !((Assignment) item).isDone () && dueDate.compareTo (domain.today) == 0)
{
++dueCount;
}
if (item.isAssignment ())
{
isDone = ((Assignment) item).isDone ();
}
else
{
Event event = (Event) item;
dueDate = Domain.DATE_AND_TIME_FORMAT.parse (event.getDueDate () + " " + event.getStartTime (0) + ":" + event.getStartTime (1) + " " + event.getStartTime (2));
}
if ((dueDate.compareTo (domain.today) < 0 && item.isAssignment () && !isDone) || !isDone || (dueDate.compareTo (domain.today) >= 0 && !item.isAssignment ()))
{
String[] split = item.getDueDate ().split ("/");
int thisYear = Integer.parseInt (split[2]);
int day = Integer.parseInt (split[1]);
int thisMonth = Integer.parseInt (split[0]);
if (thisYear - year == 0 && thisMonth - month == 0)
{
miniCalendar.getDayChooser ().setDayForeground (day, domain.utility.currentTheme.colorBusyDayInMonth);
}
else
{
Calendar calBef = Calendar.getInstance ();
calBef.setTime (miniCalendar.getDate ());
calBef.add (Calendar.MONTH, -1);
calBef.set (Calendar.DAY_OF_MONTH, lastMonthFirst);
calBef.add (Calendar.DAY_OF_MONTH, -1);
calBef.set (Calendar.HOUR, 12);
calBef.set (Calendar.MINUTE, 00);
calBef.set (Calendar.AM_PM, Calendar.PM);
calBef.add (Calendar.MINUTE, -1);
Calendar monthDate = Calendar.getInstance ();
monthDate.setTime (miniCalendar.getDate ());
monthDate.set (Calendar.DAY_OF_MONTH, 1);
monthDate.add (Calendar.DAY_OF_MONTH, -1);
monthDate.set (Calendar.HOUR, 12);
monthDate.set (Calendar.MINUTE, 00);
monthDate.set (Calendar.AM_PM, Calendar.PM);
Calendar calAft = null;
try
{
buildDaysOutsideMonth ();
int finalDay = Integer.parseInt (((JLabel) ((JPanel) ((JScrollPane) ((JViewport) daysOutsideMonth[daysOutsideMonth.length - 1].getParent ()).getParent ()).getParent ()).getComponent (0)).getText ());
if (finalDay < 7)
{
calAft = Calendar.getInstance ();
calAft.setTime (miniCalendar.getDate ());
calAft.add (Calendar.MONTH, 1);
calAft.set (Calendar.DAY_OF_MONTH, finalDay);
calAft.set (Calendar.HOUR, 12);
calAft.set (Calendar.MINUTE, 00);
calAft.set (Calendar.AM_PM, Calendar.PM);
}
}
catch (NullPointerException ex)
{
}
if (dueDate.after (calBef.getTime ()) && dueDate.before (monthDate.getTime ()))
{
miniCalendar.getDayChooser ().setDayForeground (lastMonthFirst - Integer.parseInt (item.getDueDate ().split ("/")[1]) - 1, domain.utility.currentTheme.colorBusyDayOutsideMonth);
}
else if (calAft != null)
{
monthDate.set (Calendar.DAY_OF_MONTH, monthDate.getActualMaximum (Calendar.DATE));
if (dueDate.after (monthDate.getTime ()) && dueDate.before (calAft.getTime ()))
{
miniCalendar.getDayChooser ().setDayForeground (days.length + Integer.parseInt (item.getDueDate ().split ("/")[1]), domain.utility.currentTheme.colorBusyDayOutsideMonth);
}
}
}
}
else
{
if (dueDate.compareTo (domain.today) >= 0 && isDone && dayIsDone (dueDate))
{
String[] split = item.getDueDate ().split ("/");
int thisYear = Integer.parseInt (split[2]);
int day = Integer.parseInt (split[1]);
int thisMonth = Integer.parseInt (split[0]);
if (thisYear - year == 0 && thisMonth - month == 0)
{
miniCalendar.getDayChooser ().setDayForeground (day, domain.utility.currentTheme.colorDoneDayInMonth);
}
else
{
Calendar calBef = Calendar.getInstance ();
calBef.setTime (miniCalendar.getDate ());
calBef.add (Calendar.MONTH, -1);
calBef.set (Calendar.DAY_OF_MONTH, lastMonthFirst);
calBef.add (Calendar.DAY_OF_MONTH, -1);
calBef.set (Calendar.HOUR, 12);
calBef.set (Calendar.MINUTE, 00);
calBef.set (Calendar.AM_PM, Calendar.PM);
calBef.add (Calendar.MINUTE, -1);
Calendar monthDate = Calendar.getInstance ();
monthDate.setTime (miniCalendar.getDate ());
monthDate.set (Calendar.DAY_OF_MONTH, 1);
monthDate.add (Calendar.DAY_OF_MONTH, -1);
monthDate.set (Calendar.HOUR, 12);
monthDate.set (Calendar.MINUTE, 00);
monthDate.set (Calendar.AM_PM, Calendar.PM);
buildDaysOutsideMonth ();
Calendar calAft = null;
int finalDay = Integer.parseInt (((JLabel) ((JPanel) ((JScrollPane) ((JViewport) daysOutsideMonth[daysOutsideMonth.length - 1].getParent ()).getParent ()).getParent ()).getComponent (0)).getText ());
if (finalDay < 7)
{
calAft = Calendar.getInstance ();
calAft.setTime (miniCalendar.getDate ());
calAft.add (Calendar.MONTH, 1);
calAft.set (Calendar.DAY_OF_MONTH, finalDay);
calAft.set (Calendar.HOUR, 12);
calAft.set (Calendar.MINUTE, 00);
calAft.set (Calendar.AM_PM, Calendar.PM);
}
if (dueDate.after (calBef.getTime ()) && dueDate.before (monthDate.getTime ()))
{
miniCalendar.getDayChooser ().setDayForeground (lastMonthFirst - Integer.parseInt (item.getDueDate ().split ("/")[1]) - 1, domain.utility.currentTheme.colorDoneDayOutsideMonth);
}
else if (calAft != null)
{
monthDate.set (Calendar.DAY_OF_MONTH, monthDate.getActualMaximum (Calendar.DATE));
if (dueDate.after (monthDate.getTime ()) && dueDate.before (calAft.getTime ()))
{
miniCalendar.getDayChooser ().setDayForeground (days.length + Integer.parseInt (item.getDueDate ().split ("/")[1]), domain.utility.currentTheme.colorDoneDayOutsideMonth);
}
}
}
}
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
if (System.getProperty ("os.name").toLowerCase ().contains ("mac"))
{
Application macApp = Application.getApplication ();
if (dueCount > 0)
{
macApp.setDockIconBadge (dueCount + "");
}
else
{
macApp.setDockIconBadge ("");
}
}
}
/**
* Checks that all assignments on this day are done. Used to turn that
* particular day to a blue color if the day is in the future. If only some
* of the assignments are done, the day is still shown as red.
*
* @param dueDate The date to check for all assignments complete on.
* @return True if all assignments are done in this day, false if any are
* left incomplete.
*/
private boolean dayIsDone(Date dueDate)
{
boolean isDone = true;
for (int i = 0; i < domain.utility.assignmentsAndEvents.size (); ++i)
{
try
{
ListItem item = domain.utility.assignmentsAndEvents.get (i);
Date curDate = Domain.DATE_FORMAT.parse (item.getDueDate ());
if (dueDate.compareTo (curDate) == 0 && item.isAssignment () && !((Assignment) item).isDone ())
{
isDone = false;
break;
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
return isDone;
}
/**
* Refreshes assignments and events shown in a given day.
*
* @param index The index of the day to be refreshed.
*/
public void refreshDayInCalendar(int index)
{
ArrayList<ListItem> items = new ArrayList<ListItem> ();
for (int i = 0; i < daysAssignmentsAndEvents[index].getComponentCount (); ++i)
{
items.add ((ListItem) daysAssignmentsAndEvents[index].getComponent (i));
}
// first add all day events
for (int i = 0; i < items.size (); ++i)
{
ListItem item = items.get (i);
if (!item.isAssignment () && ((Event) item).isAllDay ())
{
daysAssignmentsAndEvents[index].add ((Event) item);
}
}
// then add assignments
for (int i = 0; i < items.size (); ++i)
{
ListItem item = items.get (i);
if (item.isAssignment ())
{
daysAssignmentsAndEvents[index].add ((Assignment) item);
}
}
// finally add timed events
ArrayList<Event> timedEvents = new ArrayList<Event> ();
for (int i = 0; i < items.size (); ++i)
{
ListItem item = items.get (i);
if (!item.isAssignment () && !((Event) item).isAllDay ())
{
timedEvents.add ((Event) item);
}
}
sortEventVectorByTime (timedEvents);
for (int i = 0; i < timedEvents.size (); ++i)
{
daysAssignmentsAndEvents[index].add (timedEvents.get (i));
}
}
/**
* Sorts a vector of events by time.
*
* @param timedEvents
*/
private void sortEventVectorByTime(ArrayList<Event> timedEvents)
{
boolean swapped = true;
while (swapped)
{
swapped = false;
for (int i = 0; i < timedEvents.size () - 1; ++i)
{
try
{
Date firstDate = Domain.DATE_AND_TIME_FORMAT.parse (timedEvents.get (i).getDueDate () + " " + timedEvents.get (i).getStartTime (0) + ":" + timedEvents.get (i).getStartTime (1) + " " + timedEvents.get (i).getStartTime (2));
Date secondDate = Domain.DATE_AND_TIME_FORMAT.parse (timedEvents.get (i + 1).getDueDate () + " " + timedEvents.get (i + 1).getStartTime (0) + ":" + timedEvents.get (i + 1).getStartTime (1) + " " + timedEvents.get (i + 1).getStartTime (2));
if (firstDate.after (secondDate))
{
Event temp = timedEvents.get (i);
timedEvents.set (i, timedEvents.get (i + 1));
timedEvents.set (i + 1, temp);
swapped = true;
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
}
}
/**
* Check if the currently selected repeat event has had changes.
*
* @param index The current index for the event.
*/
protected int checkRepeatEventChanges(int index)
{
int response = -1;
if (index != -1 && !mouseDraggingInTable && !domain.utility.assignmentsAndEvents.get (index).isAssignment ())
{
if (!eventChanges.isEmpty () && ((Event) domain.utility.assignmentsAndEvents.get (index)).getRepeating ().getID () != -1)
{
response = 1;
OPTION_PANE.setOptions (REMOVE_REPEATING_CHOICES);
OPTION_PANE.setMessage (domain.language.getString ("modifiedRepeatingEventText"));
OPTION_PANE.setMessageType (JOptionPane.QUESTION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("modifiedRepeatingEvent"));
optionDialog.setVisible (true);
if (OPTION_PANE.getValue () != null)
{
Event event = (Event) domain.utility.assignmentsAndEvents.get (index);
if (Integer.parseInt (ViewPanel.OPTION_PANE.getValue ().toString ()) == ONLY_THIS_INSTANCE_OPTION)
{
// remove the attachment to repetition
event.getRepeating ().setID (-1);
domain.utility.repeatingEvents.remove (event);
// update this instance of the event
event.setItemName (eventNameTextField.getText ());
event.setStartTime (0, Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()));
event.setStartTime (1, Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()));
event.setStartTime (2, Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
event.setEndTime (0, Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()));
event.setEndTime (1, Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()));
event.setEndTime (2, Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
event.setIsAllDay (allDayEventCheckBox.isSelected ());
event.setCategory (domain.utility.preferences.categories.get (categoryComboBox.getSelectedIndex ()));
event.setEventLocation (locationTextField.getText ());
event.setDescription (descriptionTextArea.getText ());
event.getEventYear ().markChanged ();
refreshAssignmentsRowAt (index);
event.refreshText ();
}
else if (Integer.parseInt (ViewPanel.OPTION_PANE.getValue ().toString ()) == ALL_IN_SERIES_OPTION)
{
// scan through all repeating events, update ones with matching repeating IDs
for (int i = 0; i < domain.utility.repeatingEvents.size (); ++i)
{
Event repEvent = domain.utility.repeatingEvents.get (i);
if (repEvent.getRepeating ().getID () == event.getRepeating ().getID ())
{
// update this instance of the event
repEvent.setItemName (eventNameTextField.getText ());
repEvent.setStartTime (0, Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()));
repEvent.setStartTime (1, Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()));
repEvent.setStartTime (2, Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
repEvent.setEndTime (0, Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()));
repEvent.setEndTime (1, Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()));
repEvent.setEndTime (2, Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
repEvent.setIsAllDay (allDayEventCheckBox.isSelected ());
repEvent.setCategory (domain.utility.preferences.categories.get (categoryComboBox.getSelectedIndex ()));
repEvent.setEventLocation (locationTextField.getText ());
repEvent.setDescription (descriptionTextArea.getText ());
repEvent.getEventYear ().markChanged ();
refreshAssignmentsRowAt (domain.utility.getAssignmentOrEventIndexByID (repEvent.getUniqueID ()));
repEvent.refreshText ();
}
}
}
else if (Integer.parseInt (ViewPanel.OPTION_PANE.getValue ().toString ()) == ALL_FOLLOWING_OPTION)
{
long newID = System.currentTimeMillis ();
long oldID = event.getRepeating ().getID ();
// scan through all following repeating events, update ones with matching repeating IDs
for (int i = 0; i < domain.utility.repeatingEvents.size (); ++i)
{
Event repEvent = domain.utility.repeatingEvents.get (i);
try
{
if (repEvent.getRepeating ().getID () == oldID
&& Domain.DATE_FORMAT.parse (event.getDueDate ()).compareTo (Domain.DATE_FORMAT.parse (repEvent.getDueDate ())) <= 0)
{
// update this instance of the event
repEvent.setItemName (eventNameTextField.getText ());
repEvent.setStartTime (0, Domain.HR_FORMAT.format (eventStartHrChooser.getValue ()));
repEvent.setStartTime (1, Domain.MIN_FORMAT.format (eventStartMinChooser.getValue ()));
repEvent.setStartTime (2, Domain.M_FORMAT.format (eventStartMChooser.getValue ()));
repEvent.setEndTime (0, Domain.HR_FORMAT.format (eventEndHrChooser.getValue ()));
repEvent.setEndTime (1, Domain.MIN_FORMAT.format (eventEndMinChooser.getValue ()));
repEvent.setEndTime (2, Domain.M_FORMAT.format (eventEndMChooser.getValue ()));
repEvent.setIsAllDay (allDayEventCheckBox.isSelected ());
repEvent.setCategory (domain.utility.preferences.categories.get (categoryComboBox.getSelectedIndex ()));
repEvent.setEventLocation (locationTextField.getText ());
repEvent.setDescription (descriptionTextArea.getText ());
repEvent.getEventYear ().markChanged ();
refreshAssignmentsRowAt (domain.utility.getAssignmentOrEventIndexByID (repEvent.getUniqueID ()));
repEvent.refreshText ();
// since this is now a separate repetition instance, create it with the new repeating ID
repEvent.getRepeating ().setID (newID);
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
}
else
{
if (tempEvent != null)
{
event.setItemName (tempEvent.getItemName ());
event.setCategory (tempEvent.getCategory ());
event.setDate (tempEvent.getDueDate (), domain.utility);
event.setDescription (tempEvent.getDescription ());
event.setStartTime (0, tempEvent.getStartTime (0));
event.setStartTime (1, tempEvent.getStartTime (1));
event.setStartTime (2, tempEvent.getStartTime (2));
event.setEndTime (0, tempEvent.getEndTime (0));
event.setEndTime (1, tempEvent.getEndTime (1));
event.setEndTime (2, tempEvent.getEndTime (2));
event.setIsAllDay (tempEvent.isAllDay ());
event.setEventLocation (tempEvent.getEventLocation ());
event.setRepeating (tempEvent.getRepeating ().toString ());
event.getRepeating ().setID (tempEvent.getRepeating ().getID ());
event.getEventYear ().markChanged ();
event.refreshRowObject ();
event.refreshText ();
repeatEventChanges = false;
}
}
}
else
{
if (tempEvent != null)
{
Event event = (Event) domain.utility.assignmentsAndEvents.get (index);
event.setItemName (tempEvent.getItemName ());
event.setCategory (tempEvent.getCategory ());
event.setDate (tempEvent.getDueDate (), domain.utility);
event.setDescription (tempEvent.getDescription ());
event.setStartTime (0, tempEvent.getStartTime (0));
event.setStartTime (1, tempEvent.getStartTime (1));
event.setStartTime (2, tempEvent.getStartTime (2));
event.setEndTime (0, tempEvent.getEndTime (0));
event.setEndTime (1, tempEvent.getEndTime (1));
event.setEndTime (2, tempEvent.getEndTime (2));
event.setIsAllDay (tempEvent.isAllDay ());
event.setEventLocation (tempEvent.getEventLocation ());
event.setRepeating (tempEvent.getRepeating ().toString ());
event.getRepeating ().setID (tempEvent.getRepeating ().getID ());
event.getEventYear ().markChanged ();
event.refreshRowObject ();
event.refreshText ();
repeatEventChanges = false;
}
}
}
eventChanges.clear ();
}
return response;
}
/**
* The event that occurs when an item is selected in the assignments and
* events list.
*
* @param e The event trigger object.
*/
public void assignmentsTableRowSelected(ListSelectionEvent e)
{
if (!assignmentsTable.removingSelectionInterval && !mouseDraggingInTable && !ignoreTableSelection)
{
try
{
if (domain.currentIndexFromVector != -1 && assignmentsTable.getVectorIndexFromSelectedRow () != domain.currentIndexFromVector
&& domain.currentIndexFromVector < domain.utility.assignmentsAndEvents.size () && !domain.removingAssignmentOrEvent)
{
checkAssignmentOrEventChanges (domain.currentIndexFromVector);
checkRepeatEventChanges (domain.currentIndexFromVector);
domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).showAsSelected (false);
}
eventChanges.clear ();
repeatEventChanges = false;
if (domain.utility.assignmentsAndEvents.size () > 0 && assignmentsTable.getSelectedRow () != -1)
{
domain.currentIndexFromVector = assignmentsTable.getVectorIndexFromSelectedRow ();
domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).showAsSelected (true);
}
else
{
domain.currentIndexFromVector = -1;
}
}
catch (NullPointerException ex)
{
domain.currentIndexFromVector = -1;
}
if (domain.currentIndexFromVector != -1)
{
ListItem item = domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
String[] oldDate = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
if (item.isAssignment ())
{
showAssignmentDetails (domain.currentIndexFromVector);
}
else
{
showEventDetails (domain.currentIndexFromVector);
try
{
tempEvent = domain.createCloneObject ((Event) item, domain.utility, Domain.DATE_FORMAT.parse (item.getDueDate ()), false);
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
cloneButton.setEnabled (true);
removeButton.setEnabled (true);
checkInstructorButtonState ();
String[] newDate = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
if (middleTabbedPane.getSelectedIndex () == 1
&& !oldDate[0].equals (newDate[0]))
{
loadCalendarView (true);
}
}
else
{
mainDetailsDisplay ();
}
}
else if (assignmentsTable.removingSelectionInterval)
{
try
{
domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).showAsSelected (false);
}
catch (Exception ex)
{
}
domain.currentIndexFromVector = -1;
cloneButton.setEnabled (false);
removeButton.setEnabled (false);
checkInstructorButtonState ();
mainDetailsDisplay ();
}
}
/**
* Determine which main details panel to display when a node is selected.
*/
public void mainDetailsDisplay()
{
if (getSelectedCourseIndex () == -1 && getSelectedTermIndex () != -1)
{
showMainTermDetails ();
}
else if (getSelectedCourseIndex () != -1)
{
showMainCourseDetails ();
}
else
{
clearMainDetailsPanel ();
}
}
/**
* The event that occurs when an item is selected in the term tree.
*
* @param e The triggering event object.
*/
protected void termTreeNodeSelected(TreeSelectionEvent e)
{
assignmentsTable.setSelectedRow (-1);
assignmentsTableRowSelected (new ListSelectionEvent (this, -1, -1, false));
if (!initLoading)
{
filter (true);
}
checkInstructorButtonState ();
mainDetailsDisplay ();
}
/**
* Adjust all columns (except the Assignment column) to their specified
* width, then calculates the remaining space and fills it with the
* Assignment column.
*/
protected void adjustAssignmentTableColumnWidths()
{
assignmentsTable.getColumnModel ().getColumn (0).setMinWidth (20);
assignmentsTable.getColumnModel ().getColumn (0).setMaxWidth (20);
assignmentsTable.getColumnModel ().getColumn (2).setMinWidth (90);
assignmentsTable.getColumnModel ().getColumn (2).setMaxWidth (100);
assignmentsTable.getColumnModel ().getColumn (4).setMinWidth (80);
assignmentsTable.getColumnModel ().getColumn (4).setMaxWidth (80);
assignmentsTable.getColumnModel ().getColumn (5).setMinWidth (50);
assignmentsTable.getColumnModel ().getColumn (5).setMaxWidth (50);
}
/**
* Checks the states of the selected email attribute of the selected
* assignment and/or course to see if it exists; if a professor's email does
* exist, the button to email them becomes available.
*/
protected void checkInstructorButtonState()
{
try
{
Course course = null;
if (domain.currentIndexFromVector != -1 && domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).isAssignment ())
{
course = ((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getCourse ();
}
else if (domain.currentIndexFromVector == -1 && getSelectedCourseIndex () != -1)
{
course = domain.utility.courses.get (getSelectedCourseIndex ());
}
if (course != null)
{
boolean found = false;
for (int i = 0; i < course.getInstructorCount (); ++i)
{
if (!course.getInstructor (i).getInstructorEmail ().equals ("") || !course.getInstructor (i).getInstructorPhone ().equals (""))
{
found = true;
break;
}
}
if (found)
{
askInstructorButton.setEnabled (true);
}
else
{
askInstructorButton.setEnabled (false);
}
}
else
{
askInstructorButton.setEnabled (false);
}
}
catch (ArrayIndexOutOfBoundsException ex)
{
Domain.LOGGER.add (ex);
}
catch (NullPointerException ex)
{
Domain.LOGGER.add (ex);
}
}
/**
* Checks if any of the details in the assignment detail text fields are
* different than the values in this assignmentsAndEvents stored object.
*
* @param index The index of the assignment to be checked.
*/
public synchronized int checkAssignmentOrEventChanges(int index)
{
int response = -1;
if (index != -1 && !mouseDraggingInTable)
{
ListItem item = domain.utility.assignmentsAndEvents.get (index);
if (item.isAssignment ())
{
Assignment assignment = (Assignment) item;
if (!assignmentNameTextField.getText ().equals (assignment.getItemName ()))
{
assignment.getCourse ().markChanged ();
response = domain.setAssignmentName (index);
}
if (!gradeTextField.getText ().equals (assignment.getGrade ()))
{
assignment.getCourse ().markChanged ();
domain.setAssignmentGrade (index);
}
if (!commentsTextArea.getText ().equals (assignment.getComments ()))
{
assignment.getCourse ().markChanged ();
domain.setAssignmentComments (index);
}
}
else
{
Event event = (Event) item;
if (!eventNameTextField.getText ().equals (event.getItemName ()))
{
event.getEventYear ().markChanged ();
response = domain.setEventName (index);
}
if (!locationTextField.getText ().equals (event.getEventLocation ()))
{
event.getEventYear ().markChanged ();
domain.setEventLocation (index);
}
if (!descriptionTextArea.getText ().equals (event.getDescription ()))
{
event.getEventYear ().markChanged ();
domain.setEventDescription (index);
}
}
}
return response;
}
/**
* Refreshes an entire row of the assignmentsAndEvents table after a value
* has been changed in the assignment object.
*
* @param row The row to be updated.
*/
public void refreshAssignmentsRowAt(int row)
{
if (row != -1)
{
Object[] rowObject = domain.utility.assignmentsAndEvents.get (row).getRowObject ();
int index = assignmentsTable.getSelectableRowFromVectorIndex (row);
if (index != -1)
{
for (int i = 0; i < assignmentsTableModel.getColumnCount (); ++i)
{
assignmentsTableModel.setValueAt (rowObject[i], index, i);
}
}
}
}
/**
* Scroll the assignments list to the element given or to domain.today's
* date.
*
* @param item The item to scroll to, which is null if scrolling to
* domain.today.
*/
public void scrollToItemOrToday(ListItem item)
{
long id = -1;
if (item == null)
{
// only scroll if the assignments and events are sorted by due date
if (domain.utility.preferences.sortIndex == 4)
{
for (int i = 0; i < domain.utility.assignmentsAndEvents.size (); ++i)
{
try
{
if (!Domain.DATE_FORMAT.parse (domain.utility.assignmentsAndEvents.get (i).getDueDate ()).before (domain.today))
{
id = domain.utility.assignmentsAndEvents.get (i).getUniqueID ();
break;
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
}
}
else
{
id = item.getUniqueID ();
}
int index = domain.utility.getTableIndexByID (id);
if (id != -1 && index != -1)
{
assignmentsTable.scrollRectToVisible (assignmentsTable.getCellRect (index, 0, false));
}
}
/**
* Disables all child components in a given component.
*
* @param component The components whose children will all be disabled.
*/
protected void disableAllComponents(JComponent component)
{
for (int i = 0; i < component.getComponents ().length; ++i)
{
component.getComponent (i).setEnabled (false);
}
}
/**
* Sets the selection for the given combo box to the element with the given
* id.
*
* @param box The combo box to set selection for.
* @param id The unique ID to set selected.
*/
public void setComboBoxSelection(JComboBox box, long id)
{
for (int i = 0; i < box.getItemCount (); ++i)
{
if (((ComboListItem) box.getModel ().getElementAt (i)).getUniqueID () == id)
{
box.setSelectedIndex (i);
break;
}
}
}
/**
* Enables all child components in a given component.
*
* @param component The components whose children will all be enabled.
*/
protected void enableAllComponents(JComponent component)
{
for (int i = 0; i < component.getComponents ().length; ++i)
{
component.getComponent (i).setEnabled (true);
}
}
/**
* Show summary of the currently selected course in the main window.
*/
private void showMainCourseDetails()
{
Course course = domain.utility.courses.get (getSelectedCourseIndex ());
courseNameDetailsLabel.setText (course.getTypeName ());
courseNameDetailsLabel.setForeground (course.getColor ());
courseStartDateDetailsLabel.setText (domain.language.getString ("startDate") + ": " + course.getStartDate ());
courseStartDateDetailsLabel.setSize (courseStartDateDetailsLabel.getPreferredSize ());
courseEndDateDetailsLabel.setText (domain.language.getString ("endDate") + ": " + course.getEndDate ());
courseEndDateDetailsLabel.setSize (courseEndDateDetailsLabel.getPreferredSize ());
if (!course.isOnline ())
{
courseStartTimeDetailsLabel.setText (domain.language.getString ("startTime") + ": " + course.getStartTime (0) + ":" + course.getStartTime (1) + " " + course.getStartTime (2));
courseStartTimeDetailsLabel.setSize (courseStartTimeDetailsLabel.getPreferredSize ());
courseEndTimeDetailsLabel.setText (domain.language.getString ("endTime") + ": " + course.getEndTime (0) + ":" + course.getEndTime (1) + " " + course.getEndTime (2));
courseEndTimeDetailsLabel.setSize (courseEndTimeDetailsLabel.getPreferredSize ());
}
else
{
courseStartTimeDetailsLabel.setText (domain.language.getString ("onlineCourse"));
courseStartTimeDetailsLabel.setSize (courseStartTimeDetailsLabel.getPreferredSize ());
courseEndTimeDetailsLabel.setText ("");
}
courseCreditsDetailsLabel.setText (domain.language.getString ("credits") + ": " + (Double.parseDouble (course.getCredits ()) + Double.parseDouble (course.getLabCredits ())));
courseCreditsDetailsLabel.setSize (courseCreditsDetailsLabel.getPreferredSize ());
if (course.isOnline ())
{
courseRoomDetailsLabel.setText ("");
}
else
{
if (!course.getRoomLocation ().replaceAll (" ", "").equals (""))
{
courseRoomDetailsLabel.setText (domain.language.getString ("room") + ": " + course.getRoomLocation ());
}
else
{
courseRoomDetailsLabel.setText (domain.language.getString ("room") + ": " + domain.language.getString ("notApplicableAbbrev"));
}
courseRoomDetailsLabel.setSize (courseRoomDetailsLabel.getPreferredSize ());
}
String listedDays = course.getDaysString (domain.language);
if (!course.isOnline () && listedDays.length () > 0)
{
String daysString = domain.language.getString ("day");
if (listedDays.split (",").length > 1)
{
daysString = domain.language.getString ("days");
}
courseDaysDetailsLabel.setText ("<html>" + daysString + ": " + listedDays + "</html>");
courseDaysDetailsLabel.setSize (courseDaysDetailsLabel.getPreferredSize ());
}
else
{
courseDaysDetailsLabel.setText ("");
}
courseTotalAssignmentsDetailsLabel.setText (domain.language.getString ("totalAssignments") + ": " + Domain.NUM_FORMAT.format (course.getAssignmentCount ()));
courseTotalAssignmentsDetailsLabel.setSize (courseTotalAssignmentsDetailsLabel.getPreferredSize ());
courseUnfinishedDetailsLabel.setText (" " + domain.language.getString ("unfinished") + ": " + Domain.NUM_FORMAT.format (course.getUnfinishedAssignmentCount ()));
courseUnfinishedDetailsLabel.setSize (courseUnfinishedDetailsLabel.getPreferredSize ());
double grade = domain.calculateGradeForCourse (course) / 100;
courseCurrentGradeDetailsLabel.setText (domain.language.getString ("averageGrade") + ": " + (grade == -0.01 ? domain.language.getString ("notApplicableAbbrev") : Domain.PERCENT_FORMAT.format (grade)));
courseCurrentGradeDetailsLabel.setSize (courseCurrentGradeDetailsLabel.getPreferredSize ());
courseTypesDetailsLabel.setText (domain.language.getString ("types") + ": " + course.getTypeCount ());
courseTypesDetailsLabel.setSize (courseTypesDetailsLabel.getPreferredSize ());
courseTextbooksDetailsLabel.setText (domain.language.getString ("textbooks") + ": " + course.getTextbookCount ());
courseTextbooksDetailsLabel.setSize (courseTextbooksDetailsLabel.getPreferredSize ());
courseContentPanel.setVisible (true);
userDetailsContentPanel.setVisible (false);
noUserDetailsPanel.setVisible (false);
blankContentPanel.setVisible (false);
termContentPanel.setVisible (false);
assignmentContentPanel.setVisible (false);
eventContentPanel.setVisible (false);
((TitledBorder) rightPanel.getBorder ()).setTitle (domain.language.getString ("courseDetails"));
rightPanel.invalidate ();
}
/**
* Show summary of the currently selected term in the main window.
*/
private void showMainTermDetails()
{
Term term = domain.utility.terms.get (getSelectedTermIndex ());
termNameDetailsLabel.setText (term.getTypeName ());
termStartDateDetailsLabel.setText (domain.language.getString ("startDate") + ": " + term.getStartDate ());
termStartDateDetailsLabel.setSize (termStartDateDetailsLabel.getPreferredSize ());
termEndDateDetailsLabel.setText (domain.language.getString ("endDate") + ": " + term.getEndDate ());
termEndDateDetailsLabel.setSize (termEndDateDetailsLabel.getPreferredSize ());
termCoursesDetailsLabel.setText (domain.language.getString ("courses") + ": " + term.getCourseCount ());
termCoursesDetailsLabel.setSize (termCoursesDetailsLabel.getPreferredSize ());
termCreditsDetailsLabel.setText (domain.language.getString ("credits") + ": " + term.getCreditCount ());
termCreditsDetailsLabel.setSize (termCreditsDetailsLabel.getPreferredSize ());
termTotalAssignmentsDetailsLabel.setText (domain.language.getString ("totalAssignments") + ": " + Domain.NUM_FORMAT.format (term.getAssignmentCount ()));
termTotalAssignmentsDetailsLabel.setSize (termTotalAssignmentsDetailsLabel.getPreferredSize ());
termUnfinishedDetailsLabel.setText (" " + domain.language.getString ("unfinished") + ": " + Domain.NUM_FORMAT.format (term.getUnfinishedAssignmentCount ()));
termUnfinishedDetailsLabel.setSize (termUnfinishedDetailsLabel.getPreferredSize ());
double grade = domain.calculateGradeForTerm (term) / 100;
termAvgGradeDetailsLabel.setText (domain.language.getString ("averageGrade") + ": " + (grade == -0.01 ? domain.language.getString ("notApplicableAbbrev") : Domain.PERCENT_FORMAT.format (grade)));
termAvgGradeDetailsLabel.setSize (termAvgGradeDetailsLabel.getPreferredSize ());
termTypesDetailsLabel.setText (domain.language.getString ("types") + ": " + term.getTypesCount ());
termTypesDetailsLabel.setSize (termTypesDetailsLabel.getPreferredSize ());
termTextbooksDetailsLabel.setText (domain.language.getString ("textbooks") + ": " + term.getTextbooksCount ());
termTextbooksDetailsLabel.setSize (termTextbooksDetailsLabel.getPreferredSize ());
termContentPanel.setVisible (true);
courseContentPanel.setVisible (false);
userDetailsContentPanel.setVisible (false);
noUserDetailsPanel.setVisible (false);
blankContentPanel.setVisible (false);
assignmentContentPanel.setVisible (false);
eventContentPanel.setVisible (false);
((TitledBorder) rightPanel.getBorder ()).setTitle (domain.language.getString ("termDetails"));
rightPanel.invalidate ();
}
/**
* Ensure there is at least one user detail specified.
*/
private boolean emptyStudentDetails()
{
if (domain.utility.userDetails.getSchool ().equals ("")
&& domain.utility.userDetails.getIdNumber ().equals ("")
&& domain.utility.userDetails.getBoxNumber ().equals ("")
&& domain.utility.userDetails.getAdvisorName ().equals ("")
&& domain.utility.userDetails.getAdvisorOfficeHours ().equals ("")
&& domain.utility.userDetails.getAdvisorsOfficeLocation ().equals ("")
&& domain.utility.userDetails.getAdvisorEmail ().equals ("")
&& domain.utility.userDetails.getAdvisorPhone ().equals ("")
&& domain.utility.userDetails.getEmail ().equals (""))
{
return true;
}
else
{
return false;
}
}
/**
* Show summary of user details in the main window.
*/
private void clearMainDetailsPanel()
{
closeRepeatEventDialog ();
assignmentsTable.setSelectedRow (-1);
if (emptyStudentDetails ())
{
noUserDetailsPanel.setVisible (true);
blankContentPanel.setVisible (false);
userDetailsContentPanel.setVisible (false);
termContentPanel.setVisible (false);
courseContentPanel.setVisible (false);
assignmentContentPanel.setVisible (false);
eventContentPanel.setVisible (false);
}
else
{
userNameDetailsLabel.setText (domain.utility.userDetails.getStudentName ());
if (!domain.utility.userDetails.getSchool ().equals (""))
{
schoolDetailsLabel.setText (domain.language.getString ("school") + ": " + domain.utility.userDetails.getSchool ());
schoolDetailsLabel.setSize (schoolDetailsLabel.getPreferredSize ());
}
else
{
schoolDetailsLabel.setText ("");
}
if (!domain.utility.userDetails.getIdNumber ().equals (""))
{
idNumberDetailsLabel.setText (domain.language.getString ("idNumber") + ": " + domain.utility.userDetails.getIdNumber ());
idNumberDetailsLabel.setSize (idNumberDetailsLabel.getPreferredSize ());
}
else
{
idNumberDetailsLabel.setText ("");
}
if (!domain.utility.userDetails.getBoxNumber ().equals (""))
{
boxNumberDetailsLabel.setText (domain.language.getString ("boxNumber") + ": " + domain.utility.userDetails.getBoxNumber ());
boxNumberDetailsLabel.setSize (boxNumberDetailsLabel.getPreferredSize ());
}
else
{
boxNumberDetailsLabel.setText ("");
}
if (!domain.utility.userDetails.getAdvisorName ().equals (""))
{
advisorDetailsLabel.setText (domain.language.getString ("advisor") + ": " + domain.utility.userDetails.getAdvisorName ());
advisorDetailsLabel.setSize (advisorDetailsLabel.getPreferredSize ());
}
else
{
advisorDetailsLabel.setText ("");
}
if (!domain.utility.userDetails.getAdvisorOfficeHours ().equals (""))
{
officeHoursDetailsLabel.setText (domain.language.getString ("officeHours") + ": " + domain.utility.userDetails.getAdvisorOfficeHours ());
officeHoursDetailsLabel.setSize (officeHoursDetailsLabel.getPreferredSize ());
}
else
{
officeHoursDetailsLabel.setText ("");
}
if (!domain.utility.userDetails.getAdvisorsOfficeLocation ().equals (""))
{
officeLocationDetailsLabel.setText (domain.language.getString ("officeLocation") + ": " + domain.utility.userDetails.getAdvisorsOfficeLocation ());
officeLocationDetailsLabel.setSize (officeLocationDetailsLabel.getPreferredSize ());
}
else
{
officeLocationDetailsLabel.setText ("");
}
if (!domain.utility.userDetails.getAdvisorEmail ().equals ("")
|| !domain.utility.userDetails.getAdvisorPhone ().equals (""))
{
contactAdvisorButton.setVisible (true);
}
else
{
contactAdvisorButton.setVisible (false);
}
userDetailsContentPanel.setVisible (true);
noUserDetailsPanel.setVisible (false);
blankContentPanel.setVisible (false);
termContentPanel.setVisible (false);
courseContentPanel.setVisible (false);
assignmentContentPanel.setVisible (false);
eventContentPanel.setVisible (false);
}
((TitledBorder) rightPanel.getBorder ()).setTitle (domain.language.getString ("userDetails"));
rightPanel.invalidate ();
cloneButton.setEnabled (false);
removeButton.setEnabled (false);
checkInstructorButtonState ();
}
/**
* Displays the details for the currently selected assignment in the
* Assignment Details panel of the main area.
*
* @param index The index of the assignment selected
*/
private void showAssignmentDetails(int index)
{
if (domain.currentIndexFromVector != -1)
{
domain.assignmentOrEventLoading.push (true);
closeRepeatEventDialog ();
domain.utility.loadDetailsCourseBox ();
domain.utility.loadDetailsTextbookBox ();
domain.utility.loadDetailsTypeBox ();
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (index);
try
{
dueDateChooser.setDate (Domain.DATE_FORMAT.parse (assignment.getDueDate ()));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
dueHrChooser.setValue (Domain.HR_FORMAT.parse (assignment.getDueTime (0)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
dueMinChooser.setValue (Domain.MIN_FORMAT.parse (assignment.getDueTime (1)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
dueMChooser.setValue (Domain.M_FORMAT.parse (assignment.getDueTime (2)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
setComboBoxSelection (detailsCourseComboBox, assignment.getCourse ().getUniqueID ());
if (assignment.getTextbook () != null)
{
setComboBoxSelection (detailsTextbookComboBox, assignment.getTextbook ().getUniqueID ());
}
if (assignment.getType () != null)
{
setComboBoxSelection (detailsTypeComboBox, assignment.getType ().getUniqueID ());
}
prioritySlider.setValue (assignment.getPriority ());
completedCheckBox.setSelected (assignment.isDone ());
completedCheckBoxActionPerformed (null);
gradeTextField.setText (assignment.getGrade ());
commentsTextArea.setText (assignment.getComments ());
assignmentContentPanel.setVisible (true);
termContentPanel.setVisible (false);
courseContentPanel.setVisible (false);
eventContentPanel.setVisible (false);
userDetailsContentPanel.setVisible (false);
noUserDetailsPanel.setVisible (false);
blankContentPanel.setVisible (false);
((TitledBorder) rightPanel.getBorder ()).setTitle (domain.language.getString ("assignmentDetails"));
rightPanel.invalidate ();
if (middleTabbedPane.getSelectedIndex () == 1 && assignment.getParent () != null)
{
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = (JPanel) assignment.getParent ().getParent ().getParent ().getParent ();
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
try
{
miniCalendar.setDate (Domain.DATE_FORMAT.parse (assignment.getDueDate ()));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
refreshBusyDays ();
assignmentNameTextField.setText (assignment.getItemName ());
if (dontReselectName.empty ())
{
assignmentNameTextField.requestFocus ();
assignmentNameTextField.selectAll ();
}
domain.assignmentOrEventLoading.pop ();
}
}
/**
* Displays the details for the currently selected assignment in the
* Assignment Details panel of the main area.
*
* @param index The index of the event selected.
*/
private void showEventDetails(int index)
{
domain.assignmentOrEventLoading.push (true);
closeRepeatEventDialog ();
domain.refreshCategoryComboModel ();
Event event = (Event) domain.utility.assignmentsAndEvents.get (index);
try
{
eventDateChooser.setDate (Domain.DATE_FORMAT.parse (event.getDueDate ()));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
eventStartHrChooser.setValue (Domain.HR_FORMAT.parse (event.getStartTime (0)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
eventStartMinChooser.setValue (Domain.MIN_FORMAT.parse (event.getStartTime (1)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
eventStartMChooser.setValue (Domain.M_FORMAT.parse (event.getStartTime (2)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
eventEndHrChooser.setValue (Domain.HR_FORMAT.parse (event.getEndTime (0)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
eventEndMinChooser.setValue (Domain.MIN_FORMAT.parse (event.getEndTime (1)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
try
{
eventEndMChooser.setValue (Domain.M_FORMAT.parse (event.getEndTime (2)));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
allDayEventCheckBox.setSelected (event.isAllDay ());
allDayEventCheckBoxActionPerformed (null);
locationTextField.setText (event.getEventLocation ());
if (!event.getEventLocation ().replaceAll (" ", "").equals (""))
{
googleMapsButton.setEnabled (true);
}
else
{
googleMapsButton.setEnabled (false);
}
descriptionTextArea.setText (event.getDescription ());
categoryComboBox.setSelectedItem (event.getCategory ().getName ());
eventContentPanel.setVisible (true);
termContentPanel.setVisible (false);
courseContentPanel.setVisible (false);
assignmentContentPanel.setVisible (false);
userDetailsContentPanel.setVisible (false);
noUserDetailsPanel.setVisible (false);
blankContentPanel.setVisible (false);
((TitledBorder) rightPanel.getBorder ()).setTitle (domain.language.getString ("eventDetails"));
rightPanel.invalidate ();
if (middleTabbedPane.getSelectedIndex () == 1 && event.getParent () != null)
{
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = (JPanel) event.getParent ().getParent ().getParent ().getParent ();
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
try
{
miniCalendar.setDate (Domain.DATE_FORMAT.parse (event.getDueDate ()));
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
refreshBusyDays ();
eventNameTextField.setText (event.getItemName ());
if (dontReselectName.empty ())
{
eventNameTextField.requestFocus ();
eventNameTextField.selectAll ();
}
domain.assignmentOrEventLoading.pop ();
}
/**
* Displays the edit menu with buttons enabled/disabled appropriately.
*
* @param evt The causing event.
*/
public void showTermEditMenu(MouseEvent evt)
{
if (!initLoading)
{
addTermEditMenuItem.setEnabled (true);
if (termTree.getRowForLocation (evt.getX (), evt.getY ()) != -1)
{
if (termTree.getPathForLocation (evt.getX (), evt.getY ()).getParentPath ().toString ().equals ("[root]"))
{
editTermEditMenuItem.setEnabled (true);
removeTermEditMenuItem.setEnabled (true);
editInstructorsEditMenuItem.setEnabled (false);
editTypesEditMenuItem.setEnabled (false);
editTextbooksEditMenuItem.setEnabled (false);
editCourseEditMenuItem.setEnabled (false);
removeCourseEditMenuItem.setEnabled (false);
courseWebsiteMenuItem.setEnabled (false);
labWebsiteMenuItem.setEnabled (false);
}
else
{
editTermEditMenuItem.setEnabled (true);
removeTermEditMenuItem.setEnabled (true);
editInstructorsEditMenuItem.setEnabled (true);
editTypesEditMenuItem.setEnabled (true);
editTextbooksEditMenuItem.setEnabled (true);
editCourseEditMenuItem.setEnabled (true);
removeCourseEditMenuItem.setEnabled (true);
if (!domain.utility.courses.get (getSelectedCourseIndex ()).getCourseWebsite ().equals (""))
{
courseWebsiteMenuItem.setEnabled (true);
}
else
{
courseWebsiteMenuItem.setEnabled (false);
}
if (domain.utility.courses.get (getSelectedCourseIndex ()).hasLab ()
&& domain.utility.courses.get (getSelectedCourseIndex ()).getLabWebsite ().equals (""))
{
labWebsiteMenuItem.setEnabled (true);
}
else
{
labWebsiteMenuItem.setEnabled (false);
}
}
}
else
{
editTermEditMenuItem.setEnabled (false);
removeTermEditMenuItem.setEnabled (false);
editCourseEditMenuItem.setEnabled (false);
editInstructorsEditMenuItem.setEnabled (false);
editTypesEditMenuItem.setEnabled (false);
editTextbooksEditMenuItem.setEnabled (false);
removeCourseEditMenuItem.setEnabled (false);
courseWebsiteMenuItem.setEnabled (false);
labWebsiteMenuItem.setEnabled (false);
}
if (domain.utility.terms.size () > 0)
{
addCourseEditMenuItem.setEnabled (true);
}
else
{
addCourseEditMenuItem.setEnabled (false);
}
if (domain.utility.courses.size () > 0
&& ((getSelectedCourseIndex () == -1 && getSelectedTermIndex () == -1)
|| (getSelectedTermIndex () != -1 && domain.utility.terms.get (getSelectedTermIndex ()).getCourseCount () > 0)))
{
addAssignmentTermEditMenuItem.setEnabled (true);
}
else
{
addAssignmentTermEditMenuItem.setEnabled (false);
}
}
else
{
addTermEditMenuItem.setEnabled (false);
addCourseEditMenuItem.setEnabled (false);
addAssignmentTermEditMenuItem.setEnabled (false);
editTermEditMenuItem.setEnabled (false);
removeTermEditMenuItem.setEnabled (false);
editInstructorsEditMenuItem.setEnabled (false);
editTypesEditMenuItem.setEnabled (false);
editTextbooksEditMenuItem.setEnabled (false);
editCourseEditMenuItem.setEnabled (false);
removeCourseEditMenuItem.setEnabled (false);
courseWebsiteMenuItem.setEnabled (false);
labWebsiteMenuItem.setEnabled (false);
}
termEditMenu.setLocation (evt.getLocationOnScreen ());
termEditMenu.show (termTree, evt.getPoint ().x, evt.getPoint ().y);
}
/**
* Shows the assignment edit menu with buttons enabled/disabled
* appropriately.
*
* @param evt The causing event.
*/
public void showAssignmentAndEventEditMenu(MouseEvent evt)
{
if (!initLoading)
{
addEventEditMenuItem.setEnabled (true);
int index = assignmentsTable.getVectorIndexFromSelectedRow (assignmentsTable.rowAtPoint (evt.getPoint ()));
if (index != -1)
{
cloneEditMenuItem.setEnabled (true);
removeEditMenuItem.setEnabled (true);
}
else
{
cloneEditMenuItem.setEnabled (false);
removeEditMenuItem.setEnabled (false);
}
if (domain.utility.courses.size () > 0
&& ((getSelectedCourseIndex () == -1 && getSelectedTermIndex () == -1)
|| (getSelectedTermIndex () != -1 && domain.utility.terms.get (getSelectedTermIndex ()).getCourseCount () > 0)))
{
addAssignmentEditMenuItem.setEnabled (true);
}
else
{
addAssignmentEditMenuItem.setEnabled (false);
}
}
else
{
addAssignmentEditMenuItem.setEnabled (false);
addEventEditMenuItem.setEnabled (false);
removeEditMenuItem.setEnabled (false);
cloneEditMenuItem.setEnabled (false);
}
assignmentsEditMenu.show (evt.getComponent (), evt.getPoint ().x, evt.getPoint ().y);
}
/**
* Expands all possible nodes in the term tree.
*
* @param e The firing event.
*/
protected void expandTermTree(TreeExpansionEvent e)
{
for (int row = 0; row < termTree.getRowCount (); ++row)
{
termTree.expandRow (row);
}
}
/**
* Enables buttons relating to course adding.
*/
protected void enableCourseButtons()
{
addCourseMenuItem.setEnabled (true);
mainFrame.addCourseTopMenuItem.setEnabled (true);
}
/**
* Disables buttons relating to course adding.
*/
protected void disableCourseButtons()
{
addCourseMenuItem.setEnabled (false);
mainFrame.addCourseTopMenuItem.setEnabled (false);
}
/**
* Enables buttons relating to assignment adding.
*/
protected void enableAssignmentButtons()
{
addAssignmentMenuItem.setEnabled (true);
mainFrame.addAssignmentTopMenuItem.setEnabled (true);
}
/**
* Disables buttons relating to assignment adding.
*/
protected void disableAssignmentButtons()
{
addAssignmentMenuItem.setEnabled (false);
mainFrame.addAssignmentTopMenuItem.setEnabled (false);
}
/**
* Retrieves the current selected course from the term tree.
*
* @return The currently selected course in the term tree.
*/
public int getSelectedCourseIndex()
{
try
{
if (termTree.getSelectionPath ().getParentPath ().toString ().equals ("[root]"))
{
return -1;
}
}
catch (NullPointerException ex)
{
return -1;
}
try
{
if (termTree.getSelectionRows () != null)
{
String[] path = termTree.getSelectionPath ().toString ().split (", ");
if (path[0].startsWith ("["))
{
path[0] = path[0].substring (1, path[0].length ());
}
if (path[path.length - 1].endsWith ("]"))
{
path[path.length - 1] = path[path.length - 1].substring (0, path[path.length - 1].length () - 1);
}
for (int i = 0; i < domain.utility.courses.size (); ++i)
{
TreeNode[] nodes = domain.utility.courses.get (i).getPath ();
boolean match = true;
for (int j = 0; j < nodes.length; ++j)
{
try
{
if (!path[j].equals (nodes[j].toString ()))
{
match = false;
}
}
catch (ArrayIndexOutOfBoundsException ex)
{
match = false;
break;
}
}
if (match)
{
return i;
}
}
}
}
catch (Exception ex)
{
return -1;
}
return -1;
}
/**
* Retrieves the selected course index relative to the selected term index.
*
* @param termIndex The term to be indexed from for the course.
* @return The index value of the course relative to the term.
*/
public int getSelectedCourseIndexFrom(int termIndex)
{
int index = -1;
if (termTree.getSelectionRows () != null)
{
for (int i = 0; i <= termTree.getSelectionRows ()[0]; ++i)
{
if (termTree.getPathForRow (i).getParentPath ().toString ().equals ((new TreePath (domain.utility.terms.get (termIndex).getPath ())).toString ()))
{
++index;
}
}
}
return index;
}
/**
* Construct the daysOutsideMonth array if it is null.
*/
private void buildDaysOutsideMonth()
{
if (daysOutsideMonth == null)
{
constructCalendarForMonth ();
}
}
/**
* Constructs the visual calendar for the current month, filling the array
* of JPanel days as it goes.
*
* @return The first day of the month.
*/
private int[] constructCalendarForMonth()
{
Date date = miniCalendar.getDate ();
Calendar cal = Calendar.getInstance ();
cal.setTime (date);
int lastDate = cal.getActualMaximum (Calendar.DATE);
cal.set (Calendar.DAY_OF_MONTH, lastDate);
int lastDay = cal.get (Calendar.DAY_OF_MONTH);
daysAssignmentsAndEvents = new JPanel[lastDay];
days = new ColoredJPanel[lastDay];
int numWeeks = cal.get (Calendar.WEEK_OF_MONTH);
if (numWeeks > 5)
{
monthDaysPanel.setLayout (new GridLayout (6, 7));
monthDaysPanel.add (extraDayPanel1);
monthDaysPanel.add (extraDayPanel2);
monthDaysPanel.add (extraDayPanel3);
monthDaysPanel.add (extraDayPanel4);
monthDaysPanel.add (extraDayPanel5);
monthDaysPanel.add (extraDayPanel6);
monthDaysPanel.add (extraDayPanel7);
}
cal.set (Calendar.DAY_OF_MONTH, 1);
int firstDay = cal.get (Calendar.DAY_OF_WEEK);
int dayNumber = 1;
date = miniCalendar.getDate ();
Calendar backCal = Calendar.getInstance ();
backCal.setTime (date);
backCal.add (Calendar.MONTH, -1);
int maxDay = backCal.getActualMaximum (Calendar.DATE);
int tempLastMonthLast = maxDay;
backCal.add (Calendar.MONTH, 1);
backCal.set (Calendar.DAY_OF_MONTH, backCal.getActualMaximum (Calendar.DATE));
int lastDayOfWeek = backCal.get (Calendar.DAY_OF_WEEK);
daysOutsideMonth = new JPanel[firstDay - 1 + 7 - lastDayOfWeek];
int outsideMonthIndex = 0;
for (int i = firstDay - 2; i >= 0; --i)
{
days[i] = (ColoredJPanel) monthDaysPanel.getComponent (i);
JLabel label = ((JLabel) ((JPanel) monthDaysPanel.getComponent (i)).getComponent (0));
label.setForeground (domain.utility.currentTheme.colorDayNotInMonthText);
label.setText (maxDay + "");
days[i].setBorder (UNSELECTED_DAY_BORDER);
days[i].setBackground (domain.utility.currentTheme.colorDayNotInMonthBackground1, domain.utility.currentTheme.colorDayNotInMonthBackground2);
daysOutsideMonth[outsideMonthIndex] = (JPanel) ((JViewport) ((JScrollPane) ((JPanel) monthDaysPanel.getComponent (i)).getComponent (1)).getComponent (0)).getComponent (0);
++outsideMonthIndex;
--maxDay;
}
int terminal = lastDay + 1;
for (int i = dayNumber - 1 + firstDay - 1; dayNumber <= lastDay; ++i, ++dayNumber)
{
days[dayNumber - 1] = (ColoredJPanel) monthDaysPanel.getComponent (i);
days[dayNumber - 1].setBorder (UNSELECTED_DAY_BORDER);
JLabel label = ((JLabel) ((JPanel) monthDaysPanel.getComponent (i)).getComponent (0));
label.setForeground (domain.utility.currentTheme.colorDayInMonthText);
label.setText (dayNumber + "");
days[dayNumber - 1].setBackground (domain.utility.currentTheme.colorDayInMonthBackground1, domain.utility.currentTheme.colorDayInMonthBackground2);
daysAssignmentsAndEvents[dayNumber - 1] = (JPanel) ((JViewport) ((JScrollPane) ((JPanel) monthDaysPanel.getComponent (i)).getComponent (1)).getComponent (0)).getComponent (0);
terminal = i;
}
int nextTerminal = terminal;
for (int i = terminal + 1, j = 1; i < monthDaysPanel.getComponentCount (); ++i, ++j)
{
ColoredJPanel monthDayPanel = (ColoredJPanel) monthDaysPanel.getComponent (i);
monthDayPanel.setBorder (UNSELECTED_DAY_BORDER);
monthDayPanel.setBackground (domain.utility.currentTheme.colorDayNotInMonthBackground1, domain.utility.currentTheme.colorDayNotInMonthBackground2);
JLabel label = ((JLabel) monthDayPanel.getComponent (0));
label.setForeground (domain.utility.currentTheme.colorDayNotInMonthText);
label.setText (j + "");
daysOutsideMonth[outsideMonthIndex] = (JPanel) ((JViewport) ((JScrollPane) ((JPanel) monthDaysPanel.getComponent (i)).getComponent (1)).getComponent (0)).getComponent (0);
++outsideMonthIndex;
nextTerminal = j;
}
return new int[]
{
firstDay, maxDay + 1, tempLastMonthLast, nextTerminal
};
}
/**
* Resets the calendar month view to a default, blank template.
*/
private void resetCalendarMonth()
{
extraDay1.removeAll ();
extraDay1.invalidate ();
monthDaysPanel.remove (extraDayPanel1);
extraDay2.removeAll ();
extraDay2.invalidate ();
monthDaysPanel.remove (extraDayPanel2);
extraDay3.removeAll ();
extraDay3.invalidate ();
monthDaysPanel.remove (extraDayPanel3);
extraDay4.removeAll ();
extraDay4.invalidate ();
monthDaysPanel.remove (extraDayPanel4);
extraDay5.removeAll ();
extraDay5.invalidate ();
monthDaysPanel.remove (extraDayPanel5);
extraDay6.removeAll ();
extraDay6.invalidate ();
monthDaysPanel.remove (extraDayPanel6);
extraDay7.removeAll ();
extraDay7.invalidate ();
monthDaysPanel.remove (extraDayPanel7);
monthDaysPanel.setLayout (new GridLayout (5, 7));
// set all month labels to their default color
for (int i = 0; i < monthDaysPanel.getComponentCount (); ++i)
{
((JPanel) monthDaysPanel.getComponent (i)).getComponent (0).setForeground (domain.utility.currentTheme.colorDayInMonthText);
}
// remove all listeners from assignments and events from day panels
for (int i = 0; i < shownAssignments.size (); ++i)
{
try
{
JPanel parent = (JPanel) shownAssignments.get (i).getParent ();
// if the parent is null, the assignment has already been removed
if (parent != null)
{
parent.remove (shownAssignments.get (i));
parent.invalidate ();
}
}
catch (NullPointerException ex)
{
Domain.LOGGER.add (ex);
}
}
// remove all listeners from assignments and events from day panels
for (int i = 0; i < shownEvents.size (); ++i)
{
try
{
JPanel parent = (JPanel) shownEvents.get (i).getParent ();
// if the parent is null, the event has already been removed
if (parent != null)
{
parent.remove (shownEvents.get (i));
parent.invalidate ();
}
}
catch (NullPointerException ex)
{
Domain.LOGGER.add (ex);
}
}
}
/**
* Ensure the current assignment is in the filter view, then add it to shown
* assignments.
*
* @param i The index of the assignment.
* @param assignment A reference to the assignment.
*/
private void checkAndAddAssignment(int i, Assignment assignment)
{
boolean add = true;
if (!domain.utility.isWithinFilteredScope (i)
|| domain.utility.preferences.filter1Index == 2
|| (domain.utility.preferences.filter2Index == 1 && !assignment.isDone ())
|| (domain.utility.preferences.filter2Index == 2 && assignment.isDone ())
|| (domain.utility.preferences.filter2Index == 3 && !assignment.isOverdue ()))
{
add = false;
}
if (add)
{
shownAssignments.add (assignment);
if (assignment.getLabel ().getMouseListeners ().length == 0)
{
assignment.getLabel ().addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
assignmentMousePressed (evt);
}
});
}
if (assignment.getCheckBox ().getItemListeners ().length == 0)
{
assignment.getCheckBox ().addItemListener (new ItemListener ()
{
@Override
public void itemStateChanged(ItemEvent evt)
{
assignmentItemStateChanged (evt);
}
});
}
DRAG_SOURCE.createDefaultDragGestureRecognizer (assignment.getLabel (), DnDConstants.ACTION_MOVE, DND_LISTENER);
}
}
/**
* Ensure the current event is in the filter view, then add it to shown
* assignments.
*
* @param i The index of the assignment.
* @param assignment A reference to the assignment.
*/
private void checkAndAddEvent(int i, Event event)
{
boolean add = true;
try
{
if (!domain.utility.isWithinFilteredScope (i)
|| domain.utility.preferences.filter1Index == 1
|| ((domain.utility.preferences.filter2Index == 1 || domain.utility.preferences.filter2Index == 3) && Domain.DATE_FORMAT.parse (event.getDueDate ()).after (domain.today))
|| (domain.utility.preferences.filter2Index == 2 && Domain.DATE_FORMAT.parse (event.getDueDate ()).before (domain.today)))
{
add = false;
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
if (add)
{
shownEvents.add (event);
if (event.getMouseListeners ().length == 0)
{
event.getLabel ().addMouseListener (new MouseAdapter ()
{
@Override
public void mouseReleased(MouseEvent evt)
{
eventMouseReleased (evt);
}
});
}
DRAG_SOURCE.createDefaultDragGestureRecognizer (event.getLabel (), DnDConstants.ACTION_MOVE, DND_LISTENER);
}
}
/**
* Displays details for the current selected month in the month view panel.
*
* @param reselect True if the current assignment or event's panel should be
* reselected, false otherwise
* @return The index of the first day of the month.
*/
protected int loadCalendarView(boolean reselect)
{
Calendar cal = Calendar.getInstance ();
cal.setTime (miniCalendar.getDate ());
int month = cal.get (Calendar.MONTH);
int year = cal.get (Calendar.YEAR);
currentMonthLabel.setText (miniCalendar.getMonthChooser ().getComboBoxObj ().getItemAt (month).toString ());
currentYearLabel.setText (year + "");
resetCalendarMonth ();
shownAssignments.clear ();
shownEvents.clear ();
int[] results = constructCalendarForMonth ();
int firstDay = results[0];
lastMonthFirst = results[1];
lastMonthLast = results[2];
int nextMonthLast = results[3];
String[] dateSplit = Domain.DATE_FORMAT.format (domain.today).split ("/");
if (Integer.parseInt (dateSplit[0]) - month - 1 == 0 && Integer.parseInt (dateSplit[2]) - year == 0)
{
JLabel label = (JLabel) days[Integer.parseInt (dateSplit[1]) - 1].getComponent (0);
label.setForeground (domain.utility.currentTheme.colorTodayText);
label.setText ("<html><b>" + label.getText () + "</b></html>");
}
for (int i = 0; i < domain.utility.assignmentsAndEvents.size (); ++i)
{
ListItem item = domain.utility.assignmentsAndEvents.get (i);
item.refreshText ();
String[] split = item.getDueDate ().split ("/");
try
{
Calendar cal2 = Calendar.getInstance ();
cal2.setTime (Domain.DATE_FORMAT.parse (item.getDueDate ()));
int yearDiff = cal2.get (Calendar.YEAR) - miniCalendar.getCalendar ().get (Calendar.YEAR);
int diff = miniCalendar.getCalendar ().get (Calendar.MONTH) - cal2.get (Calendar.MONTH) - yearDiff * 12;
if (diff == 0
|| (diff == -1 && Integer.parseInt (split[1]) <= nextMonthLast)
|| (diff == 1 && Integer.parseInt (split[1]) >= lastMonthFirst))
{
if (item.isAssignment ())
{
checkAndAddAssignment (i, (Assignment) item);
}
else
{
checkAndAddEvent (i, (Event) item);
}
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
// first add all day events
for (int i = 0; i < shownEvents.size (); ++i)
{
Event event = shownEvents.get (i);
String[] split = event.getDueDate ().split ("/");
try
{
Calendar cal2 = Calendar.getInstance ();
cal2.setTime (Domain.DATE_FORMAT.parse (event.getDueDate ()));
int yearDiff = cal2.get (Calendar.YEAR) - miniCalendar.getCalendar ().get (Calendar.YEAR);
int diff = miniCalendar.getCalendar ().get (Calendar.MONTH) - cal2.get (Calendar.MONTH) - yearDiff * 12;
if (event.isAllDay ())
{
if (diff == 0)
{
daysAssignmentsAndEvents[Integer.parseInt (split[1]) - 1].add (event);
}
else if (diff == 1)
{
daysOutsideMonth[lastMonthLast - Integer.parseInt (split[1])].add (event);
}
else if (diff == -1)
{
daysOutsideMonth[Integer.parseInt (split[1]) + lastMonthLast - lastMonthFirst].add (event);
}
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
catch (ArrayIndexOutOfBoundsException ex)
{
shownEvents.remove (event);
}
}
// then add assignments
for (int i = 0; i < shownAssignments.size (); ++i)
{
Assignment assignment = shownAssignments.get (i);
String[] split = assignment.getDueDate ().split ("/");
try
{
Calendar cal2 = Calendar.getInstance ();
cal2.setTime (Domain.DATE_FORMAT.parse (assignment.getDueDate ()));
int yearDiff = cal2.get (Calendar.YEAR) - miniCalendar.getCalendar ().get (Calendar.YEAR);
int diff = miniCalendar.getCalendar ().get (Calendar.MONTH) - cal2.get (Calendar.MONTH) - yearDiff * 12;
if (diff == 0)
{
daysAssignmentsAndEvents[Integer.parseInt (split[1]) - 1].add (assignment);
}
else if (diff == 1)
{
daysOutsideMonth[lastMonthLast - Integer.parseInt (split[1])].add (assignment);
}
else if (diff == -1)
{
daysOutsideMonth[Integer.parseInt (split[1]) + lastMonthLast - lastMonthFirst].add (assignment);
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
catch (ArrayIndexOutOfBoundsException ex)
{
shownAssignments.remove (assignment);
}
}
// then add timed events
ArrayList<Event> timedEvents = new ArrayList<Event> ();
for (int i = 0; i < shownEvents.size (); ++i)
{
Event event = shownEvents.get (i);
if (!event.isAllDay ())
{
timedEvents.add (event);
}
}
sortEventVectorByTime (timedEvents);
for (int i = 0; i < timedEvents.size (); ++i)
{
Event event = timedEvents.get (i);
String[] split = event.getDueDate ().split ("/");
try
{
Calendar cal2 = Calendar.getInstance ();
cal2.setTime (Domain.DATE_FORMAT.parse (event.getDueDate ()));
int yearDiff = cal2.get (Calendar.YEAR) - miniCalendar.getCalendar ().get (Calendar.YEAR);
int diff = miniCalendar.getCalendar ().get (Calendar.MONTH) - cal2.get (Calendar.MONTH) - yearDiff * 12;
if (diff == 0)
{
daysAssignmentsAndEvents[Integer.parseInt (split[1]) - 1].add (event);
}
else if (diff == 1)
{
daysOutsideMonth[lastMonthLast - Integer.parseInt (split[1])].add (event);
}
else if (diff == -1)
{
daysOutsideMonth[Integer.parseInt (split[1]) + lastMonthLast - lastMonthFirst].add (event);
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
catch (ArrayIndexOutOfBoundsException ex)
{
timedEvents.remove (event);
}
}
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
selectedDayPanel = days[miniCalendar.getCalendar ().get (Calendar.DAY_OF_MONTH) - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
if (reselect)
{
if (domain.currentIndexFromVector != -1)
{
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
String[] split = domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).getDueDate ().split ("/");
String[] calDate = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
if (split != null)
{
if (Integer.parseInt (split[0]) - Integer.parseInt (calDate[0]) == 0
&& Integer.parseInt (split[2]) - Integer.parseInt (calDate[2]) == 0)
{
selectedDayPanel = days[Integer.parseInt (split[1]) - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
miniCalendar.getDayChooser ().setDay (Integer.parseInt (split[1]));
}
else
{
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
}
}
else
{
String[] split = Domain.DATE_FORMAT.format (domain.today).split ("/");
String[] calDate = Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/");
if (Integer.parseInt (split[0]) - Integer.parseInt (calDate[0]) == 0
&& Integer.parseInt (split[2]) - Integer.parseInt (calDate[2]) == 0)
{
selectedDayPanel = days[Integer.parseInt (Domain.DATE_FORMAT.format (miniCalendar.getDate ()).split ("/")[1]) - 1];
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
}
}
}
for (int i = 0; i < daysAssignmentsAndEvents.length; ++i)
{
daysAssignmentsAndEvents[i].invalidate ();
}
for (int i = 0; i < daysOutsideMonth.length; ++i)
{
daysOutsideMonth[i].invalidate ();
}
refreshBusyDays ();
return firstDay;
}
/**
* Action when an assignment item is clicked in the Calendar View.
*
* @param evt The mouse click event.
*/
protected void assignmentMousePressed(MouseEvent evt)
{
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
int index = domain.utility.getAssignmentOrEventIndexByID (((Assignment) ((JLabel) evt.getSource ()).getParent ()).getUniqueID ());
if (domain.currentIndexFromVector != index)
{
assignmentsTable.setSelectedRowFromVectorIndex (domain.utility.getAssignmentOrEventIndexByID (((Assignment) ((JLabel) evt.getSource ()).getParent ()).getUniqueID ()));
}
else
{
try
{
int shownMonth = miniCalendar.getCalendar ().get (Calendar.MONTH) + 1;
int assnMonth = Integer.parseInt (((Assignment) ((JLabel) evt.getSource ()).getParent ()).getDueDate ().split ("/")[0]);
if (shownMonth != assnMonth)
{
miniCalendar.setDate (Domain.DATE_FORMAT.parse (((Assignment) ((JLabel) evt.getSource ()).getParent ()).getDueDate ()));
loadCalendarView (true);
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
selectedDayPanel = (JPanel) ((Assignment) domain.utility.getAssignmentOrEventByID (((Assignment) ((JLabel) evt.getSource ()).getParent ()).getUniqueID ())).getParent ().getParent ().getParent ().getParent ();
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
int dayIndex = getIndexFromDaysArray (selectedDayPanel);
Calendar cal = miniCalendar.getCalendar ();
cal.set (Calendar.DAY_OF_MONTH, dayIndex + 1);
miniCalendar.setDate (cal.getTime ());
refreshBusyDays ();
if (evt.getButton () == 2 || evt.getButton () == 3)
{
if (domain.utility.courses.size () > 0
&& ((getSelectedCourseIndex () == -1 && getSelectedTermIndex () == -1)
|| (getSelectedTermIndex () != -1 && domain.utility.terms.get (getSelectedTermIndex ()).getCourseCount () > 0)))
{
addAssignmentEditMenuItem.setEnabled (true);
}
else
{
addAssignmentEditMenuItem.setEnabled (false);
}
cloneEditMenuItem.setEnabled (true);
removeEditMenuItem.setEnabled (true);
assignmentsEditMenu.show (evt.getComponent (), evt.getPoint ().x, evt.getPoint ().y);
}
scrollToItemOrToday ((ListItem) ((JLabel) evt.getSource ()).getParent ());
}
/**
* Action when the assignmentsAndEvents item state is changed in the
* Calendar View.
*
* @param evt The mouse click event.
*/
protected void assignmentItemStateChanged(ItemEvent evt)
{
if (!initLoading && !quitting && !domain.removingAssignmentOrEvent && domain.assignmentOrEventLoading.empty ())
{
Assignment assignment = (Assignment) ((JCheckBox) evt.getSource ()).getParent ();
domain.assignmentOrEventLoading.push (true);
assignmentsTable.setSelectedRowFromVectorIndex (domain.utility.getAssignmentOrEventIndexByID (((Assignment) ((JCheckBox) evt.getSource ()).getParent ()).getUniqueID ()));
completedCheckBox.setSelected (assignment.getCheckBox ().isSelected ());
domain.assignmentOrEventLoading.pop ();
completedCheckBoxActionPerformed (null);
}
}
/**
* Action when an event is clicked in the Calendar View.
*
* @param evt The mouse click event.
*/
protected void eventMouseReleased(MouseEvent evt)
{
if (selectedDayPanel != null)
{
selectedDayPanel.setBorder (UNSELECTED_DAY_BORDER);
}
int index = domain.utility.getAssignmentOrEventIndexByID (((Event) ((JLabel) evt.getSource ()).getParent ()).getUniqueID ());
if (domain.currentIndexFromVector != index)
{
assignmentsTable.setSelectedRowFromVectorIndex (domain.utility.getAssignmentOrEventIndexByID (((Event) ((JLabel) evt.getSource ()).getParent ()).getUniqueID ()));
}
else
{
try
{
int shownMonth = miniCalendar.getCalendar ().get (Calendar.MONTH) + 1;
int assnMonth = Integer.parseInt (((Event) ((JLabel) evt.getSource ()).getParent ()).getDueDate ().split ("/")[0]);
if (shownMonth != assnMonth)
{
miniCalendar.setDate (Domain.DATE_FORMAT.parse (((Event) ((JLabel) evt.getSource ()).getParent ()).getDueDate ()));
loadCalendarView (true);
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
selectedDayPanel = (JPanel) ((Event) domain.utility.getAssignmentOrEventByID (((Event) ((JLabel) evt.getSource ()).getParent ()).getUniqueID ())).getParent ().getParent ().getParent ().getParent ();
selectedDayPanel.setBorder (SELECTED_DAY_BORDER);
int dayIndex = getIndexFromDaysArray (selectedDayPanel);
Calendar cal = miniCalendar.getCalendar ();
cal.set (Calendar.DAY_OF_MONTH, dayIndex + 1);
miniCalendar.setDate (cal.getTime ());
refreshBusyDays ();
if (evt.getButton () == 2 || evt.getButton () == 3)
{
if (domain.utility.courses.size () > 0
&& ((getSelectedCourseIndex () == -1 && getSelectedTermIndex () == -1)
|| (getSelectedTermIndex () != -1 && domain.utility.terms.get (getSelectedTermIndex ()).getCourseCount () > 0)))
{
addAssignmentEditMenuItem.setEnabled (true);
}
else
{
addAssignmentEditMenuItem.setEnabled (false);
}
cloneEditMenuItem.setEnabled (true);
removeEditMenuItem.setEnabled (true);
assignmentsEditMenu.show (evt.getComponent (), evt.getPoint ().x, evt.getPoint ().y);
}
else
{
if (!initLoading && !quitting && !domain.removingAssignmentOrEvent && domain.assignmentOrEventLoading.empty ())
{
Event event = (Event) ((JLabel) evt.getSource ()).getParent ();
domain.assignmentOrEventLoading.push (true);
assignmentsTable.setSelectedRowFromVectorIndex (domain.utility.getAssignmentOrEventIndexByID (event.getUniqueID ()));
domain.assignmentOrEventLoading.pop ();
}
}
scrollToItemOrToday ((ListItem) ((JLabel) evt.getSource ()).getParent ());
}
/**
* Searches to see if the current days array contains the specified panel
* and returns the index of that panel, if found.
*
* @param panel The panel to search for.
* @return The index of the panel. Returns -1 if not found.
*/
protected int getIndexFromDaysArray(JPanel panel)
{
for (int i = 0; i < days.length; ++i)
{
if (days[i] == panel)
{
return i;
}
}
return -1;
}
/**
* Retrieves the currently selected (directly or indirectly selected through
* a course) term from the term tree.
*
* @return The currently indirectly or directly selected term in the term
* tree.
*/
public int getSelectedTermIndex()
{
try
{
if (termTree.getSelectionRows () != null)
{
String[] path = termTree.getSelectionPath ().toString ().split (", ");
if (path[0].startsWith ("["))
{
path[0] = path[0].substring (1, path[0].length ());
}
if (path[path.length - 1].endsWith ("]"))
{
path[path.length - 1] = path[path.length - 1].substring (0, path[path.length - 1].length () - 1);
}
for (int i = 0; i < domain.utility.terms.size (); ++i)
{
TreeNode[] nodes = domain.utility.terms.get (i).getPath ();
boolean match = true;
for (int j = 0; j < nodes.length; ++j)
{
try
{
if (!path[j].equals (nodes[j].toString ()))
{
match = false;
}
}
catch (ArrayIndexOutOfBoundsException ex)
{
match = false;
break;
}
}
if (match)
{
return i;
}
}
}
}
catch (Exception ex)
{
return -1;
}
return -1;
}
/**
* Helper method that simply routes to the local add assignment action.
*/
protected void goAddAssignment()
{
addAssignmentMenuItemActionPerformed (null);
}
/**
* Helper method that simply routes to the local add event action.
*/
protected void goAddEvent()
{
addEventMenuItemActionPerformed (null);
}
/**
* Routes immediately to cloning an event.
*/
protected void goCloneEvent()
{
domain.cloneEvent (domain.utility);
}
/**
* Routes immediately to cloning an assignment.
*/
protected void goCloneAssignment()
{
domain.cloneAssignment ();
}
/**
* Removes the currently selected event.
*/
protected synchronized void goRemoveEvent(Event event)
{
if (domain.currentIndexFromVector != -1 || event != null)
{
JCheckBox notAgain = null;
OPTION_PANE.setValue (null);
if (domain.utility.preferences.rmAlert)
{
notAgain = new JCheckBox (domain.language.getString ("dontAskMeAgain"));
notAgain.setFont (domain.utility.currentTheme.fontPlain12);
OPTION_PANE.setOptions (YES_NO_CHOICES);
OPTION_PANE.setMessage (new Object[]
{
domain.language.getString ("removeEventText"), notAgain
});
OPTION_PANE.setMessageType (JOptionPane.QUESTION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("removeEvent"));
optionDialog.setVisible (true);
}
if ((OPTION_PANE.getValue () != null && Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.YES_OPTION) || notAgain == null)
{
boolean noRemove = false;
domain.removingAssignmentOrEvent = true;
if (notAgain != null)
{
domain.utility.preferences.rmAlert = !notAgain.isSelected ();
}
int index = domain.currentIndexFromVector;
boolean silent = true;
if (event == null)
{
event = (Event) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector);
silent = false;
}
int dayIndex = -1;
int eventIndex = -1;
if (event.getRepeating ().getID () != -1)
{
domain.utility.repeatingEvents.remove (event);
boolean removeAll = false;
boolean removeFuture = false;
if (!silent)
{
OPTION_PANE.setOptions (REMOVE_REPEATING_CHOICES);
OPTION_PANE.setMessage (domain.language.getString ("removeRepeatingEventText"));
OPTION_PANE.setMessageType (JOptionPane.QUESTION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("removeRepeatingEvent"));
optionDialog.setVisible (true);
}
else
{
removeAll = true;
removeFuture = true;
}
if (OPTION_PANE.getValue () != null)
{
if (Integer.parseInt (OPTION_PANE.getValue ().toString ()) == ALL_IN_SERIES_OPTION)
{
removeAll = true;
}
else if (Integer.parseInt (OPTION_PANE.getValue ().toString ()) == ALL_FOLLOWING_OPTION)
{
removeFuture = true;
}
else if (Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.CANCEL_OPTION)
{
noRemove = true;
}
}
if (!noRemove && (removeAll || removeFuture))
{
// remove all instances of this event
for (int i = domain.utility.repeatingEvents.size () - 1; i >= 0; --i)
{
Event repEvent = domain.utility.repeatingEvents.get (i);
if (repEvent.getRepeating ().getID () == event.getRepeating ().getID ())
{
try
{
if (removeAll
|| (removeFuture && Domain.DATE_FORMAT.parse (repEvent.getDueDate ()).after (Domain.DATE_FORMAT.parse (event.getDueDate ()))))
{
if (middleTabbedPane.getSelectedIndex () == 1)
{
JPanel parent = (JPanel) repEvent.getParent ();
if (parent != null)
{
parent.remove (repEvent);
parent.invalidate ();
}
shownEvents.remove (repEvent);
}
assignmentsTableModel.removeRow (domain.utility.getAssignmentOrEventIndexByID (repEvent.getUniqueID ()));
domain.utility.assignmentsAndEvents.remove (repEvent);
domain.utility.repeatingEvents.remove (repEvent);
repEvent.getCategory ().removeEvent (repEvent);
repEvent.getEventYear ().removeEvent (repEvent);
repEvent.getEventYear ().markChanged ();
}
}
catch (ParseException ex)
{
Domain.LOGGER.add (ex);
}
}
}
}
if (!noRemove)
{
if (middleTabbedPane.getSelectedIndex () == 1)
{
dayIndex = Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1;
for (int i = 0; i < daysAssignmentsAndEvents[dayIndex].getComponentCount (); ++i)
{
if (event == daysAssignmentsAndEvents[dayIndex].getComponent (i))
{
eventIndex = i;
}
}
daysAssignmentsAndEvents[dayIndex].remove (event);
daysAssignmentsAndEvents[dayIndex].invalidate ();
shownEvents.remove (event);
}
assignmentsTableModel.removeRow (domain.utility.getAssignmentOrEventIndexByID (event.getUniqueID ()));
domain.utility.assignmentsAndEvents.remove (event.getEventYear ().removeEvent (event));
event.getCategory ().removeEvent (event);
event.getEventYear ().removeEvent (event);
event.getEventYear ().markChanged ();
}
loadCalendarView (false);
}
else
{
if (middleTabbedPane.getSelectedIndex () == 1)
{
dayIndex = Integer.parseInt (event.getDueDate ().split ("/")[1]) - 1;
for (int i = 0; i < daysAssignmentsAndEvents[dayIndex].getComponentCount (); ++i)
{
if (event == daysAssignmentsAndEvents[dayIndex].getComponent (i))
{
eventIndex = i;
}
}
daysAssignmentsAndEvents[dayIndex].remove (event);
daysAssignmentsAndEvents[dayIndex].invalidate ();
shownEvents.remove (event);
}
assignmentsTableModel.removeRow (domain.utility.getAssignmentOrEventIndexByID (event.getUniqueID ()));
domain.utility.assignmentsAndEvents.remove (event);
event.getCategory ().removeEvent (event);
event.getEventYear ().removeEvent (event);
}
assignmentsTable.refreshTable ();
if (domain.utility.assignmentsAndEvents.isEmpty ())
{
termTreeNodeSelected (new TreeSelectionEvent (this, null, true, null, null));
}
while (index > assignmentsTableModel.getRowCount () - 1)
{
--index;
}
domain.currentIndexFromVector = index;
if (dayIndex != -1)
{
if (daysAssignmentsAndEvents[dayIndex].getComponentCount () > 1)
{
if (eventIndex < daysAssignmentsAndEvents[dayIndex].getComponentCount ())
{
index = domain.utility.getAssignmentOrEventIndexByID (((ListItem) daysAssignmentsAndEvents[dayIndex].getComponent (eventIndex)).getUniqueID ());
}
else
{
index = domain.utility.getAssignmentOrEventIndexByID (((ListItem) daysAssignmentsAndEvents[dayIndex].getComponent (daysAssignmentsAndEvents[dayIndex].getComponentCount () - 1)).getUniqueID ());
}
}
else
{
if (daysAssignmentsAndEvents[dayIndex].getComponentCount () == 1)
{
index = domain.utility.getAssignmentOrEventIndexByID (((ListItem) daysAssignmentsAndEvents[dayIndex].getComponent (0)).getUniqueID ());
}
else
{
index = -1;
}
}
}
assignmentsTable.setSelectedRowFromVectorIndex (index);
assignmentsTableRowSelected (null);
checkInstructorButtonState ();
domain.removingAssignmentOrEvent = false;
event.getEventYear ().markChanged ();
refreshBusyDays ();
}
}
}
/**
* Removes the currently selected assignment.
*/
protected synchronized void goRemoveAssignment()
{
if (domain.currentIndexFromVector != -1)
{
JCheckBox notAgain = null;
OPTION_PANE.setValue (null);
if (domain.utility.preferences.rmAlert)
{
notAgain = new JCheckBox (domain.language.getString ("dontAskMeAgain"));
notAgain.setFont (domain.utility.currentTheme.fontPlain12);
OPTION_PANE.setOptions (YES_NO_CHOICES);
OPTION_PANE.setMessage (new Object[]
{
domain.language.getString ("removeAssignmentText"), notAgain
});
OPTION_PANE.setMessageType (JOptionPane.QUESTION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("removeAssignment"));
optionDialog.setVisible (true);
}
if ((OPTION_PANE.getValue () != null && Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.YES_OPTION) || notAgain == null)
{
domain.removingAssignmentOrEvent = true;
if (notAgain != null)
{
domain.utility.preferences.rmAlert = !notAgain.isSelected ();
}
int index = domain.currentIndexFromVector;
Assignment assignment = (Assignment) domain.utility.assignmentsAndEvents.get (index);
int dayIndex = -1;
int assignmentIndex = -1;
if (middleTabbedPane.getSelectedIndex () == 1)
{
dayIndex = Integer.parseInt (assignment.getDueDate ().split ("/")[1]) - 1;
for (int i = 0; i < daysAssignmentsAndEvents[dayIndex].getComponentCount (); ++i)
{
if (assignment == daysAssignmentsAndEvents[dayIndex].getComponent (i))
{
assignmentIndex = i;
}
}
daysAssignmentsAndEvents[dayIndex].remove (assignment);
daysAssignmentsAndEvents[dayIndex].invalidate ();
shownAssignments.remove (assignment);
}
assignmentsTableModel.removeRow (assignmentsTable.getSelectableRowFromVectorIndex (index));
domain.utility.assignmentsAndEvents.remove (assignment.getCourse ().removeAssignment (assignment));
assignmentsTable.refreshTable ();
if (domain.utility.assignmentsAndEvents.isEmpty ())
{
termTreeNodeSelected (new TreeSelectionEvent (this, null, true, null, null));
}
try
{
assignmentsTable.getSelectableRowFromVectorIndex (index);
}
catch (IndexOutOfBoundsException ex)
{
--index;
}
domain.currentIndexFromVector = index;
if (dayIndex != -1)
{
if (daysAssignmentsAndEvents[dayIndex].getComponentCount () > 1)
{
if (assignmentIndex < daysAssignmentsAndEvents[dayIndex].getComponentCount ())
{
index = domain.utility.getAssignmentOrEventIndexByID (((ListItem) daysAssignmentsAndEvents[dayIndex].getComponent (assignmentIndex)).getUniqueID ());
}
else
{
index = domain.utility.getAssignmentOrEventIndexByID (((ListItem) daysAssignmentsAndEvents[dayIndex].getComponent (daysAssignmentsAndEvents[dayIndex].getComponentCount () - 1)).getUniqueID ());
}
}
else
{
if (daysAssignmentsAndEvents[dayIndex].getComponentCount () == 1)
{
index = domain.utility.getAssignmentOrEventIndexByID (((ListItem) daysAssignmentsAndEvents[dayIndex].getComponent (0)).getUniqueID ());
}
else
{
index = -1;
}
}
}
assignmentsTable.setSelectedRowFromVectorIndex (index);
assignmentsTableRowSelected (null);
checkInstructorButtonState ();
domain.removingAssignmentOrEvent = false;
assignment.getCourse ().markChanged ();
refreshBusyDays ();
}
}
}
/**
* Prompt the user for print details and run print.
*/
protected void printGetOrganized()
{
printDialog.goViewPrint ();
}
/**
* Import data from the given backup file.
*/
protected void importFromBackup()
{
importFromBackupDialog.goViewImportFromBackup ();
}
/**
* Asks the instructor, launching an email dialog if an email is specified
* and the Settings dialog if a phone number is specified.
*/
protected void goAskInstructor()
{
Course course = null;
if (domain.currentIndexFromVector != -1 && domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).isAssignment ())
{
course = ((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getCourse ();
}
else
{
course = domain.utility.courses.get (getSelectedCourseIndex ());
}
if (course != null)
{
askPopupMenu.removeAll ();
for (int i = 0; i < course.getInstructorCount (); ++i)
{
final Course finalCourse = course;
final Instructor instructor = course.getInstructor (i);
final String email = course.getInstructor (i).getTypeName ();
if (!instructor.getInstructorEmail ().equals (""))
{
String lectureLab = instructor.getLectureLab ();
if (lectureLab.equals (domain.language.getString ("both")))
{
lectureLab = domain.language.getString ("lecture") + "/" + domain.language.getString ("lab");
}
JMenuItem menuItem = new JMenuItem (domain.language.getString ("email") + " " + instructor.getTypeName () + " (" + lectureLab + ")");
menuItem.setFont (domain.utility.currentTheme.fontPlain11);
final String title;
if (domain.currentIndexFromVector != -1 && domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector).isAssignment ())
{
title = ((Assignment) domain.utility.assignmentsAndEvents.get (domain.currentIndexFromVector)).getItemName () + " " + domain.language.getString ("assignment");
}
else
{
title = course.getTypeName () + " " + course.getCourseNumber ();
}
menuItem.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent evt)
{
if (Domain.desktop != null)
{
try
{
Domain.desktop.mail (new URI ("mailto", email + "?subject=" + domain.language.getString ("questionAbout") + " " + title.replaceAll ("&", " and "), null));
}
catch (Exception ex)
{
termsAndCoursesDialog.goViewTermsAndCourses ();
domain.termsAndCoursesOpening.push (true);
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (1);
domain.courseLoading.push (true);
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (finalCourse.getUniqueID (), 2);
domain.instructorLoading.push (true);
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (1);
termsAndCoursesDialog.settingsInstructorsTable.setSelectedRow (instructor.getUniqueID (), 2);
domain.instructorLoading.pop ();
domain.courseLoading.pop ();
domain.termsAndCoursesOpening.pop ();
termsAndCoursesDialog.instructorEmailTextField.requestFocus ();
termsAndCoursesDialog.instructorEmailTextField.selectAll ();
}
}
else
{
termsAndCoursesDialog.goViewTermsAndCourses ();
domain.termsAndCoursesOpening.push (true);
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (1);
domain.courseLoading.push (true);
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (finalCourse.getUniqueID (), 2);
domain.instructorLoading.push (true);
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (1);
termsAndCoursesDialog.settingsInstructorsTable.setSelectedRow (instructor.getUniqueID (), 2);
domain.instructorLoading.pop ();
domain.courseLoading.pop ();
domain.termsAndCoursesOpening.pop ();
termsAndCoursesDialog.instructorEmailTextField.requestFocus ();
termsAndCoursesDialog.instructorEmailTextField.selectAll ();
}
}
});
askPopupMenu.add (menuItem);
}
if (!instructor.getInstructorPhone ().equals (""))
{
String lectureLab = instructor.getLectureLab ();
if (lectureLab.equals (domain.language.getString ("both")))
{
lectureLab = domain.language.getString ("lecture") + "/" + domain.language.getString ("lab");
}
JMenuItem menuItem = new JMenuItem (domain.language.getString ("call") + " " + instructor.getTypeName () + " (" + lectureLab + ")");
menuItem.setFont (domain.utility.currentTheme.fontPlain11);
menuItem.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed(ActionEvent evt)
{
termsAndCoursesDialog.goViewTermsAndCourses ();
domain.termsAndCoursesOpening.push (true);
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (1);
domain.courseLoading.push (true);
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (finalCourse.getUniqueID (), 2);
domain.instructorLoading.push (true);
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (1);
termsAndCoursesDialog.settingsInstructorsTable.setSelectedRow (instructor.getUniqueID (), 2);
domain.instructorLoading.pop ();
domain.courseLoading.pop ();
domain.termsAndCoursesOpening.pop ();
termsAndCoursesDialog.phoneTextField.requestFocus ();
termsAndCoursesDialog.phoneTextField.selectAll ();
}
});
askPopupMenu.add (menuItem);
}
}
askPopupMenu.show (askInstructorButton, 0, askInstructorButton.getHeight ());
}
}
/**
* Launch the Updates dialog.
*/
protected void goViewUpdates()
{
domain.setProgressState (updatesProgressBar, true, domain.language.getString ("checkingForUpdates") + "...", true, -1);
updatesCloseButton.setText (domain.language.getString ("cancel"));
updatesCloseButton.setToolTipText (domain.language.getString ("cancelUpdateToolTip"));
updatesDialog.pack ();
updatesDialog.setLocationRelativeTo (this);
updatesDialog.setVisible (true);
new Thread (new Runnable ()
{
@Override
public void run()
{
try
{
setCursor (Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR));
Object[] status = Updater.checkForUpdates (Domain.VERSION, domain.utility.preferences.updateCheckIndex);
setCursor (Cursor.getDefaultCursor ());
if (Integer.parseInt (status[0].toString ()) == 1)
{
domain.setProgressState (updatesProgressBar, false, "", false, -1);
String extraMessage = "";
if (status[2] != null)
{
extraMessage = domain.language.getString ("priority") + ": " + status[2].toString ().split ("=")[1] + "\n";
}
OPTION_PANE.setOptions (OK_CANCEL_CHOICES);
OPTION_PANE.setMessage (domain.language.getString ("localVersion") + ": " + Domain.VERSION + "\n" + domain.language.getString ("serverVersion") + ": " + status[1] + "\n" + extraMessage + "\n" + domain.language.getString ("downloadLatestQuestion"));
OPTION_PANE.setMessageType (JOptionPane.INFORMATION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (updatesDialog, domain.language.getString ("updateAvailable"));
optionDialog.setVisible (true);
if (OPTION_PANE.getValue () != null && Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.OK_OPTION)
{
downloadUpdate ();
}
else
{
updatesProgressBar.setString (domain.language.getString ("notUpdated"));
updatesCloseButton.setText (domain.language.getString ("close"));
updatesCloseButton.setToolTipText (domain.language.getString ("closeToolTip"));
}
}
else
{
if (Integer.parseInt (status[0].toString ()) == 0)
{
domain.setProgressState (updatesProgressBar, false, domain.language.getString ("noUpdatesAvailable") + "...", true, -1);
updatesCloseButton.setText (domain.language.getString ("close"));
updatesCloseButton.setToolTipText (domain.language.getString ("closeToolTip"));
}
else
{
if (Integer.parseInt (status[0].toString ()) == -1)
{
domain.setProgressState (updatesProgressBar, false, domain.language.getString ("serverConnectionFailed") + "...", true, -1);
updatesCloseButton.setText (domain.language.getString ("close"));
updatesCloseButton.setToolTipText (domain.language.getString ("closeToolTip"));
}
}
}
}
catch (Exception ex)
{
Domain.LOGGER.add (ex);
}
finally
{
setCursor (Cursor.getDefaultCursor ());
}
}
}).start ();
}
/**
* Launch the online help content.
*/
protected void goViewHelp()
{
if (Domain.desktop != null)
{
try
{
Domain.desktop.browse (new URI ("http://alexlaird.com/projects/get-organized/support"));
}
catch (Exception ex)
{
Domain.LOGGER.add (ex);
}
}
else
{
OPTION_PANE.setOptions (OK_CHOICE);
OPTION_PANE.setMessage (domain.language.getString ("helpContentOnlineText"));
OPTION_PANE.setMessageType (JOptionPane.INFORMATION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (updatesDialog, domain.language.getString ("helpContentOnline"));
optionDialog.setVisible (true);
}
}
/**
* Launch the online donation page.
*/
protected void goDonate()
{
if (Domain.desktop != null)
{
try
{
Domain.desktop.browse (new URI ("http://alexlaird.com/projects/get-organized/donate"));
}
catch (Exception ex)
{
Domain.LOGGER.add (ex);
}
}
else
{
OPTION_PANE.setOptions (OK_CHOICE);
OPTION_PANE.setMessage (domain.language.getString ("donateOnlineText"));
OPTION_PANE.setMessageType (JOptionPane.INFORMATION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (updatesDialog, domain.language.getString ("donateOnline"));
optionDialog.setVisible (true);
}
}
/**
* Routes to the local add term action.
*/
protected void goAddTerm()
{
addTermMenuItemActionPerformed (null);
}
/**
* Edits types for the currently selected course.
*/
protected void goEditTypes()
{
editCourseEditMenuItemActionPerformed (null);
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (2);
if (termsAndCoursesDialog.typeTableModel.getRowCount () > 0)
{
termsAndCoursesDialog.settingsTypesTable.getSelectionModel ().setSelectionInterval (0, 0);
}
}
/**
* Edits types for the currently selected course.
*/
protected void goEditTypesFromGrades(Course course)
{
termsAndCoursesDialog.goViewTermsAndCourses ();
domain.termsAndCoursesOpening.push (true);
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (1);
domain.termsAndCoursesOpening.pop ();
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (course.getUniqueID (), 2);
termsAndCoursesDialog.settingsInstructorsTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsTypesTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsTextbooksTable.setSelectedRow (-1);
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (0);
termsAndCoursesDialog.showCourseDetails ();
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (2);
if (termsAndCoursesDialog.typeTableModel.getRowCount () > 0)
{
termsAndCoursesDialog.settingsTypesTable.getSelectionModel ().setSelectionInterval (0, 0);
}
}
/**
* Edits types for the currently selected course.
*/
protected void goEditInstructors()
{
editCourseEditMenuItemActionPerformed (null);
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (1);
if (termsAndCoursesDialog.instructorTableModel.getRowCount () > 0)
{
termsAndCoursesDialog.settingsInstructorsTable.getSelectionModel ().setSelectionInterval (0, 0);
}
}
/**
* Edit categories for events.
*/
protected void goEditCategories()
{
settingsDialog.goViewSettings ();
}
/**
* Edits the textbooks for the currently selected course.
*/
protected void goEditTextbooks()
{
editCourseEditMenuItemActionPerformed (null);
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (3);
if (termsAndCoursesDialog.textbookTableModel.getRowCount () > 0)
{
termsAndCoursesDialog.settingsTextbooksTable.setSelectedRow (0);
}
}
/**
* Edits the currently selected term.
*/
protected void goEditTerm()
{
termsAndCoursesDialog.goViewTermsAndCourses ();
Term term = domain.utility.terms.get (getSelectedTermIndex ());
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (0);
termTree.getSelectionModel ().setSelectionPath (new TreePath (term.getPath ()));
termsAndCoursesDialog.settingsTermsTable.setSelectedRow (getSelectedTermIndex ());
termsAndCoursesDialog.showTermDetails ();
}
/**
* Removes the currently selected term from either right-click on the term
* or the Terms menu button being clicked.
*/
protected void goRemoveTerm()
{
Term term = domain.utility.terms.get (getSelectedTermIndex ());
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (0);
termTree.getSelectionModel ().setSelectionPath (new TreePath (term.getPath ()));
termsAndCoursesDialog.settingsTermsTable.setSelectedRow (getSelectedTermIndex ());
termsAndCoursesDialog.showTermDetails ();
termsAndCoursesDialog.removeTermButtonActionPerformed ();
assignmentsTable.setSelectedRow (-1);
assignmentsTableRowSelected (null);
termsAndCoursesDialog.settingsTermsTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsTermsTableRowSelected (null);
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsCoursesTableRowSelected (null);
domain.currentCourseIndex = -1;
domain.currentTermIndex = -1;
domain.currentTextbookIndex = -1;
domain.currentTypeIndex = -1;
termTreeNodeSelected (new TreeSelectionEvent (this, null, true, null, null));
}
/**
* Routes to the local add course action.
*/
protected void goAddCourse()
{
addCourseMenuItemActionPerformed (null);
}
/**
* Edits the currently selected course.
*/
protected void goEditCourse()
{
termsAndCoursesDialog.goViewTermsAndCourses ();
Course course = domain.utility.terms.get (getSelectedTermIndex ()).getCourse (getSelectedCourseIndexFrom (getSelectedTermIndex ()));
domain.termsAndCoursesOpening.push (true);
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (1);
domain.termsAndCoursesOpening.pop ();
termTree.getSelectionModel ().setSelectionPath (new TreePath (course.getPath ()));
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (course.getUniqueID (), 2);
termsAndCoursesDialog.settingsInstructorsTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsTypesTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsTextbooksTable.setSelectedRow (-1);
termsAndCoursesDialog.courseTabbedPane.setSelectedIndex (0);
termsAndCoursesDialog.showCourseDetails ();
}
/**
* Removes the currently selected course.
*/
protected void goRemoveCourse()
{
Course course = domain.utility.courses.get (getSelectedCourseIndex ());
Term term = course.getTerm ();
int courseIndex = term.getCourseIndex (course);
domain.termsAndCoursesOpening.push (true);
termsAndCoursesDialog.termsAndCoursesTabbedPane.setSelectedIndex (1);
domain.termsAndCoursesOpening.pop ();
termTree.getSelectionModel ().setSelectionPath (new TreePath (course.getPath ()));
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (getSelectedCourseIndex ());
termsAndCoursesDialog.showCourseDetails ();
termsAndCoursesDialog.removeCourseButtonActionPerformed ();
assignmentsTable.setSelectedRow (-1);
assignmentsTableRowSelected (null);
termsAndCoursesDialog.settingsTermsTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsTermsTableRowSelected (null);
termsAndCoursesDialog.settingsCoursesTable.setSelectedRow (-1);
termsAndCoursesDialog.settingsCoursesTableRowSelected (null);
domain.currentCourseIndex = -1;
domain.currentTermIndex = -1;
domain.currentTextbookIndex = -1;
domain.currentTypeIndex = -1;
if (term.getCourseCount () > 0)
{
if (courseIndex == term.getCourseCount ())
{
--courseIndex;
}
termTree.getSelectionModel ().setSelectionPath (new TreePath (term.getCourse (courseIndex).getPath ()));
}
else
{
termTree.getSelectionModel ().setSelectionPath (new TreePath (term.getPath ()));
}
termTreeNodeSelected (new TreeSelectionEvent (this, null, true, null, null));
}
/**
* Filter the assignments list according to preferences and course
* selections. This function ends up sorting the assignments list AND saving
* to the data file.
*
* @param reselect True if assignments table row should be selected again
* after filter, false otherwise.
*/
public void filter(final boolean reselect)
{
try
{
Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR);
if (loadingPanel.isVisible ())
{
loadingLabel.setText (domain.language.getString ("filtering") + "...");
}
domain.setProgressState (progressBar, true, domain.language.getString ("filtering") + "...", true, -1);
domain.assignmentOrEventLoading.push (true);
long selectedID = -1;
if (assignmentsTable.getSelectedRow () != -1)
{
selectedID = Long.parseLong (assignmentsTableModel.getValueAt (assignmentsTable.getSelectedRow (), 6).toString ());
}
int filter1 = domain.utility.preferences.filter1Index;
int filter2 = domain.utility.preferences.filter2Index;
domain.utility.preferences.filter1Index = 0;
domain.utility.preferences.filter2Index = 0;
int[] selection = termTree.getSelectionRows ();
ignoreTreeSelection = true;
termTree.removeSelectionPath (termTree.getSelectionPath ());
ignoreTreeSelection = false;
domain.utility.loadAssignmentsTable (false);
domain.sortAssignmentsList ();
if (middleTabbedPane.getSelectedIndex () == 1)
{
loadCalendarView (reselect);
}
domain.utility.preferences.filter1Index = filter1;
domain.utility.preferences.filter2Index = filter2;
ignoreTreeSelection = true;
termTree.setSelectionRows (selection);
ignoreTreeSelection = false;
domain.utility.loadAssignmentsTable (true);
if (middleTabbedPane.getSelectedIndex () == 1)
{
loadCalendarView (reselect);
}
if (selectedID != -1)
{
assignmentsTable.setSelectedRow (selectedID, 6);
domain.currentIndexFromVector = assignmentsTable.getVectorIndexFromSelectedRow ();
assignmentsTableRowSelected (null);
scrollToItemOrToday (domain.utility.getAssignmentOrEventByID (selectedID));
}
else
{
domain.currentIndexFromVector = assignmentsTable.getVectorIndexFromSelectedRow ();
}
if (loadingPanel.isVisible ())
{
loadingLabel.setText (domain.language.getString ("loading") + "...");
domain.setProgressState (progressBar, true, domain.language.getString ("loading") + "...", true, -1);
}
domain.assignmentOrEventLoading.pop ();
}
catch (Exception ex)
{
Domain.LOGGER.add (ex);
}
finally
{
setCursor (Cursor.getDefaultCursor ());
domain.setProgressState (progressBar, false, "", false, -1);
}
}
/**
* Downloads the update that has been shown to be available.
*/
private void downloadUpdate()
{
domain.setProgressState (updatesProgressBar, true, domain.language.getString ("downloadingUpdater") + "...", true, -1);
File updaterFile = Updater.getUpdater (domain.utility.getDataFolder ());
if (updaterFile != null)
{
updatesProgressBar.setString (domain.language.getString ("launchingUpdater") + " ...");
updatesDialog.setEnabled (false);
// launch the returned file to complete the update
try
{
Runtime.getRuntime ().exec (new String[]
{
"java", "-jar", updaterFile.getCanonicalPath ()
}, null, null);
quit (true);
}
catch (IOException ex)
{
try
{
OPTION_PANE.setOptions (OK_CHOICE);
OPTION_PANE.setMessage (domain.language.getString ("unableToLaunchUpdaterString") + " " + updaterFile.getCanonicalPath ());
OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (this, domain.language.getString ("unableToLaunchUpdater"));
optionDialog.setVisible (true);
}
catch (IOException innerEx)
{
Domain.LOGGER.add (ex);
}
}
}
else
{
domain.setProgressState (updatesProgressBar, false, domain.language.getString ("updateFailed") + "...", true, -1);
updatesCloseButton.setText (domain.language.getString ("close"));
updatesCloseButton.setToolTipText (domain.language.getString ("closeToolTip"));
}
}
/**
* Loads preferences pertaining to how the application should load visually.
*
* @param syncFrame True if the frame should also be synced, false otherwise
*/
protected void syncWithPreferences(boolean syncFrame)
{
switch (domain.utility.preferences.filter1Index)
{
case 0:
{
bothFilterRadioButton.setSelected (true);
break;
}
case 1:
{
assignmentsFilterRadioButton.setSelected (true);
break;
}
case 2:
{
eventsFilterRadioButton.setSelected (true);
break;
}
}
switch (domain.utility.preferences.filter2Index)
{
case 0:
{
allFilterRadioButton.setSelected (true);
break;
}
case 1:
{
doneFilterRadioButton.setSelected (true);
break;
}
case 2:
{
notDoneFilterRadioButton.setSelected (true);
break;
}
case 3:
{
overdueFilterRadioButton.setSelected (true);
break;
}
}
if (syncFrame)
{
mainFrame.syncFrame ();
}
mainFrame.applyMenuBarFonts ();
middleTabbedPane.setSelectedIndex (domain.utility.preferences.middleTabbedPaneIndex);
forceViewLoad = true;
middleTabbedPaneStateChanged (null);
forceViewLoad = false;
assignmentsTableModel.setColumnSorting (domain.utility.preferences.sortIndex);
assignmentsTableModel.setSortAscending (domain.utility.preferences.sortAscending);
gettingStartedDialog.dontShowCheckBox.setSelected (domain.utility.preferences.dontShowGettingStarted);
heliumDialog.dontShowCheckBox.setSelected(domain.utility.preferences.dontShowHelium);
final ViewPanel viewPanel = this;
new Thread (new Runnable ()
{
@Override
public void run()
{
// check for updates if auto update is enabled
if (domain.utility.preferences.autoUpdate)
{
Object[] status = Updater.checkForUpdates (Domain.VERSION, domain.utility.preferences.updateCheckIndex);
if (Integer.parseInt (status[0].toString ()) == 1)
{
domain.setProgressState (updatesProgressBar, false, "", false, -1);
String extraMessage = "";
if (status[2] != null)
{
extraMessage = domain.language.getString ("priority") + ": " + status[2].toString ().split ("=")[1] + "\n";
}
OPTION_PANE.setOptions (OK_CANCEL_CHOICES);
OPTION_PANE.setMessage (domain.language.getString ("localVersion") + ": " + Domain.VERSION + "\n" + domain.language.getString ("serverVersion") + ": " + status[1] + "\n" + extraMessage + "\n" + domain.language.getString ("downloadLatestQuestion"));
OPTION_PANE.setMessageType (JOptionPane.INFORMATION_MESSAGE);
JDialog optionDialog = OPTION_PANE.createDialog (updatesDialog, domain.language.getString ("updateAvailable"));
optionDialog.setVisible (true);
if (OPTION_PANE.getValue () != null && Integer.parseInt (OPTION_PANE.getValue ().toString ()) == JOptionPane.OK_OPTION)
{
updatesDialog.pack ();
updatesDialog.setLocationRelativeTo (viewPanel);
updatesDialog.setVisible (true);
downloadUpdate ();
}
else
{
domain.setProgressState (updatesProgressBar, false, domain.language.getString ("notUpdated") + "...", true, -1);
updatesCloseButton.setText (domain.language.getString ("close"));
updatesCloseButton.setToolTipText (domain.language.getString ("closeToolTip"));
}
}
}
}
}).start ();
}
/**
* Visit the website for the current course.
*/
protected void visitCourseWebsite()
{
if (Domain.desktop != null)
{
try
{
Domain.desktop.browse (new URI (domain.utility.courses.get (getSelectedCourseIndex ()).getCourseWebsite ()));
}
catch (URISyntaxException ex)
{
ViewPanel.OPTION_PANE.setOptions (OK_CHOICE);
ViewPanel.OPTION_PANE.setMessage (domain.language.getString ("invalidCourseUrlText"));
ViewPanel.OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = ViewPanel.OPTION_PANE.createDialog (this, domain.language.getString ("invalidURL"));
optionDialog.setVisible (true);
}
catch (IOException ex)
{
Domain.LOGGER.add (ex);
}
}
else
{
ViewPanel.OPTION_PANE.setOptions (OK_CHOICE);
ViewPanel.OPTION_PANE.setMessage (domain.language.getString ("browserCouldntLaunch"));
ViewPanel.OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = ViewPanel.OPTION_PANE.createDialog (this, domain.language.getString ("unableToVisit"));
optionDialog.setVisible (true);
}
}
/**
* Visit the website for the current course's lab.
*/
protected void visitLabWebsite()
{
if (Domain.desktop != null)
{
try
{
Domain.desktop.browse (new URI (domain.utility.courses.get (getSelectedCourseIndex ()).getLabWebsite ()));
}
catch (URISyntaxException ex)
{
ViewPanel.OPTION_PANE.setOptions (OK_CHOICE);
ViewPanel.OPTION_PANE.setMessage (domain.language.getString ("invalidCourseLabUrlText"));
ViewPanel.OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = ViewPanel.OPTION_PANE.createDialog (this, domain.language.getString ("invalidURL"));
optionDialog.setVisible (true);
}
catch (IOException ex)
{
Domain.LOGGER.add (ex);
}
}
else
{
ViewPanel.OPTION_PANE.setOptions (OK_CHOICE);
ViewPanel.OPTION_PANE.setMessage (domain.language.getString ("browserCouldntLaunch"));
ViewPanel.OPTION_PANE.setMessageType (JOptionPane.WARNING_MESSAGE);
JDialog optionDialog = ViewPanel.OPTION_PANE.createDialog (this, domain.language.getString ("unableToVisit"));
optionDialog.setVisible (true);
}
}
/**
* Apply language settings to all labels for the current resource bundle.
*/
protected void applyLanguage()
{
// menu bar
mainFrame.applyLanguageToMenuBar ();
// dialog titles
aboutDialog.setTitle (domain.language.getString ("about"));
importFromBackupDialog.setTitle (domain.language.getString ("importFromBackup"));
printDialog.setTitle (domain.language.getString ("print"));
settingsDialog.setTitle (domain.language.getString ("settings"));
termsAndCoursesDialog.setTitle (domain.language.getString ("termsAndCourses"));
gradesDialog.setTitle (domain.language.getString ("grades"));
gettingStartedDialog.setTitle (domain.language.getString ("gettingStarted"));
updatesDialog.setTitle (domain.language.getString ("checkForUpdates"));
heliumDialog.setTitle("Switch to Helium!");
// file chooser
fileChooser.resetChoosableFileFilters ();
fileChooser.setFileFilter (new ExtensionFileFilter (domain.language.getString ("getOrganizedBackupFiles") + " (.gbak)", new String[]
{
"GBAK"
}));
// dialog contents
aboutDialog.applyLanguage (domain.language);
gettingStartedDialog.applyLanguage (domain.language);
heliumDialog.applyLanguage(domain.language);
importFromBackupDialog.applyLanguage (domain.language);
printDialog.applyLanguage (domain.language);
settingsDialog.applyLanguage (domain.language);
termsAndCoursesDialog.applyLanguage (domain.language);
gradesDialog.applyLanguage (domain.language);
// constant buttons
YES_OPTION_BUTTON.setText (domain.language.getString ("yes"));
NO_OPTION_BUTTON.setText (domain.language.getString ("no"));
OK_OPTION_BUTTON.setText (domain.language.getString ("ok"));
I_UNDERSTAND_OPTION_BUTTON.setText (domain.language.getString ("iUnderstand"));
CANCEL_OPTION_BUTTON.setText (domain.language.getString ("cancel"));
ONLY_THIS_INSTANCE_BUTTON.setText (domain.language.getString ("onlyThisInstance"));
ALL_IN_SERIES_BUTTON.setText (domain.language.getString ("allInSeries"));
ALL_FOLLOWING_BUTTON.setText (domain.language.getString ("allFollowing"));
REPLACE_OPTION_BUTTON.setText (domain.language.getString ("replace"));
// toolbar
addButton.setText (domain.language.getString ("add"));
addButton.setToolTipText (domain.language.getString ("addButtonToolTip"));
cloneButton.setText (domain.language.getString ("clone"));
cloneButton.setToolTipText (domain.language.getString ("cloneButtonToolTip"));
removeButton.setText (domain.language.getString ("remove"));
removeButton.setToolTipText (domain.language.getString ("removeButtonToolTip"));
askInstructorButton.setText (domain.language.getString ("ask"));
askInstructorButton.setToolTipText (domain.language.getString ("askInstructorButtonToolTip"));
viewGradesButton.setText (domain.language.getString ("grades"));
viewGradesButton.setToolTipText (domain.language.getString ("viewGradesButtonToolTip"));
termsAndCoursesButton.setText (domain.language.getString ("courses"));
termsAndCoursesButton.setToolTipText (domain.language.getString ("termsAndCoursesButtonToolTip"));
settingsButton.setText (domain.language.getString ("settings"));
settingsButton.setToolTipText (domain.language.getString ("settingsButtonToolTip"));
// calendars
((JTextFieldDateEditor) dueDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("dueDateChooserToolTip"));
((JTextFieldDateEditor) eventDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("eventDateChooserToolTip"));
((JTextFieldDateEditor) repeatEventEndDateChooser.getDateEditor ()).setToolTipText (domain.language.getString ("repeatEventEndDateChooserToolTip"));
miniCalendar.getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
miniCalendar.getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
dueDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
dueDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
eventDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
eventDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
repeatEventEndDateChooser.getJCalendar ().getMonthChooser ().setMonthNames (new String[]
{
domain.language.getString ("january"), domain.language.getString ("february"), domain.language.getString ("march"), domain.language.getString ("april"), domain.language.getString ("may"), domain.language.getString ("june"), domain.language.getString ("july"), domain.language.getString ("august"), domain.language.getString ("september"), domain.language.getString ("october"), domain.language.getString ("november"), domain.language.getString ("december")
});
repeatEventEndDateChooser.getJCalendar ().getDayChooser ().setDayNames (new String[]
{
domain.language.getString ("sun"), domain.language.getString ("mon"), domain.language.getString ("tue"), domain.language.getString ("wed"), domain.language.getString ("thu"), domain.language.getString ("fri"), domain.language.getString ("sat")
});
// left panel
// assignment details in right panel
// event details in right panel
// term details in right panel
// course details in right panel
// user details in right panel
// filter panel
assignmentsFilterRadioButton.setText (domain.language.getString ("assignments"));
eventsFilterRadioButton.setText (domain.language.getString ("events"));
allFilterRadioButton.setText (domain.language.getString ("all"));
overdueFilterRadioButton.setText (domain.language.getString ("overdue"));
doneFilterRadioButton.setText (domain.language.getString ("done"));
notDoneFilterRadioButton.setText (domain.language.getString ("notDone"));
assignmentsFilterRadioButton.setToolTipText (domain.language.getString ("assignmentsToolTip"));
eventsFilterRadioButton.setToolTipText (domain.language.getString ("eventsToolTip"));
allFilterRadioButton.setToolTipText (domain.language.getString ("allToolTip"));
overdueFilterRadioButton.setToolTipText (domain.language.getString ("overdueToolTip"));
doneFilterRadioButton.setToolTipText (domain.language.getString ("doneToolTip"));
notDoneFilterRadioButton.setToolTipText (domain.language.getString ("notDoneToolTip"));
// middle loading panel
loadingLabel.setText (domain.language.getString ("loading") + "...");
// middle list panel
assignmentsTable.getColumnModel ().getColumn (1).setHeaderValue (domain.language.getString ("task"));
assignmentsTable.getColumnModel ().getColumn (2).setHeaderValue (domain.language.getString ("type"));
assignmentsTable.getColumnModel ().getColumn (3).setHeaderValue (domain.language.getString ("course") + "/" + domain.language.getString ("category"));
assignmentsTable.getColumnModel ().getColumn (4).setHeaderValue (domain.language.getString ("dueDate"));
assignmentsTable.getColumnModel ().getColumn (5).setHeaderValue (domain.language.getString ("grade"));
assignmentsTable.getTableHeader ().resizeAndRepaint ();
// middle calendar panel
middleTabbedPane.setTitleAt (0, domain.language.getString ("listView"));
middleTabbedPane.setTitleAt (1, domain.language.getString ("monthView"));
sundayLabel.setText (domain.language.getString ("sunday"));
mondayLabel.setText (domain.language.getString ("monday"));
tuesdayLabel.setText (domain.language.getString ("tuesday"));
wednesdayLabel.setText (domain.language.getString ("wednesday"));
thursdayLabel.setText (domain.language.getString ("thursday"));
fridayLabel.setText (domain.language.getString ("friday"));
saturdayLabel.setText (domain.language.getString ("saturday"));
todayButton.setText (domain.language.getString ("today"));
}
/**
* Stores any errors found in the logger to the log data file, disposes of
* the application framework, and terminates the application.
*
* @param forceQuit True if System.exit should be called, false otherwise.
*/
protected void quit(boolean forceQuit)
{
mainFrame.setVisible (false);
if (!initLoading)
{
quitting = true;
if (domain.currentIndexFromVector != -1)
{
checkAssignmentOrEventChanges (domain.currentIndexFromVector);
checkRepeatEventChanges (domain.currentIndexFromVector);
}
domain.workerThread.stopRunning ();
domain.needsPreferencesSave = true;
domain.utility.forceSave ();
quitting = false;
}
if (forceQuit)
{
System.exit (0);
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JMenuItem addAssignmentEditMenuItem;
private javax.swing.JMenuItem addAssignmentMenuItem;
private javax.swing.JMenuItem addAssignmentTermEditMenuItem;
private javax.swing.JMenuItem addCourseEditMenuItem;
private javax.swing.JMenuItem addCourseMenuItem;
private javax.swing.JMenuItem addEventEditMenuItem;
private javax.swing.JMenuItem addEventMenuItem;
protected javax.swing.JPopupMenu addPopupMenu;
private javax.swing.JPopupMenu.Separator addPopupSeparator;
private javax.swing.JMenuItem addTermEditMenuItem;
private javax.swing.JMenuItem addTermMenuItem;
private javax.swing.JLabel advisorDetailsLabel;
private javax.swing.JCheckBox allDayEventCheckBox;
private javax.swing.JRadioButton allFilterRadioButton;
protected javax.swing.JPopupMenu askPopupMenu;
protected javax.swing.JPanel assignmentContentPanel;
protected javax.swing.JTextField assignmentNameTextField;
protected javax.swing.JPopupMenu assignmentsEditMenu;
private javax.swing.JRadioButton assignmentsFilterRadioButton;
private javax.swing.JScrollPane assignmentsListScrollPane;
private javax.swing.JSeparator assignmentsSeparator1;
private javax.swing.JSeparator assignmentsSeparator2;
private javax.swing.JSeparator assignmentsSeparator3;
public adl.go.gui.ExtendedJTable assignmentsTable;
private javax.swing.JLabel assnColon;
private javax.swing.JPanel blankContentPanel;
private javax.swing.JRadioButton bothFilterRadioButton;
private javax.swing.JLabel boxNumberDetailsLabel;
protected javax.swing.JComboBox categoryComboBox;
private javax.swing.JMenuItem cloneEditMenuItem;
private javax.swing.JLabel commentsLabel;
private javax.swing.JScrollPane commentsScrollPane;
private javax.swing.JScrollPane commentsScrollPane1;
protected javax.swing.JTextArea commentsTextArea;
protected javax.swing.JCheckBox completedCheckBox;
private javax.swing.JButton contactAdvisorButton;
protected adl.go.gui.ColoredJPanel contentPanel;
private javax.swing.JPanel courseContentPanel;
private javax.swing.JLabel courseCreditsDetailsLabel;
private javax.swing.JLabel courseCurrentGradeDetailsLabel;
private javax.swing.JLabel courseDaysDetailsLabel;
private javax.swing.JLabel courseEndDateDetailsLabel;
private javax.swing.JLabel courseEndTimeDetailsLabel;
private javax.swing.JLabel courseLabel;
private javax.swing.JLabel courseNameDetailsLabel;
private javax.swing.JLabel courseRoomDetailsLabel;
private javax.swing.JLabel courseStartDateDetailsLabel;
private javax.swing.JLabel courseStartTimeDetailsLabel;
private javax.swing.JLabel courseTextbooksDetailsLabel;
private javax.swing.JLabel courseTotalAssignmentsDetailsLabel;
private javax.swing.JLabel courseTypesDetailsLabel;
private javax.swing.JLabel courseUnfinishedDetailsLabel;
private javax.swing.JMenuItem courseWebsiteMenuItem;
private javax.swing.JLabel currentMonthLabel;
private javax.swing.JLabel currentYearLabel;
private javax.swing.JPanel day1;
private javax.swing.JPanel day10;
private javax.swing.JPanel day11;
private javax.swing.JPanel day12;
private javax.swing.JPanel day13;
private javax.swing.JPanel day14;
private javax.swing.JPanel day15;
private javax.swing.JPanel day16;
private javax.swing.JPanel day17;
private javax.swing.JPanel day18;
private javax.swing.JPanel day19;
private javax.swing.JPanel day2;
private javax.swing.JPanel day20;
private javax.swing.JPanel day21;
private javax.swing.JPanel day22;
private javax.swing.JPanel day23;
private javax.swing.JPanel day24;
private javax.swing.JPanel day25;
private javax.swing.JPanel day26;
private javax.swing.JPanel day27;
private javax.swing.JPanel day28;
private javax.swing.JPanel day29;
private javax.swing.JPanel day3;
private javax.swing.JPanel day30;
private javax.swing.JPanel day31;
private javax.swing.JPanel day32;
private javax.swing.JPanel day33;
private javax.swing.JPanel day34;
private javax.swing.JPanel day35;
private javax.swing.JPanel day4;
private javax.swing.JPanel day5;
private javax.swing.JPanel day6;
private javax.swing.JPanel day7;
private javax.swing.JPanel day8;
private javax.swing.JPanel day9;
private javax.swing.JLabel dayLabel1;
private javax.swing.JLabel dayLabel10;
private javax.swing.JLabel dayLabel11;
private javax.swing.JLabel dayLabel12;
private javax.swing.JLabel dayLabel13;
private javax.swing.JLabel dayLabel14;
private javax.swing.JLabel dayLabel15;
private javax.swing.JLabel dayLabel16;
private javax.swing.JLabel dayLabel17;
private javax.swing.JLabel dayLabel18;
private javax.swing.JLabel dayLabel19;
private javax.swing.JLabel dayLabel2;
private javax.swing.JLabel dayLabel20;
private javax.swing.JLabel dayLabel21;
private javax.swing.JLabel dayLabel22;
private javax.swing.JLabel dayLabel23;
private javax.swing.JLabel dayLabel24;
private javax.swing.JLabel dayLabel25;
private javax.swing.JLabel dayLabel26;
private javax.swing.JLabel dayLabel27;
private javax.swing.JLabel dayLabel28;
private javax.swing.JLabel dayLabel29;
private javax.swing.JLabel dayLabel3;
private javax.swing.JLabel dayLabel30;
private javax.swing.JLabel dayLabel31;
private javax.swing.JLabel dayLabel32;
private javax.swing.JLabel dayLabel33;
private javax.swing.JLabel dayLabel34;
private javax.swing.JLabel dayLabel35;
private javax.swing.JLabel dayLabel4;
private javax.swing.JLabel dayLabel5;
private javax.swing.JLabel dayLabel6;
private javax.swing.JLabel dayLabel7;
private javax.swing.JLabel dayLabel8;
private javax.swing.JLabel dayLabel9;
private javax.swing.JScrollPane dayScroll1;
private javax.swing.JScrollPane dayScroll10;
private javax.swing.JScrollPane dayScroll11;
private javax.swing.JScrollPane dayScroll12;
private javax.swing.JScrollPane dayScroll13;
private javax.swing.JScrollPane dayScroll14;
private javax.swing.JScrollPane dayScroll15;
private javax.swing.JScrollPane dayScroll16;
private javax.swing.JScrollPane dayScroll17;
private javax.swing.JScrollPane dayScroll18;
private javax.swing.JScrollPane dayScroll19;
private javax.swing.JScrollPane dayScroll2;
private javax.swing.JScrollPane dayScroll20;
private javax.swing.JScrollPane dayScroll21;
private javax.swing.JScrollPane dayScroll22;
private javax.swing.JScrollPane dayScroll23;
private javax.swing.JScrollPane dayScroll24;
private javax.swing.JScrollPane dayScroll25;
private javax.swing.JScrollPane dayScroll26;
private javax.swing.JScrollPane dayScroll27;
private javax.swing.JScrollPane dayScroll28;
private javax.swing.JScrollPane dayScroll29;
private javax.swing.JScrollPane dayScroll3;
private javax.swing.JScrollPane dayScroll30;
private javax.swing.JScrollPane dayScroll31;
private javax.swing.JScrollPane dayScroll32;
private javax.swing.JScrollPane dayScroll33;
private javax.swing.JScrollPane dayScroll34;
private javax.swing.JScrollPane dayScroll35;
private javax.swing.JScrollPane dayScroll4;
private javax.swing.JScrollPane dayScroll5;
private javax.swing.JScrollPane dayScroll6;
private javax.swing.JScrollPane dayScroll7;
private javax.swing.JScrollPane dayScroll8;
private javax.swing.JScrollPane dayScroll9;
protected javax.swing.JPanel daysOfWeekPanel;
private javax.swing.JLabel descriptionLabel;
protected javax.swing.JTextArea descriptionTextArea;
protected javax.swing.JComboBox detailsCourseComboBox;
protected javax.swing.JComboBox detailsTextbookComboBox;
protected javax.swing.JComboBox detailsTypeComboBox;
private javax.swing.JRadioButton doneFilterRadioButton;
protected com.toedter.calendar.JDateChooser dueDateChooser;
private com.toedter.calendar.JSpinnerDateEditor dueHrChooser;
private com.toedter.calendar.JSpinnerDateEditor dueMChooser;
private com.toedter.calendar.JSpinnerDateEditor dueMinChooser;
private javax.swing.JMenuItem editCourseEditMenuItem;
private javax.swing.JMenuItem editInstructorsEditMenuItem;
private javax.swing.JMenuItem editTermEditMenuItem;
private javax.swing.JMenuItem editTextbooksEditMenuItem;
private javax.swing.JMenuItem editTypesEditMenuItem;
private javax.swing.JButton editUserDetailsButton;
private javax.swing.JLabel eventColon1;
private javax.swing.JLabel eventColon2;
protected javax.swing.JPanel eventContentPanel;
protected com.toedter.calendar.JDateChooser eventDateChooser;
private com.toedter.calendar.JSpinnerDateEditor eventEndHrChooser;
private com.toedter.calendar.JSpinnerDateEditor eventEndMChooser;
private com.toedter.calendar.JSpinnerDateEditor eventEndMinChooser;
protected javax.swing.JTextField eventNameTextField;
private javax.swing.JButton eventRepeatButton;
private com.toedter.calendar.JSpinnerDateEditor eventStartHrChooser;
private com.toedter.calendar.JSpinnerDateEditor eventStartMChooser;
private com.toedter.calendar.JSpinnerDateEditor eventStartMinChooser;
private javax.swing.JRadioButton eventsFilterRadioButton;
private javax.swing.JSeparator eventsSeparator1;
private javax.swing.JSeparator eventsSeparator2;
private javax.swing.JLabel everyDescriptionLabel;
protected javax.swing.JFileChooser fileChooser;
private javax.swing.ButtonGroup filter1ButtonGroup;
private javax.swing.ButtonGroup filter2ButtonGroup;
private javax.swing.JLabel fridayLabel;
protected javax.swing.JButton googleMapsButton;
private javax.swing.JLabel gradeLabel;
protected javax.swing.JTextField gradeTextField;
private javax.swing.JLabel idNumberDetailsLabel;
private javax.swing.JLabel jLabel3;
private javax.swing.JPopupMenu.Separator jSeparator1;
private javax.swing.JPopupMenu.Separator jSeparator2;
private javax.swing.JPopupMenu.Separator jSeparator3;
private javax.swing.JPopupMenu.Separator jSeparator5;
private javax.swing.JSeparator jSeparator6;
private javax.swing.JPopupMenu.Separator jSeparator7;
private javax.swing.JMenuItem labWebsiteMenuItem;
protected adl.go.gui.ColoredJPanel leftPanel;
protected adl.go.gui.ColoredJPanel listViewPanel;
protected javax.swing.JLabel loadingLabel;
protected adl.go.gui.ColoredJPanel loadingPanel;
private javax.swing.JLabel locationLabel;
protected javax.swing.JTextField locationTextField;
private javax.swing.JPanel middlePanel;
private javax.swing.JPanel middlePanelForTabs;
public javax.swing.JTabbedPane middleTabbedPane;
protected com.toedter.calendar.JCalendar miniCalendar;
private javax.swing.JLabel mondayLabel;
protected javax.swing.JPanel monthAndYearPanel;
protected javax.swing.JPanel monthDaysPanel;
protected adl.go.gui.ColoredJPanel monthViewPanel;
private javax.swing.JLabel nextMonthButton;
private javax.swing.JLabel noStudentAdvisorDetails;
private javax.swing.JPanel noUserDetailsPanel;
private javax.swing.JRadioButton notDoneFilterRadioButton;
private javax.swing.JLabel officeHoursDetailsLabel;
private javax.swing.JLabel officeLocationDetailsLabel;
private javax.swing.JRadioButton overdueFilterRadioButton;
private javax.swing.JLabel prevMonthButton;
protected javax.swing.JDialog printingDialog;
private javax.swing.JLabel printingJLabel;
protected adl.go.gui.ColoredJPanel printingJPanel;
private javax.swing.JLabel priorityLabel;
private javax.swing.JSlider prioritySlider;
public javax.swing.JProgressBar progressBar;
private javax.swing.JCheckBox reFriCheckBox;
private javax.swing.JCheckBox reMonCheckBox;
private javax.swing.JCheckBox reSatCheckBox;
private javax.swing.JCheckBox reSunCheckBox;
private javax.swing.JCheckBox reThuCheckBox;
private javax.swing.JCheckBox reTueCheckBox;
private javax.swing.JCheckBox reWedCheckBox;
private javax.swing.JMenuItem removeCourseEditMenuItem;
protected javax.swing.JMenuItem removeEditMenuItem;
private javax.swing.JMenuItem removeTermEditMenuItem;
protected adl.go.gui.ColoredJPanel repeatDialogPanel;
protected javax.swing.JDialog repeatEventDialog;
private javax.swing.JButton repeatEventDoneButton;
protected com.toedter.calendar.JDateChooser repeatEventEndDateChooser;
protected javax.swing.JComboBox repeatEventRepeatsComboBox;
protected javax.swing.JComboBox repeatEventRepeatsEveryComboBox;
private javax.swing.JLabel repeatsEndingLabel;
private javax.swing.JLabel repeatsEveryLabel;
private javax.swing.JLabel repeatsLabel;
private javax.swing.JLabel repeatsOnLabel;
protected adl.go.gui.ColoredJPanel rightPanel;
private javax.swing.JLabel saturdayLabel;
private javax.swing.JLabel schoolDetailsLabel;
protected adl.go.gui.ColoredJPanel statusPanel;
private javax.swing.JLabel sundayLabel;
private javax.swing.JLabel termAvgGradeDetailsLabel;
private javax.swing.JPanel termContentPanel;
private javax.swing.JLabel termCoursesDetailsLabel;
private javax.swing.JLabel termCreditsDetailsLabel;
protected javax.swing.JPopupMenu termEditMenu;
private javax.swing.JLabel termEndDateDetailsLabel;
private javax.swing.JLabel termNameDetailsLabel;
private javax.swing.JScrollPane termScrollPane;
private javax.swing.JLabel termStartDateDetailsLabel;
private javax.swing.JLabel termTextbooksDetailsLabel;
private javax.swing.JLabel termTotalAssignmentsDetailsLabel;
public javax.swing.JTree termTree;
private javax.swing.JLabel termTypesDetailsLabel;
private javax.swing.JLabel termUnfinishedDetailsLabel;
private javax.swing.JLabel textbookLabel;
private javax.swing.JLabel thursdayLabel;
private javax.swing.JLabel todayButton;
protected adl.go.gui.ColoredJToolBar toolBar;
private javax.swing.JLabel tuesdayLabel;
private javax.swing.JLabel typeLabel;
protected javax.swing.JButton updatesCloseButton;
protected javax.swing.JDialog updatesDialog;
protected adl.go.gui.ColoredJPanel updatesJPanel;
public javax.swing.JProgressBar updatesProgressBar;
private javax.swing.JPanel upperPanelForFilters;
private javax.swing.JPanel userDetailsContentPanel;
private javax.swing.JLabel userNameDetailsLabel;
private javax.swing.JLabel wednesdayLabel;
protected adl.go.gui.ColoredJPanel week1Day1;
protected adl.go.gui.ColoredJPanel week1Day2;
protected adl.go.gui.ColoredJPanel week1Day3;
protected adl.go.gui.ColoredJPanel week1Day4;
protected adl.go.gui.ColoredJPanel week1Day5;
protected adl.go.gui.ColoredJPanel week1Day6;
protected adl.go.gui.ColoredJPanel week1Day7;
protected adl.go.gui.ColoredJPanel week2Day1;
protected adl.go.gui.ColoredJPanel week2Day2;
protected adl.go.gui.ColoredJPanel week2Day3;
protected adl.go.gui.ColoredJPanel week2Day4;
protected adl.go.gui.ColoredJPanel week2Day5;
protected adl.go.gui.ColoredJPanel week2Day6;
protected adl.go.gui.ColoredJPanel week2Day7;
protected adl.go.gui.ColoredJPanel week3Day1;
protected adl.go.gui.ColoredJPanel week3Day2;
protected adl.go.gui.ColoredJPanel week3Day3;
protected adl.go.gui.ColoredJPanel week3Day4;
protected adl.go.gui.ColoredJPanel week3Day5;
protected adl.go.gui.ColoredJPanel week3Day6;
protected adl.go.gui.ColoredJPanel week3Day7;
protected adl.go.gui.ColoredJPanel week4Day1;
protected adl.go.gui.ColoredJPanel week4Day2;
protected adl.go.gui.ColoredJPanel week4Day3;
protected adl.go.gui.ColoredJPanel week4Day4;
protected adl.go.gui.ColoredJPanel week4Day5;
protected adl.go.gui.ColoredJPanel week4Day6;
protected adl.go.gui.ColoredJPanel week4Day7;
protected adl.go.gui.ColoredJPanel week5Day1;
protected adl.go.gui.ColoredJPanel week5Day2;
protected adl.go.gui.ColoredJPanel week5Day3;
protected adl.go.gui.ColoredJPanel week5Day4;
protected adl.go.gui.ColoredJPanel week5Day5;
protected adl.go.gui.ColoredJPanel week5Day6;
protected adl.go.gui.ColoredJPanel week5Day7;
protected adl.go.gui.ColoredJPanel weekViewPanel;
// End of variables declaration//GEN-END:variables
}