public void DelRow() { //if (!_isCellsStandalone) return; DeselectBlocks(); var cells = RowViewModelList.Last().CellsCollection; RowViewModelList.Remove(RowViewModelList.Last()); foreach (var cell in cells) { cell.CellData.RowNum--; RowViewModelList.Last().CellsCollection.Add(cell); } RowViewModelList.Last().UpdateFacade(); RowViewModelList.Last().UpdateDirection(); RowViewModelList.Last().UpdateDoorDirection(); RowViewModelList.Last().UpdateBusPositions(); RowViewModelList.Last().UpdateCellPanel(); ControlsCollection.Remove(_controlsCollection.Last(x => x.GetType() == typeof(RowBlock))); UpdateAll(); StageSave(); }
public void StageClear() { DeselectBlocks(); ControlsCollection.Clear(); RowViewModelList.Clear(); _cellDataList.Clear(); _cabinetDataList.Clear(); _linkDataList.Clear(); }
public bool AddRowCheck() { if (_isCellsStandalone) { return(false); } return(RowViewModelList.Count > 0 && RowViewModelList.Count < 6 && RowViewModelList.Last().CellsCollection .ToList().Count >= 2); }
public bool AddCellToRowCheck() { if (_selectedRowVM != null && RowViewModelList.Count > 1 && _selectMode == SelectMode.Multiple) { if (_selectedRowVM == RowViewModelList.First()) { return(RowViewModelList[RowViewModelList.IndexOf(_selectedRowVM) + 1].CellsCollection.Count > 1); } else if (RowViewModelList.IndexOf(_selectedRowVM) > 0) { return(RowViewModelList[RowViewModelList.IndexOf(_selectedRowVM) - 1].CellsCollection.Count > 1); } } return(false); }
public void DelCellFromRow() { if (_selectedRowVM == RowViewModelList.First()) { var lastCell = _selectedRowVM.GetLastCell(); var nextRowViewModel = RowViewModelList[RowViewModelList.IndexOf(_selectedRowVM) + 1]; lastCell.CellData.RowNum = RowViewModelList.IndexOf(nextRowViewModel) + 1; lastCell.IsSelected = false; nextRowViewModel.CellsCollection.Add(lastCell); nextRowViewModel.UpdateDirection(); nextRowViewModel.UpdateBusPositions(); nextRowViewModel.UpdateFacade(); nextRowViewModel.UpdateCellPanel(); _selectedRowVM.UpdateDirection(); _selectedRowVM.UpdateBusPositions(); _selectedRowVM.UpdateFacade(); _selectedRowVM.UpdateDoorDirection(); _selectedRowVM.UpdateCellPanel(); } else { var firstCell = _selectedRowVM.GetFirstCell(); var prevRowViewModel = RowViewModelList[RowViewModelList.IndexOf(_selectedRowVM) - 1]; firstCell.CellData.RowNum = RowViewModelList.IndexOf(prevRowViewModel) + 1; firstCell.IsSelected = false; prevRowViewModel.CellsCollection.Add(firstCell); prevRowViewModel.UpdateDirection(); prevRowViewModel.UpdateBusPositions(); prevRowViewModel.UpdateFacade(); prevRowViewModel.UpdateCellPanel(); _selectedRowVM.UpdateDirection(); _selectedRowVM.UpdateBusPositions(); _selectedRowVM.UpdateFacade(); _selectedRowVM.UpdateDoorDirection(); _selectedRowVM.UpdateCellPanel(); } UpdateAll(); StageSave(); }
//public void MinimizeAreaSize() //{ // var maxWidth = 0; // var maxHeight = 0; // var width = 0; // var height = 0; // foreach (var control in _controlsCollection) // { // if (control is RowBlock rowBlock) // { // var rowBlockViewModel = (VMRowBlock)rowBlock.DataContext; // width = rowBlockViewModel.DirectX + rowBlockViewModel.GetWidth(); // height = rowBlockViewModel.DirectY + rowBlockViewModel.GetHeight(); // switch (rowBlockViewModel.Facade) // { // case Facade.Up: // { // width += RowMinHorizontalSize / Constants.MainScale; // height += RowMinVerticalSize / Constants.MainScale; // } // break; // case Facade.Down: // { // width += RowMinHorizontalSize / Constants.MainScale; // height += RowMinFacadeSize / Constants.MainScale; // } // break; // case Facade.Left: // { // width += RowMinVerticalSize / Constants.MainScale; // height += RowMinHorizontalSize / Constants.MainScale; // } // break; // case Facade.Right: // { // width += RowMinFacadeSize / Constants.MainScale; // height += RowMinHorizontalSize / Constants.MainScale; // } // break; // } // } // if (maxWidth < width) maxWidth = width; // if (maxHeight < height) maxHeight = height; // } // AreaWidth = maxWidth; // AreaHeight = maxHeight; // UpdateAllConnects(); // StageSave(); //} public void ReorganizeCells(bool isStandalone) { _isCellsStandalone = isStandalone; if (isStandalone) { while (RowViewModelList.Count > 1) { DelRow(); } RowViewModelList.First().UpdateBusPositions(isStandalone: true); RowViewModelList.First().UpdateCellPanel(); } else { RowViewModelList.First().UpdateBusPositions(); RowViewModelList.First().UpdateCellPanel(); } StageSave(); }
public void SetMainData(MainData mainData) { var rowNum = 0; foreach (var rowData in mainData.RowDataList) { rowNum++; var rowBlock = new RowBlock(this); var rowBlockViewModel = (VMRowBlock)rowBlock.DataContext; rowBlockViewModel.SetParams(this, rowData); rowBlockViewModel.PropertyChanged += RowViewModel_PropertyChanged; rowBlockViewModel.CreateCells(_cellDataList.Where(x => x.RowNum == rowNum)?.ToList()); rowBlockViewModel.UpdateFacade(); rowBlockViewModel.UpdateDirection(); //rowBlockViewModel.UpdateDoorDirection(); rowBlockViewModel.UpdateBusPositions(); rowBlockViewModel.UpdateCellPanel(); RowViewModelList.Add(rowBlockViewModel); ControlsCollection.Add(rowBlock); } LinkDataList = mainData.LinkDataList ?? new List <LinkData>(); _isCellsStandalone = mainData.IsCellsStandalone; if (_isCellsStandalone) { ReorganizeCells(true); } AreaWidth = mainData.Width; AreaHeight = mainData.Height; UpdateAll(); StageSave(); }
public void AddRow() { if ((RowViewModelList.Count != 0 && !_secondsRow) || (RowViewModelList.Count == 2)) { return; } DeselectBlocks(); var rowData = new RowData(); var rowBlock = new RowBlock(this); var rowBlockViewModel = (VMRowBlock)rowBlock.DataContext; rowBlockViewModel.SetParams(this, rowData); rowBlockViewModel.PropertyChanged += RowViewModel_PropertyChanged; var facade = Facade.Down; var direction = Direction.LeftToRight; var doorDirection = DoorDirection.Left; if (RowViewModelList.Count == 0) { foreach (var cell in _cellDataList) { cell.RowNum = 1; } rowBlockViewModel.CreateCells(_cellDataList); } else { var lastCells = RowViewModelList.Last(); List <CellData> cellDatas = new List <CellData>(); int count = _cellDataList.Count; for (int i = 0; i < count; i++) { CellData cellData = new CellData(_cellDataList[i]); cellData.SystemNum = cellData.SystemNum + count; cellData.IndexNum = cellData.IndexNum + count + 1; cellData.RowNum = cellData.RowNum + 1; cellData.UserNum = cellData.IndexNum.ToString(); cellDatas.Add(cellData); _cellDataList.Add(cellData); } rowBlockViewModel.CreateCells(cellDatas); rowBlockViewModel.DirectY = AreaHeight - cellDatas.Max(x => x.Depth) / Constants.MainScale; if (RowViewModelList.Last().Facade == Facade.Down) { facade = Facade.Up; } if (RowViewModelList.Last().Direction == Direction.LeftToRight) { direction = Direction.RightToLeft; } if (RowViewModelList.Last().DoorDirection == DoorDirection.Left) { doorDirection = DoorDirection.Right; } RowViewModelList.Last().UpdateCellPanel(); } rowBlockViewModel.UpdateFacade(facade); rowBlockViewModel.UpdateDirection(direction); rowBlockViewModel.UpdateDoorDirection(doorDirection); rowBlockViewModel.UpdateBusPositions(); rowBlockViewModel.UpdateCellPanel(); RowViewModelList.Add(rowBlockViewModel); ControlsCollection.Add(rowBlock); UpdateRowPosition(RowViewModelList.Count > 1 ? RowViewModelList[RowViewModelList.Count - 2] : null, rowBlockViewModel); UpdateAll(); StageSave(); }