protected override InteractiveResult MouseClickCore(InteractionArguments interactionArguments) { UpdateArguments(interactionArguments); InteractiveResult result = base.MouseClickCore(interactionArguments); return(result); }
protected override InteractiveResult MouseUpCore(InteractionArguments interactionArguments) { Collection <int> draggedPointsIndex = new Collection <int>(); this.ExistingControlPointsLayer.Open(); Collection <Feature> draggedPoints = this.ExistingControlPointsLayer.QueryTools.GetAllFeatures(new string[] { "IsSelected" }); this.ExistingControlPointsLayer.Close(); for (int index = 0; index < draggedPoints.Count; index++) { if (draggedPoints[index].ColumnValues["IsSelected"] == "true") { draggedPointsIndex.Add(index); } } InteractiveResult interactiveResult = base.MouseUpCore(interactionArguments); foreach (int index in draggedPointsIndex) { this.ExistingControlPointsLayer.InternalFeatures[index].ColumnValues["IsSelected"] = "true"; } this.ExistingControlPointsLayer.Close(); if (startPoint != null) { startPoint = null; ControlPointType = ControlPointType.None; } ids = new Collection <int>(); return(interactiveResult); }
protected override InteractiveResult MouseDownCore(InteractionArguments interactionArguments) { #region Boudary Adjustment //UpdateArguments(interactionArguments); if (isShiftKeyDown && Vertices.Count == 0) { TrackShapeLayer.Open(); TrackShapeLayer.Clear(); } #endregion InteractiveResult interactiveResult = base.MouseDownCore(interactionArguments); if (interactionArguments.MouseButton == MapMouseButton.Right && TrackMode != TrackMode.None) { interactiveResult.DrawThisOverlay = InteractiveOverlayDrawType.DoNotDraw; interactiveResult = MouseClickCore(interactionArguments); interactiveResult.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays; } return(interactiveResult); }
//At the Mouse Up event, the features of ExistingControlPointsLayer will be cleared and new one will //be generated for better performance. So it is necessary to reupdate the column values of "IsSelected" to the new //ExistingControlPointsLayer. protected override InteractiveResult MouseUpCore(InteractionArguments interactionArguments) { Collection <int> draggedPointsIndex = new Collection <int>(); //Before the actual MouseUp event, we get the indexes of the features with value "true" of column "IsSelected". this.ExistingControlPointsLayer.Open(); Collection <Feature> draggedPoints = this.ExistingControlPointsLayer.QueryTools.GetAllFeatures(new string[] { "IsSelected" }); this.ExistingControlPointsLayer.Close(); for (int index = 0; index < draggedPoints.Count; index++) { if (draggedPoints[index].ColumnValues["IsSelected"] == "true") { draggedPointsIndex.Add(index); } } //The MouseUp is called clearing ExistingControlPointsLayer. (We do that for better performance) InteractiveResult interactiveResult = base.MouseUpCore(interactionArguments); //Now, we need to reset the column values of "IsSelected" for the relevant features. foreach (int index in draggedPointsIndex) { this.ExistingControlPointsLayer.InternalFeatures[index].ColumnValues["IsSelected"] = "true"; } this.ExistingControlPointsLayer.Close(); return(interactiveResult); }
protected override InteractiveResult MouseDownCore(InteractionArguments interactionArguments) { InteractiveResult result = base.MouseDownCore(interactionArguments); if (IsInModifyMode && Keyboard.Modifiers == ModifierKeys.Shift) { result.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays; trackStartPointShape = new PointShape(interactionArguments.WorldX, interactionArguments.WorldY); } return(result); }
protected override InteractiveResult KeyDownCore(KeyEventInteractionArguments interactionArguments) { InteractiveResult result = base.KeyDownCore(interactionArguments); if (interactionArguments.Key == System.Windows.Forms.Keys.Escape.ToString()) { CancelLastestTracking(this); if (TrackMode != TrackMode.None) { result.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays; } } return(result); }
protected override InteractiveResult MouseUpCore(InteractionArguments interactionArguments) { InteractiveResult result = base.MouseUpCore(interactionArguments); if (selectionLayer.InternalFeatures.Count > 0) { result.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays; result.DrawThisOverlay = InteractiveOverlayDrawType.Draw; OnSelectionFinished(selectionLayer.InternalFeatures.First().GetBoundingBox()); selectionLayer.InternalFeatures.Clear(); trackStartPointShape = null; } return(result); }
protected override InteractiveResult MouseDownCore(InteractionArguments interactionArguments) { InteractiveResult result = base.MouseDownCore(interactionArguments); startPoint = null; if (interactionArguments.MouseButton == MapMouseButton.Left) { if (EditShapesLayer.InternalFeatures.Count > 0) { if (SetSelectedControlPoint(new PointShape(interactionArguments.WorldX, interactionArguments.WorldY), interactionArguments.SearchingTolerance)) { startPoint = new PointShape(interactionArguments.WorldX, interactionArguments.WorldY); } } } return(result); }
protected override InteractiveResult MouseMoveCore(InteractionArguments interactionArguments) { InteractiveResult arguments = base.MouseMoveCore(interactionArguments); if (Vertices.Count == 0) { radiusValueString = string.Empty; } else if (TrackMode == TrackMode.Circle) { Vertex currentVertex = new Vertex(interactionArguments.WorldX, interactionArguments.WorldY); radiusLine = new LineShape(new[] { circleCenterVertex, currentVertex }); TrackShapeLayer.InternalFeatures["radius"] = new Feature(radiusLine); mouseScreenPointF = new ScreenPointF(interactionArguments.ScreenX + 10, interactionArguments.ScreenY - 10); } return(arguments); }
protected override InteractiveResult MouseMoveCore(InteractionArguments interactionArguments) { InteractiveResult result = base.MouseMoveCore(interactionArguments); SetDefaultColumnValue(); if (trackStartPointShape != null) { result.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays; result.DrawThisOverlay = InteractiveOverlayDrawType.Draw; double left = trackStartPointShape.X < interactionArguments.WorldX ? trackStartPointShape.X : interactionArguments.WorldX; double right = trackStartPointShape.X > interactionArguments.WorldX ? trackStartPointShape.X : interactionArguments.WorldX; double top = trackStartPointShape.Y > interactionArguments.WorldY ? trackStartPointShape.Y : interactionArguments.WorldY; double bottom = trackStartPointShape.Y < interactionArguments.WorldY ? trackStartPointShape.Y : interactionArguments.WorldY; RectangleShape selectionArea = new RectangleShape(left, top, right, bottom); selectionLayer.InternalFeatures.Clear(); selectionLayer.InternalFeatures.Add(new Feature(selectionArea)); } return(result); }
protected override InteractiveResult MouseMoveCore(InteractionArguments interactionArguments) { InteractiveResult arguments = base.MouseMoveCore(interactionArguments); if (Vertices.Count == 0) { textBlock.Visibility = Visibility.Collapsed; } else if (TrackMode == TrackMode.Circle && interactionArguments.MouseButton == MapMouseButton.Left) { Vertex currentVertex = new Vertex(interactionArguments.WorldX, interactionArguments.WorldY); radiusLine = new LineShape(new[] { circleCenterVertex, currentVertex }); TrackShapeLayer.InternalFeatures[Resources.RadiusFeatureKey] = new Feature(radiusLine); Canvas.SetLeft(textBlock, interactionArguments.ScreenX + 10); Canvas.SetTop(textBlock, interactionArguments.ScreenY + 10); } return(arguments); }
protected override InteractiveResult MouseClickCore(InteractionArguments interactionArguments) { InteractiveResult result = base.MouseClickCore(interactionArguments); if (result.DrawThisOverlay != InteractiveOverlayDrawType.Draw) { RectangleShape searchingArea = new RectangleShape(interactionArguments.WorldX - interactionArguments.SearchingTolerance, interactionArguments.WorldY + interactionArguments.SearchingTolerance, interactionArguments.WorldX + interactionArguments.SearchingTolerance, interactionArguments.WorldY - interactionArguments.SearchingTolerance); foreach (Feature feature in ExistingControlPointsLayer.InternalFeatures) { BaseShape shape = feature.GetShape(); if (shape.IsWithin(searchingArea)) { if (feature.ColumnValues.ContainsKey("IsSelected") && (feature.ColumnValues["IsSelected"] == "true")) { feature.ColumnValues["IsSelected"] = string.Empty; result.DrawThisOverlay = InteractiveOverlayDrawType.Draw; result.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays; Lock.IsDirty = true; break; } else { feature.ColumnValues["IsSelected"] = "true"; result.DrawThisOverlay = InteractiveOverlayDrawType.Draw; result.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays; Lock.IsDirty = true; break; } } } } return(result); }
protected override InteractiveResult MouseMoveCore(InteractionArguments interactionArguments) { InteractiveResult result = new InteractiveResult(); if (ControlPointType != ControlPointType.None) { if (startPoint == null) { return(result); } else { PointShape currentPoint = new PointShape(interactionArguments.WorldX, interactionArguments.WorldY); double xOffset = currentPoint.X - startPoint.X; double yOffset = currentPoint.Y - startPoint.Y; Collection <Feature> features = new Collection <Feature>(); int index = 0; System.Diagnostics.Debug.WriteLine("ids count"); foreach (int id in ids) { System.Diagnostics.Debug.WriteLine(id.ToString()); } if (ids.Count == 0) { foreach (Feature feature in ExistingControlPointsLayer.InternalFeatures) { if (feature.ColumnValues.ContainsKey("IsSelected") && feature.ColumnValues["IsSelected"] == "true") { features.Add(feature); ids.Add(index); } index++; } } else { foreach (int id in ids) { features.Add(ExistingControlPointsLayer.InternalFeatures[id]); } } foreach (Feature feature in features) { PointShape oldPoint = feature.GetShape() as PointShape; PointShape targetPoint = new PointShape(oldPoint.X + xOffset, oldPoint.Y + yOffset); EditShapesLayer.InternalFeatures[0] = MoveVertex(EditShapesLayer.InternalFeatures[0], oldPoint, targetPoint); } CalculateAllControlPoints(); startPoint = currentPoint.CloneDeep() as PointShape; bool existingNode = false; foreach (string key in EditShapesLayer.InternalFeatures.GetKeys()) { if (string.Equals(EditShapesLayer.InternalFeatures[key].Id, OriginalEditingFeature.Id, StringComparison.OrdinalIgnoreCase)) { Lock.EnterWriteLock(); try { EditShapesLayer.InternalFeatures[key] = EditShapesLayer.InternalFeatures[0]; } finally { Lock.ExitWriteLock(); } foreach (string featureKey in ExistingControlPointsLayer.InternalFeatures.GetKeys()) { Feature feature = ExistingControlPointsLayer.InternalFeatures[featureKey]; if (feature.ColumnValues != null) { if (feature.ColumnValues["state"] == "selected") { existingNode = true; } } } ShowAllControlPointLayers(false, existingNode); break; } } result.DrawThisOverlay = InteractiveOverlayDrawType.Draw; result.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays; } } return(result); }