public override void Started() { this.ConstructionComplete = true; Transaction = Transaction.Create(Drawing.ActionManager, false); ExpectedDependencies = InitExpectedDependencies(); FoundDependencies.Clear(); }
protected override void AddFoundDependency(IFigure figure) { if (figure != null) { FoundDependencies.Add(figure); } }
private void RemoveTempPoint() { if (TempPoint != null) { Drawing.Figures.Remove(TempPoint); FoundDependencies.Remove(TempPoint); } }
public override void MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { var underMouse = Drawing.Figures.HitTest(Coordinates(e)); if (underMouse != null && (underMouse is AngleArc || underMouse is AngleMeasurement)) { FoundDependencies.AddRange(underMouse.Dependencies); } base.MouseDown(sender, e); }
protected void RemoveTempPointIfNecessary() { if (TempPoint != null) { FoundDependencies.Remove(TempPoint); Drawing.ActionManager.ExecuteImmediatelyWithoutRecording = true; Actions.Remove(TempPoint); Drawing.ActionManager.ExecuteImmediatelyWithoutRecording = false; TempPoint = null; } }
public override void MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { var underMouse = Drawing.Figures.HitTest <Segment>(Coordinates(e)); if (underMouse != null && underMouse.Dependencies.Count() == 2 && Drawing.Figures.HitTest <IPoint>(Coordinates(e)) == null) { FoundDependencies.AddRange(underMouse.Dependencies); } base.MouseDown(sender, e); }
protected override IFigure CreateIntermediateFigure() { if (!FoundDependencies.All(f => f is IPoint)) { return(null); } if (FoundDependencies.Count == 2) { return(Factory.CreateSegment(Drawing, FoundDependencies)); } return(null); }
protected override IFigure CreateIntermediateFigure() { if (!FoundDependencies.All(f => f is IPoint)) { return(null); } else if (FoundDependencies.Count >= 3) { var result = Factory.CreateAreaMeasurement(Drawing, FoundDependencies); return(result); } return(null); }
public void Register(string uniqueName, string originalId, T resource) { if (resource == null) { MissingDependencyNames.Add(uniqueName); } else { if (!FoundDependencies.ContainsKey(originalId)) { FoundDependencies.Add(originalId, resource); } } }
protected int FoundDependenciesMinimum = 3; // Includes TempPoint protected override void Click(Point coordinates) { var point = Drawing.Figures.HitTest <IPoint>(coordinates); if (point != null && FoundDependencies.Count >= FoundDependenciesMinimum + 1 && // Add 1 for TempPoint FoundDependencies.Contains(point)) { 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); }
protected override IEnumerable <IFigure> CreateFigures() { var source = FoundDependencies[0]; Check.NotNull(source); var dependenciesSubset = new List <IFigure>(FoundDependencies.Without(source)); var results = Transformer.CreateTranslatedFigure( Drawing, source, dependenciesSubset, dialog.magnitude, dialog.direction); Check.NotNull(results); Check.NoNullElements(results); foreach (var f in results) { yield return(f); } }
/// <summary> /// Assumes coordinates are logical already /// </summary> /// <param name="coordinates">Logical coordinates of the click point</param> protected virtual void Click(System.Windows.Point coordinates) { IFigure underMouse = null; Type expectedType = ExpectedDependency; if (TempPoint != null) { underMouse = Drawing.Figures.HitTest( coordinates, typeof(IPoint)); } else if (expectedType != null) { underMouse = Drawing.Figures.HitTest(coordinates, expectedType); } else { underMouse = Drawing.Figures.HitTest(coordinates); } if (underMouse != null && underMouse != TempPoint && ((FoundDependencies.Contains(underMouse) && !CanReuseDependency()) || underMouse == TempResult)) { return; } if (ExpectingAPoint()) { if (underMouse == null) { underMouse = CreatePointAtCurrentPosition(coordinates, true); } } RemoveIntermediateFigureIfNecessary(); if (TempPoint != null) { if (underMouse == TempPoint || underMouse == TempResult || underMouse == null) { underMouse = CreatePointAtCurrentPosition(coordinates, true); } TempPoint.SubstituteWith(underMouse); FoundDependencies.Remove(TempPoint); Drawing.Figures.Remove(TempPoint); TempPoint = null; } if (ExpectedDependency != null) { AddFoundDependency(underMouse); } if (ExpectedDependency != null) { if (ExpectingAPoint()) { TempPoint = CreateTempPoint(coordinates); AddFoundDependency(TempPoint); if (ExpectedDependency == null) { CreateAndAddFigure(); } } AddIntermediateFigureIfNecessary(); AdvertiseNextDependency(); } else { Finish(); } Drawing.Figures.CheckConsistency(); }
/// <summary> /// Assumes coordinates are logical already /// </summary> /// <param name="coordinates">Logical coordinates of the click point</param> protected virtual void Click(object sender, System.Windows.Input.MouseButtonEventArgs e) { System.Windows.Point coordinates = Coordinates(e); IFigure underMouse = null; Type expectedType = ExpectedDependency; if (TempPoint != null) { underMouse = Drawing.Figures.HitTest( coordinates, typeof(IPoint)); } else if (expectedType != null) { underMouse = Drawing.Figures.HitTest(coordinates, expectedType); } else { underMouse = Drawing.Figures.HitTest(coordinates); } if (underMouse != null && underMouse != TempPoint && ((FoundDependencies.Contains(underMouse) && !CanReuseDependency()) || underMouse == TempResult)) { return; } if (ExpectingAPoint()) { if (underMouse == null) { //underMouse = CreatePointAtCurrentPosition(coordinates, true); return; } else { // one branch only if (underMouse is Webb.Playbook.Geometry.Game.PBPlayer && underMouse.Dependents.Count > 0) { return; } // at most two branch if (underMouse is IPoint && underMouse.Dependents.Count > 1) { return; } } } RemoveIntermediateFigureIfNecessary(); if (TempPoint != null) { //if (underMouse == TempPoint || underMouse == TempResult || underMouse == null) //{ underMouse = CreatePointAtCurrentPosition(coordinates, true); //} TempPoint.SubstituteWith(underMouse); FoundDependencies.Remove(TempPoint); Drawing.Figures.Remove(TempPoint); TempPoint = null; } if (ExpectedDependency != null) { AddFoundDependency(underMouse); } if (ExpectedDependency != null) { if (ExpectingAPoint()) { TempPoint = CreateTempPoint(coordinates); AddFoundDependency(TempPoint); if (ExpectedDependency == null) { CreateAndAddFigure(); } } AddIntermediateFigureIfNecessary(); AdvertiseNextDependency(); } else { Finish(); //07-22-2009 scott if (IsMouseButtonDown) {// click mode IFigure endFigure = Drawing.Figures.HitTest(coordinates, typeof(Webb.Playbook.Geometry.Game.PBPlayer)); if (endFigure is Webb.Playbook.Geometry.Game.PBPlayer) { Drawing.ActionManager.Undo(); } else { MouseLeftButtonDown(sender, e as System.Windows.Input.MouseButtonEventArgs); } } else {// drag mode } } Drawing.Figures.CheckConsistency(); }