protected override InteractiveResult MouseClickCore(InteractionArguments interactionArguments)
        {
            UpdateArguments(interactionArguments);
            InteractiveResult result = base.MouseClickCore(interactionArguments);

            return(result);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
        //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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }