public override void Started() { this.ConstructionComplete = true; Transaction = Transaction.Create(Drawing.ActionManager, false); ExpectedDependencies = InitExpectedDependencies(); FoundDependencies.Clear(); }
protected override void Click(Point coordinates) { var figure = Drawing.Figures.HitTest(coordinates); if (figure is IShapeWithInterior) { FoundDependencies.Clear(); FoundDependencies.Add(figure); RemoveIntermediateFigureIfNecessary(); RemoveTempPointIfNecessary(); AddFiguresAndRestart(); return; } //var point = Drawing.Figures.HitTest<IPoint>(coordinates); if (figure is PointBase && FoundDependencies.Count >= 4 // 4 including the TempPoint // (and 3 after TempPoint is removed) && FoundDependencies.Contains(figure)) { RemoveIntermediateFigureIfNecessary(); RemoveTempPointIfNecessary(); AddFiguresAndRestart(); return; } base.Click(coordinates); }
public override void MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { var underMouse = Drawing.Figures.HitTest(Coordinates(e), f => f is ILengthProvider && !f.DependsOn(TempPoint)); if (underMouse != null && Drawing.Figures.HitTest <IPoint>(Coordinates(e)) == null) { FoundDependencies.Clear(); FoundDependencies.Add(underMouse); RemoveIntermediateFigureIfNecessary(); RemoveTempPointIfNecessary(); AddFiguresAndRestart(); return; } base.MouseDown(sender, e); }