package admin;

/**
 * This class provides the functionality for the administrative user
 * upon accessing the application.
 */
abstract class MainUI {
	enum ViewOptions {List, Calendar, Filter};
	enum DatabaseSelection {Classes, Classrooms, Instructors};
	
	/**
	 * GenerateOrViewSchedule brings up the interface for general schedule
	 * handling.
	 */
	public abstract void generateOrViewSchedule();
	
	/**
	 * ViewOrEditDatabases brings up the interface for general database
	 * handling.
	 */
	public abstract void viewOrEditDatabases();
	
	/**
	 * CreateSchedule brings up the interface that allows the administrative
	 * user to make a new schedule.
	 */
	public abstract void createSchedule();
	
	/**
	 * EditSchedule brings up the interface that allows the administrative
	 * user to make any changes to existing schedules.
	 */
	public abstract void editSchedule();
	
	/**
	 * ViewSchedule allows the administrative user to view existing schedules
	 * in a variety of ways, specified by the 'options' parameter.
	 * @param options
	 */
	public abstract void viewSchedule(ViewOptions options);
	
	/**
	 * AccessDatabase allows the administrative user to access, update, and modify
	 * a selected database, as specified by 'selection'.
	 * @param selection
	 */
	public abstract void accessDatabase(DatabaseSelection selection);
}