public IMemento Restore()
        {
            // Before
            _drawableContainer.Invalidate();
            var oldState = new ChangeFieldHolderMemento(_drawableContainer, _fieldToBeChanged);

            _fieldToBeChanged.Value = _oldValue;
            // After
            _drawableContainer.Invalidate();
            return(oldState);
        }
示例#2
0
        public IMemento Restore()
        {
            // Before
            drawableContainer.Invalidate();
            ChangeFieldHolderMemento oldState = new ChangeFieldHolderMemento(drawableContainer, fieldToBeChanged);

            fieldToBeChanged.Value = oldValue;
            // After
            drawableContainer.Invalidate();
            return(oldState);
        }
示例#3
0
        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);
        }
示例#6
0
 /// <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;
 }
示例#7
0
 /// <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();
     }
 }
示例#8
0
文件: Surface.cs 项目: Z1ni/ShareX
 /// <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;
 }