public override void Undo() { foreach (IVisualElement entity in AffectedEntities) { _context.MapEntities.Add(entity); } if (_context is IVisualBuilding && RemovedFloor != null) { IVisualBuilding building = (IVisualBuilding)_context; building.Floors.Insert(RemovedFloorIndex, RemovedFloor); } }
public override void Do() { foreach (IVisualElement entity in AffectedEntities) { _context.SelectedEntities.Remove(entity); // remove all building shape manipulation helpers var items = _context.MapEntities.Where(item => item is VisualCornerManipulator).ToList(); for (int i = 0; i < items.Count; i++) { _context.MapEntities.Remove(items[i]); } if (_context is DataModel) { ((DataModel)_context).CurrentCorners = null; } if (entity is WallElement) { foreach (VisualDoor door in ((WallElement)entity).Doors) { _context.MapEntities.Remove(door); } //TODO: Windows } _context.MapEntities.Remove(entity); } // handle floor removal if (_context is IVisualBuilding) { IVisualBuilding building = (IVisualBuilding)_context; VisualFloor floor = building.CurrentFloor; if (floor != null && floor.IsSelected) { RemovedFloorIndex = building.Floors.IndexOf(floor); building.Floors.Remove(floor); RemovedFloor = floor; if (building.Floors.Count > 0) { building.CurrentFloor = building.Floors[0]; } else { building.CurrentFloor = null; } } } }
private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { IVisualElement selectedElement = (IVisualElement)((FrameworkElement)sender).DataContext; IVisualBuilding building = (IVisualBuilding)DataContext; if (!(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))) { building.SelectedEntities.Clear(); foreach (VisualFloor floor in building.Floors) { floor.IsSelected = false; } } selectedElement.IsSelected = !selectedElement.IsSelected; if (selectedElement is VisualFloor) { building.CurrentFloor = (VisualFloor)selectedElement; building.FireFloorSelectionEvent(); } }
private void DeleteCommand_FloorWasSelected(IVisualBuilding building) { OnCanExecutedChanged(this, null); }
public AddFloorCommand(IVisualBuilding building) { _building = building; }