Example #1
0
 /// <summary>
 /// Two parameter constructor to be used with opening a saved file
 /// </summary>
 /// <param name="view"></param>
 /// <param name="model"></param>
 public Controller(ISpreadsheetView view, Spreadsheet model, String filename) : this(view)
 {
     this.model   = model;
     this.window  = view;
     window.Title = filename;
     window.OpenSS();
 }
Example #2
0
        /// <summary>
        /// Initializes a controller for the given window.
        /// This is the controlling component in the MVC framework.
        /// </summary>
        /// <param name="window"></param>
        public Controller(ISpreadsheetView window, ISpreadsheetServer server, String SpreadsheetName)
        {
            _window          = window;
            _server          = server;
            _spreadsheetName = SpreadsheetName;
            SelectedCell     = new GuiCell(0, 0);
            Spreadsheet      = new Spreadsheet();
            _random          = new Random();
            Clients          = new Dictionary <string, Client>();

            // Event Subscriptions
            _window.CellValueBoxTextComplete += CellValueBarChanged;
            _window.CellSelectionChange      += SpreadsheetSelectionChanged;
            _window.CreateNew    += CreateNew;
            _window.HandleOpen   += () => HandleOpen(null);
            _window.HandleSave   += () => HandleSave(_savePath);
            _window.HandleSaveAs += () => HandleSave(null);
            _window.HandleClose  += HandleClose;
            _window.HandleHelp   += WindowOnHandleHelp;
            _window.HandleUndo   += Undo;

            //Setup defaults
            _window.SetSelection(SelectedCell.CellColumn, SelectedCell.CellRow);
            UpdateInfoBar($"{SelectedCell.CellName}: { SelectedCell.GetCellValue(Spreadsheet)}", Color.White);
            UpdateCellNameText();
            _window.SetTitle(_spreadsheetName);
        }
Example #3
0
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="window"></param>
 public Controller(ISpreadsheetView window)
 {
     this.window       = window;
     this.sheet        = new Spreadsheet(new Regex("^[A-Z][1-9][0-9]?$"));
     this.selectedCell = "A1";
     this.previousFile = null;
     eventSetup();
 }
Example #4
0
 /// <summary>
 /// Constructor that reads in file
 /// </summary>
 public Controller(ISpreadsheetView window, TextReader file)
 {
     this.window       = window;
     this.sheet        = new Spreadsheet(file, new Regex("^[A-Z][1-9][0-9]?$"));
     this.selectedCell = "A1";
     this.previousFile = file.ToString();
     eventSetup();
 }
Example #5
0
 /// <summary>
 /// Creates a controller with a saved spreadsheet
 /// </summary>
 /// <param name="window">The view of the MVC</param>
 /// <param name="spreadsheet">The saved spreadsheet</param>
 public Controller(ISpreadsheetView window, Spreadsheet spreadsheet) : this(window)
 {
     this.spreadsheet = spreadsheet;
     foreach (string cellName in spreadsheet.GetNamesOfAllNonemptyCells())
     {
         HandleCellContentsChanged(cellName, spreadsheet.GetCellContents(cellName).ToString());
     }
 }
Example #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SpreadsheetController"/> class. This
 /// class is the control of the Spreadsheet GUI implementation, it handles the interface
 /// between the model and the view.
 /// </summary>
 /// <param name="view">The view.</param>
 public SpreadsheetController(ISpreadsheetView view)
 {
     this.spreadsheetView = view;
     model                     = new Spreadsheet();
     view.loadSS              += HandleLoadSS;
     view.saveSS              += HandleSaveSS;
     view.closeSS             += HandleCloseSS;
     view.cellContentsChanged += HandleCellWithNameChangedContents;
     view.cellHighlighted     += HandleCellHighlighted;
     view.windowExited        += HandleWindowExit;
 }
Example #7
0
 /// <summary>
 /// Creates a new controller with a new spreadsheet.
 /// </summary>
 /// <param name="window">The view of the MVC</param>
 public Controller(ISpreadsheetView window)
 {
     this.window = window;
     spreadsheet = new Spreadsheet(new Regex("^[A-Za-z][1-9][0-9]?$"));
     window.CellContentsChanged += HandleCellContentsChanged;
     window.CellSelected        += HandleCellSelected;
     window.FileChosenEvent     += HandleOpen;
     window.SaveEvent           += HandleSave;
     window.CloseEvent          += HandleClose;
     window.NewEvent            += HandleNew;
     HandleCellSelected(0, 0);
 }
Example #8
0
 /// <summary>
 /// Constructor. Events hooking handlers
 /// </summary>
 /// <param name="window"></param>
 public Controller(ISpreadsheetView window)
 {
     this.window             = window;
     this.model              = new Spreadsheet();
     window.CloseEvent      += HandleClose;
     window.NewEvent        += HandleNew;
     window.HelpEvent       += HandleHelp;
     window.OpenEvent       += HandleOpen;
     window.SaveEvent       += HandleSave;
     window.ContentEvent    += HandleContent;
     window.GetContentEvent += HandleContentGet;
 }
