mattercontrol/PartPreviewWindow/View3D/UndoCommands/CopyUndoCommand.cs

45 lines
996 B
C#
Raw Normal View History

using MatterHackers.Agg.UI;
using MatterHackers.PolygonMesh;
using MatterHackers.VectorMath;
2017-03-15 16:17:06 -07:00
using System.Linq;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
internal class CopyUndoCommand : IUndoRedoCommand
{
private int newItemIndex;
private View3DWidget view3DWidget;
2017-03-15 16:17:06 -07:00
IObject3D addedObject3D;
bool wasLastItem;
public CopyUndoCommand(View3DWidget view3DWidget, int newItemIndex)
{
this.view3DWidget = view3DWidget;
this.newItemIndex = newItemIndex;
2017-03-15 16:17:06 -07:00
addedObject3D = view3DWidget.Scene.Children[newItemIndex];
wasLastItem = view3DWidget.Scene.Children.Last() == addedObject3D;
}
public void Undo()
{
2017-03-15 16:17:06 -07:00
view3DWidget.Scene.Children.RemoveAt(newItemIndex);
if (wasLastItem)
{
2017-03-15 16:17:06 -07:00
view3DWidget.Scene.SelectLastChild();
}
view3DWidget.PartHasBeenChanged();
}
public void Do()
{
2017-03-15 16:17:06 -07:00
view3DWidget.Scene.Children.Insert(newItemIndex, addedObject3D);
view3DWidget.Invalidate();
2017-03-15 16:17:06 -07:00
view3DWidget.Scene.SelectLastChild();
}
}
}