public CreatePresenter(CreateView createView, int width, int height) { GridHeight = height; GridWidth = width; _createView = createView; var grid = new GridControlView(); var gridPresenter = new GridPresenter(grid, false, true, GridWidth, GridHeight); var columnsLabels = new CountColumnView(); var columnPresenter = new CountColumnPresenter(columnsLabels, gridPresenter.TilesGrid, true); var rowsLabels = new CountRowView(); var rowPresenter = new CountRowPresenter(rowsLabels, gridPresenter.TilesGrid, true); gridPresenter.RowPresenter = rowPresenter; gridPresenter.ColumnPresenter = columnPresenter; List <int>[] rows = new List <int> [GridHeight]; List <int>[] columns = new List <int> [GridWidth]; for (int i = 0; i < GridHeight; i++) { rows[i] = new List <int>(); rows[i].Add(0); } for (int i = 0; i < GridWidth; i++) { columns[i] = new List <int>(); columns[i].Add(0); } columnPresenter.Counts = columns; rowPresenter.Counts = rows; gridPresenter.RowsCounts = rows; gridPresenter.ColumnsCounts = columns; var location = grid.Location; grid.Location = new System.Drawing.Point(location.X + 100, location.Y + 100); location = grid.Location; columnsLabels.Location = new System.Drawing.Point(location.X, location.Y - 100); rowsLabels.Location = new System.Drawing.Point(location.X - 100, location.Y); _createView.GridPanel.Width = GridWidth * Tile.Width + 100; _createView.GridPanel.Height = GridHeight * Tile.Height + 100; _createView.GridPanel.Controls.Add(grid); _createView.GridPanel.Controls.Add(columnsLabels); _createView.GridPanel.Controls.Add(rowsLabels); _createView.Save.Click += (s, e) => { Game newGame = new Game() { ColumnsLabels = gridPresenter.ColumnPresenter.Counts, RowsLabels = gridPresenter.RowPresenter.Counts, Difficulty = _createView.Difficulty.Text, Height = GridHeight, Width = GridWidth, Title = _createView.Title.Text }; using (System.Windows.Forms.SaveFileDialog dialog = new SaveFileDialog()) { dialog.Filter = "Json files (*.json)|*.json"; dialog.FilterIndex = 2; dialog.RestoreDirectory = true; if (dialog.ShowDialog() == DialogResult.OK) { System.IO.StreamWriter file = new System.IO.StreamWriter(dialog.FileName.ToString()); var stringJson = JsonConvert.SerializeObject(newGame); file.WriteLine(stringJson); file.Close(); } } }; }
public ShellPresenter(ShellFormView view) { _view = view; var gridControlView = new GridControlView(); var countColumnView = new CountColumnView(); var countRowView = new CountRowView(); var gridPresenter = new GridPresenter(gridControlView, true, false, 10, 10); var columnPresenter = new CountColumnPresenter(countColumnView, gridPresenter.TilesGrid, false); var rowPresenter = new CountRowPresenter(countRowView, gridPresenter.TilesGrid, false); gridPresenter.RowsCounts = rowPresenter.Counts; gridPresenter.ColumnsCounts = columnPresenter.Counts; var grid = gridPresenter.TilesGrid; for (int i = 0; i < grid.Height; i++) { for (int j = 0; j < grid.Width; j++) { grid.Tiles[i, j].Selected = false; } } int meshWidth = gridControlView.Width; int meshHeight = gridControlView.Height; int X = (_view.GridWrapper.Width - meshWidth) / 2; int Y = (_view.GridWrapper.Height - meshHeight) / 2; gridControlView.Location = new Point(X, Y); countColumnView.Location = new Point(X, Y - 100); countRowView.Location = new Point(X - 100, Y); _view.GridWrapper.Controls.Add(gridControlView); _view.GridWrapper.Controls.Add(countRowView); _view.GridWrapper.Controls.Add(countColumnView); _view.CreatePuzzleSubMenuItem.Click += (s, e) => { var sizeDialog = new SizeDialogBoxView(); int height = 0, width = 0; if (sizeDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { _view.GridWrapper.Controls.Clear(); height = sizeDialog.GridHeight; width = sizeDialog.GridWidth; var createView = new CreateView(); var presenter = new CreatePresenter(createView, width, height); presenter.GridWidth = width; presenter.GridHeight = height; createView.Enabled = true; createView.Location = new Point(0, 0); _view.GridWrapper.Controls.Add(createView); } }; _view.LoadSubMenuItem.Click += (s, e) => { Stream myStream = null; OpenFileDialog theDialog = new OpenFileDialog(); theDialog.Title = "Open Puzzle JSON File"; theDialog.Filter = "Json files (*.json)|*.json"; theDialog.InitialDirectory = @"C:\"; if (theDialog.ShowDialog() == DialogResult.OK) { try { if ((myStream = theDialog.OpenFile()) != null) { StreamReader sr = new StreamReader(myStream); string text = sr.ReadToEnd(); Game newGame;// = new Game(); using (myStream) { newGame = (Game)JsonConvert.DeserializeObject <Game>(text); } _view.GridWrapper.Controls.Clear(); gridControlView = new GridControlView(); countColumnView = new CountColumnView(); countRowView = new CountRowView(); gridPresenter = new GridPresenter(gridControlView, false, false, newGame.Width, newGame.Height, newGame.RowsLabels, newGame.ColumnsLabels); columnPresenter = new CountColumnPresenter(countColumnView, gridPresenter.TilesGrid, false); rowPresenter = new CountRowPresenter(countRowView, gridPresenter.TilesGrid, false); gridPresenter.ColumnPresenter = columnPresenter; gridPresenter.ColumnPresenter.Counts = newGame.ColumnsLabels; gridPresenter.RowPresenter = rowPresenter; gridPresenter.RowPresenter.Counts = newGame.RowsLabels; gridPresenter.RowsCounts = newGame.RowsLabels; gridPresenter.ColumnsCounts = newGame.ColumnsLabels; gridPresenter.ColumnPresenter.Draw(); gridPresenter.RowPresenter.Draw(); grid = gridPresenter.TilesGrid; for (int i = 0; i < grid.Height; i++) { for (int j = 0; j < grid.Width; j++) { grid.Tiles[i, j].Selected = false; } } int meshWidth = gridControlView.Width; int meshHeight = gridControlView.Height; int X = (_view.GridWrapper.Width - meshWidth) / 2; int Y = (_view.GridWrapper.Height - meshHeight) / 2; gridControlView.Location = new Point(X, Y); countColumnView.Location = new Point(X, Y - 100); countRowView.Location = new Point(X - 100, Y); _view.GridWrapper.Controls.Add(gridControlView); _view.GridWrapper.Controls.Add(countRowView); _view.GridWrapper.Controls.Add(countColumnView); } } catch (Exception ex) { MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); } } }; _view.RandomSubMenuItem.Click += (s, e) => { var sizeDialog = new SizeDialogBoxView(); int height = 0, width = 0; if (sizeDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { _view.GridWrapper.Controls.Remove(gridControlView); _view.GridWrapper.Controls.Remove(countColumnView); _view.GridWrapper.Controls.Remove(countRowView); height = sizeDialog.GridHeight; width = sizeDialog.GridWidth; _view.GridWrapper.Controls.Clear(); gridControlView = new GridControlView(); countColumnView = new CountColumnView(); countRowView = new CountRowView(); gridPresenter = new GridPresenter(gridControlView, true, false, width, height); columnPresenter = new CountColumnPresenter(countColumnView, gridPresenter.TilesGrid, false); rowPresenter = new CountRowPresenter(countRowView, gridPresenter.TilesGrid, false); gridPresenter.ColumnPresenter = columnPresenter; gridPresenter.RowPresenter = rowPresenter; gridPresenter.RowsCounts = rowPresenter.Counts; gridPresenter.ColumnsCounts = columnPresenter.Counts; gridPresenter.ColumnPresenter.Draw(); gridPresenter.RowPresenter.Draw(); grid = gridPresenter.TilesGrid; for (int i = 0; i < grid.Height; i++) { for (int j = 0; j < grid.Width; j++) { grid.Tiles[i, j].Selected = false; } } int meshWidth = gridControlView.Width; int meshHeight = gridControlView.Height; int X = (_view.GridWrapper.Width - meshWidth) / 2; int Y = (_view.GridWrapper.Height - meshHeight) / 2; gridControlView.Location = new Point(X, Y); countColumnView.Location = new Point(X, Y - 100); countRowView.Location = new Point(X - 100, Y); _view.GridWrapper.Controls.Add(gridControlView); _view.GridWrapper.Controls.Add(countRowView); _view.GridWrapper.Controls.Add(countColumnView); } }; _view.ChooseSubMenuItem.Click += (s, e) => { var listDialog = new ChooseView(); if (listDialog.ShowDialog() == DialogResult.OK) { } }; }