Example #9
0
        /// <summary>
        /// Initilizes a new instance of the <see cref="SpreadsheetController"/> with
        /// a filename parameter. This constructor is to be used for load operations.
        /// </summary>
        /// <param name="view">The window being displayed</param>
        /// <param name="filename">The filepath of the object being loaded</param>
        public SpreadsheetController(ISpreadsheetView view, string filename)
        {
            this.spreadsheetView      = view;
            view.loadSS              += HandleLoadSS;
            view.saveSS              += HandleSaveSS;
            view.closeSS             += HandleCloseSS;
            view.cellContentsChanged += HandleCellWithNameChangedContents;
            view.cellHighlighted     += HandleCellHighlighted;
            view.windowExited        += HandleWindowExit;

            model = null;
            DoLoad(filename);
        }
Example #10
0
 /// <summary>
 /// Begins controlling window.
 /// </summary>
 public Controller(ISpreadsheetView window)
 {
     this.window                 = window;
     this.model                  = new Spreadsheet();
     window.FileChosenEvent     += HandleFileChosen;
     window.CloseEvent          += HandleClose;
     window.NewEvent            += HandleNew;
     window.UpdateCell          += HandleCell;
     window.CellClicked         += HandleCellChanged;
     window.SP.SelectionChanged += HandleCellChanged;
     window.HelpEvent           += DisplayHelp;
     window.SaveEvent           += SaveFile;
     window.CheckChanged        += CheckIfChanged;
 }
Example #11
0
        /// <summary>
        /// A public constructor that creates a new controller that is associated with the passed in
        /// window and has no data stored in the model.
        /// </summary>
        /// <param name="_window">A GUI that the controller can interact with</param>
        public Controller(ISpreadsheetView _window)
        {
            window = _window;

            spreadsheet = new Spreadsheet();

            // Ensure that all of the events that the window has are handled by the controller
            window.CloseEvent      += HandleCloseEvent;
            window.OpenEvent       += HandleOpenEvent;
            window.SaveEvent       += HandleSaveEvent;
            window.NewEvent        += HandleNewEvent;
            window.ChangeContents  += HandleChangeContents;
            window.NewCellSelected += HandleNewCellSelected;
        }
Example #12
0
 public Controller(ISpreadsheetView window)
 {
     this.window             = window;
     spreadsheet             = new Spreadsheet();
     activeCell              = "A1";
     window.CloseEvent      += HandleClose;
     window.XCloseEvent     += XHandleClose;
     window.FileChosenEvent += HandleFileChosen;
     window.NewEvent        += HandleNew;
     window.SelectionEvent  += HandleSelectionChanged;
     window.ContentsEvent   += HandleContentsBoxChange;
     window.FileSaveEvent   += HandleSaveChosen;
     window.HelpEvent       += HandleHelp;
 }
Example #13
0
 public Controller(ISpreadsheetView spreadsheetView)
 {
     this.spreadsheetView                  = spreadsheetView;
     spreadsheet                           = new Spreadsheet();
     spreadsheetView.SetContentEvent      += HandleSetContent;
     spreadsheetView.CloseEvent           += HandleClose;
     spreadsheetView.HelpSpreadsheetEvent += HandleSpreadsheetHelp;
     spreadsheetView.HelpFileEvent        += HandleFileHelp;
     spreadsheetView.SelectionChangeEvent += HandleSelectionChange;
     spreadsheetView.NewEvent             += HandleNew;
     spreadsheetView.DidChangeEvent       += HandleDidChange;
     spreadsheetView.SaveEvent            += HandleSave;
     spreadsheetView.OpenEvent            += HandleOpen;
 }
Example #14
0
        /// <summary>
        /// Takes in interface and begins controlling the window
        /// </summary>
        public Controller(ISpreadsheetView window)
        {
            this.window = window;
            model       = new Spreadsheet();

            window.NewEvent            += HandleNew;
            window.OpenEvent           += HandleOpen;
            window.SaveEvent           += HandleSave;
            window.SaveAsEvent         += HandleSaveAs;
            window.CloseEvent          += HandleClose;
            window.SetCellContentEvent += HandleCellContents;
            window.sp.SelectionChanged += displaySelection;
            window.ArrowKeyEvent       += HandleArrowKey;
        }
Example #15
0
 /// <summary>
 /// Creates a new controller that is based off of the passed in window and contains all of
 /// the data stored in the passed in file. Error checking will have been done by a previous
 /// controller, so the passed in file will always be readable.
 /// </summary>
 /// <param name="_window">The GUI that the controller can interact with</param>
 /// <param name="filename">The name of the file containing the data to be read</param>
 public Controller(ISpreadsheetView _window, string filename) : this(_window)
 {
     int   col, row;
     Regex r = new Regex(@"^[a-zA-Z][1-9][0-9]?$");
     using (StreamReader sw = new StreamReader(filename))
     {
         spreadsheet = new Spreadsheet(sw, r);
     }
     foreach (string cell in spreadsheet.GetNamesOfAllNonemptyCells())
     {
         toCoordinates(cell, out col, out row);
         window.SetValue(col, row, spreadsheet.GetCellValue(cell).ToString());
     }
     window.SetTitle(filename);
     HandleNewCellSelected();
 }
