/// <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); }