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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 6
0
        //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();
        }
Esempio n. 7
0
        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();
        }