Example #16
0
        /// <summary>
        /// Begins controlling the supplied window with an already-created spreadsheet.
        /// </summary>
        public Controller(string fileName, ISpreadsheetView viewWindow)
        {
            if (fileName == "")
            {
                return;
            }
            System.IO.TextReader source = new System.IO.StreamReader(fileName);
            spreadsheet = new Spreadsheet(source, new Regex("^[a-z|A-Z][1-9][0-9]{0,1}$"));
            source.Close();
            window = viewWindow;
            InitializeWindow();

            foreach (string cell in spreadsheet.GetNamesOfAllNonemptyCells())
            {
                HandleSelectedCellChanged(cell);
            }
        }
        /// <summary>
        /// Used to initialize interface, sheet reference and window title for Controller's
        /// constructors. Also, tie all the events defined in SpreadsheetWindow
        /// </summary>
        /// <param name="window"></param>
        /// <param name="sheet"></param>
        /// <param name="title"></param>
        private void Inititalize(ISpreadsheetView window, Spreadsheet sheet, string title)
        {
            view = window;

            if (sheet == null)
            {
                sheet = new Spreadsheet();
            }
            else
            {
                this.sheet = sheet;
            }

            view.FileChosenEvent       += HandleFileChosen;
            view.NewEvent              += HandleNew;
            view.SelectEvent           += HandleSelectionChanged;
            view.EnterCellContentEvent += HandleEditBoxText;
            view.FileSaveEvent         += HandleSaveFile;
            view.UnsavedCloseEvent     += HandleUnSavedClose;
            view.FileCloseEvent        += HandleClose;
            view.Title = title;
        }
        /// <summary>
        /// Open a file and fill the speadsheet window with the file information
        /// </summary>
        /// <param name="window"></param>
        /// <param name="sheet"></param>
        /// <param name="title"></param>
        public Controller(ISpreadsheetView window, Spreadsheet sheet, string title)
        {
            Inititalize(window, sheet, title);

            int[] temp;

            // Fill all nonempty cell with value in the source file
            foreach (string cell in sheet.GetNamesOfAllNonemptyCells())
            {
                GetCellNumber(cell, out int col, out int row);
                temp = new int[2] {
                    col, row
                };
                view.SelectedCellAddress = temp;
                view.SetCellValueOnPanel(temp, sheet.GetCellValue(cell).ToString());
            }


            HandleSelectionChanged(new int[2] {
                0, 0
            });
        }
Example #19
0
        /// <summary>
        /// Begins controlling the active window. Valid cell names are
        /// in the range [A1-Z99].
        /// </summary>
        public Controller(ISpreadsheetView window)
        {
            // Initialize instance variables.
            this.window      = window;
            this.spreadsheet = new Spreadsheet(new Regex(@"^[a-zA-Z]{1}[1-9]{1}\d?$"));
            closedFromMenu   = false;
            saveCancelled    = false;

            // Setup the window
            window.Title = "Unsaved Spreadsheet";
            UpdateSpreadsheetWindow("A1");

            // Register the event handlers
            window.FileChosenEvent  += HandleFileChosen;
            window.CloseEvent       += HandleClose;
            window.NewEvent         += HandleNew;
            window.HowToEvent       += HandleHowTo;
            window.KeyPressed       += HandleKeyPress;
            window.EvaluateClicked  += HandleEvaluate;
            window.SaveAsEvent      += HandleSaveAs;
            window.SaveEvent        += HandleSave;
            window.ClosingForm      += HandleXClose;
            window.SelectionChanged += HandleSelection;
        }
Example #20
0
 /// <summary>
 /// Begins controlling the supplied window.
 /// </summary>
 public Controller(ISpreadsheetView viewWindow)
 {
     window = viewWindow;
     InitializeWindow();
     spreadsheet = new Spreadsheet(new Regex("^[a-z|A-Z][1-9][0-9]{0,1}$"));
 }
 /// <summary>
 /// Begins controlling window without supplying a sheet reference for a new window
 /// </summary>
 public Controller(ISpreadsheetView window, string title)
 {
     Inititalize(window, null, title);
 }
Example #22
0
 /// <summary>
 /// Begins controlling the supplied window.
 /// </summary>
 public Controller(ISpreadsheetView viewWindow)
 {
     window       = viewWindow;
     spreadsheet  = new Spreadsheet(new Regex("^[a-z|A-Z][1-9][0-9]$"));
     selectedCell = "A1";
 }