public IMemento Restore() { // Before _drawableContainer.Invalidate(); var oldState = new ChangeFieldHolderMemento(_drawableContainer, _fieldToBeChanged); _fieldToBeChanged.Value = _oldValue; // After _drawableContainer.Invalidate(); return(oldState); }
public IMemento Restore() { // Before drawableContainer.Invalidate(); ChangeFieldHolderMemento oldState = new ChangeFieldHolderMemento(drawableContainer, fieldToBeChanged); fieldToBeChanged.Value = oldValue; // After drawableContainer.Invalidate(); return(oldState); }
public IMemento Restore() { // Before _drawableContainer.Invalidate(); // Store the selected state, as it's overwritten by the RemoveElement DeleteElementMemento oldState = new DeleteElementMemento(_surface, _drawableContainer); _surface.RemoveElement(_drawableContainer, false); _drawableContainer.Selected = true; // After _drawableContainer.Invalidate(); return(oldState); }
public IMemento Restore() { // Before drawableContainer.Invalidate(); AddElementMemento oldState = new AddElementMemento(surface, drawableContainer); surface.AddElement(drawableContainer, false); // The container has a selected flag which represents the state at the moment it was deleted. if (drawableContainer.Selected) { surface.SelectElement(drawableContainer); } // After drawableContainer.Invalidate(); return(oldState); }
public IMemento Restore() { var oldState = new DrawableContainerBoundsChangeMemento(_listOfdrawableContainer); for (int index = 0; index < _listOfdrawableContainer.Count; index++) { IDrawableContainer drawableContainer = _listOfdrawableContainer[index]; // Before drawableContainer.Invalidate(); drawableContainer.Left = _points[index].X; drawableContainer.Top = _points[index].Y; drawableContainer.Width = _sizes[index].Width; drawableContainer.Height = _sizes[index].Height; // After drawableContainer.Invalidate(); drawableContainer.Parent.Modified = true; } return(oldState); }
/// <summary> /// Add a new element to the surface /// </summary> /// <param name="element">the new element</param> /// <param name="makeUndoable">true if the adding should be undoable</param> public void AddElement(IDrawableContainer element, bool makeUndoable) { _elements.Add(element); DrawableContainer container = element as DrawableContainer; if (container != null) { container.FieldChanged += element_FieldChanged; } element.PropertyChanged += ElementPropertyChanged; if (element.Status == EditStatus.UNDRAWN) { element.Status = EditStatus.IDLE; } element.Invalidate(); if (makeUndoable) { MakeUndoable(new AddElementMemento(this, element), false); } _modified = true; }
/// <summary> /// Select the supplied element /// </summary> /// <param name="container"></param> public void SelectElement(IDrawableContainer container) { if (!selectedElements.Contains(container)) { selectedElements.Add(container); container.ShowGrippers(); container.Selected = true; FieldAggregator.BindElement(container); if (_movingElementChanged != null) { SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs(); eventArgs.Elements = selectedElements; _movingElementChanged(this, eventArgs); } container.Invalidate(); } }
/// <summary> /// Remove an element of the elements list /// </summary> /// <param name="elementToRemove">Element to remove</param> /// <param name="makeUndoable">flag specifying if the remove needs to be undoable</param> public void RemoveElement(IDrawableContainer elementToRemove, bool makeUndoable) { DeselectElement(elementToRemove); elements.Remove(elementToRemove); DrawableContainer element = elementToRemove as DrawableContainer; if (element != null) { element.FieldChanged -= element_FieldChanged; } elementToRemove.PropertyChanged -= ElementPropertyChanged; // Do not dispose, the memento should!! element.Dispose(); elementToRemove.Invalidate(); if (makeUndoable) { MakeUndoable(new DeleteElementMemento(this, elementToRemove), false); } modified = true; }