Esempio n. 1
0
        private void OnMouseCursorChanged(object sender, MsaglMouseEventArgs e)
        {
            foreach (var en in _graphViewer.Entities)
            {
                var node = en as IViewerNode;

                if (node != null)
                {
                    //CLEAR
                    node.Node.Attr.FillColor = Color.Gray;

                    node.OutEdges.ToList().ForEach(x =>
                    {
                        node.Node.Attr.FillColor         = Color.LightGreen;
                        x.Edge.SourceNode.Attr.FillColor = Color.LightGreen;
                        x.Edge.Attr.Color = Color.Black;
                    });
                    node.InEdges.ToList().ForEach(x =>
                    {
                        node.Node.Attr.FillColor         = Color.LightGreen;
                        x.Edge.TargetNode.Attr.FillColor = Color.LightGreen;
                        x.Edge.Attr.Color = Color.Black;
                    });
                }
            }
            foreach (var en in _graphViewer.Entities)
            {
                var node = en as IViewerNode;

                if (en.MarkedForDragging && node != null)
                {
                    //MARK
                    node.Node.Attr.FillColor = Color.Yellow;

                    node.OutEdges.ToList().ForEach(x =>
                    {
                        x.Edge.TargetNode.Attr.FillColor = Color.PaleVioletRed;
                        x.Edge.Attr.Color = Color.Red;
                    });

                    node.InEdges.ToList().ForEach(x =>
                    {
                        x.Edge.SourceNode.Attr.FillColor = Color.LightBlue;
                        x.Edge.Attr.Color = Color.Blue;
                    });
                }
            }
        }
Esempio n. 2
0
        void gviewer_mouseup(object sender, MsaglMouseEventArgs e)
        {
            if (_useOpMode == UserOprationMode.Select)
            {
                var obj = gViewer.GetObjectAt(new Point(e.X, e.Y));
                if (obj == null)
                {
                    return;
                }
                var node = obj as DNode;
                if (node != null)
                {
                    Text = node.DrawingNode.Id;
                }
                else
                {
                    var edge = obj as DEdge;
                    Text = edge.Edge.Source;
                }
            }
            else if (_useOpMode == UserOprationMode.AddNode)
            {
                var pos = gViewer.ScreenToSource(e);
                //var node = new Node("smt");

                var gv = gViewer;
                gv.AddNode(gv.CreateIViewerNode(new Node("ssss"), pos, null), true);
                var ggg = gv.Graph;
                if (ggg.NodeCount > 100)
                {
                    ;
                }
                ////(gv as IViewer).a   .add(), pos, null);
                ////node.LabelText = "smt show";
                //var graph = gViewer.Graph;
                ////graph.AddNode(node);
                //graph.AddEdge("11", "222");
                ////DrawingUtilsForSamples.AddNode("smt", graph.GeometryGraph, 10, 2);
                //gViewer.Graph = graph;
                //var gv = gViewer;
                ////IViewerNode n=gViewer.CreateIViewerNode(new Node("smart"));
                ////gViewer.CreateIViewerNode(new Node("marks"), pos, null);
                ////gViewer.AddNode(n, true);
            }

            //var viewer = gViewer as IViewer;
            //viewer.
        }
Esempio n. 3
0
        private void GraphEditor_MouseDown(object sender, MsaglMouseEventArgs e)
        {
            if (e.RightButtonIsPressed && !e.Handled)
            {
                m_MouseRightButtonDownPoint = (gViewer).ScreenToSource(e);
                contextMenuStrip            = BuildContextMenu(new GeometryPoint(e.X, e.Y));
                contextMenuStrip.Show(this, new Point(e.X, e.Y));
            }

            bool leftButtonPressed = e.LeftButtonIsPressed;
            bool altPressed        = (ModifierKeys & Keys.Alt) == Keys.Alt;

            if (altPressed && leftButtonPressed && !PanButtonPressedOnMenu)
            {
                gViewer.PanButtonPressed = true;
            }
        }
Esempio n. 4
0
        protected override void OnMouseUp(MouseEventArgs args)
        {
            base.OnMouseUp(args);
            MsaglMouseEventArgs iArgs = CreateMouseEventArgs(args);

            gViewer.RaiseMouseUpEvent(iArgs);
            if (NeedToEraseRubber)
            {
                DrawXorFrame();
            }

            if (!iArgs.Handled)
            {
                if (gViewer.OriginalGraph != null && MouseDraggingMode == DraggingMode.WindowZoom)
                {
                    var    p = mouseDownPoint;
                    double f = Math.Max(Math.Abs(p.X - args.X), Math.Abs(p.Y - args.Y)) / GViewer.Dpi;
                    if (f > gViewer.ZoomWindowThreshold && zoomWindow)
                    {
                        mouseUpPoint = new Point(args.X, args.Y);
                        if (ClientRectangle.Contains(mouseUpPoint))
                        {
                            var r = GViewer.RectFromPoints(mouseDownPoint, mouseUpPoint);
                            r.Intersect(gViewer.DestRect);
                            if (GViewer.ModifierKeyWasPressed() == false)
                            {
                                mouseDownPoint.X = r.Left;
                                mouseDownPoint.Y = r.Top;
                                mouseUpPoint.X   = r.Right;
                                mouseUpPoint.Y   = r.Bottom;
                                P2     p1 = gViewer.ScreenToSource(mouseDownPoint);
                                P2     p2 = gViewer.ScreenToSource(mouseUpPoint);
                                double sc = Math.Min((double)ClientRectangle.Width / r.Width,
                                                     ClientRectangle.Height / (double)r.Height);
                                P2 center = 0.5f * (p1 + p2);
                                gViewer.SetTransformOnScaleAndCenter(sc, center);
                                Invalidate();
                            }
                        }
                    }
                }
            }
            zoomWindow = false;
        }
Esempio n. 5
0
        private void GraphEditor_MouseMove(object sender, MsaglMouseEventArgs e)
        {
            if (PanButtonPressedOnMenu)
            {
                gViewer.PanButtonPressed = true;
                return;
            }

            bool altPressed = (ModifierKeys & Keys.Alt) == Keys.Alt;

            if (altPressed && gViewer.PanButtonPressed)
            {
                return;
            }

            if (PanButtonPressedOnMenu == false)
            {
                gViewer.PanButtonPressed = false;
            }
        }
Esempio n. 6
0
 private void viewer_MouseDown(object sender, MsaglMouseEventArgs e)
 {
     if (e.RightButtonIsPressed)
     {
         IViewerObject ob = gv.ObjectUnderMouseCursor;
         if (ob == null)
         {
             Microsoft.Msagl.Core.Geometry.Point p = gv.ScreenToSource(e.X, e.Y);
             Node        n   = new Node(this.FindNewId());
             IViewerNode iwn = gv.CreateIViewerNode(n, p, true);
             gv.AddNode(iwn, true);
             gv.ResizeNodeToLabel(n);
         }
         else if (ob is IViewerNode)
         {
             IViewerNode existingNode = ob as IViewerNode;
             gv.RemoveNode(existingNode, true);
         }
     }
 }
Esempio n. 7
0
        void Form1_MouseUp(object sender, MsaglMouseEventArgs e)
        {
            object      obj   = gViewer.GetObjectAt(e.X, e.Y);
            DrawingNode node  = null;
            Edge        edge  = null;
            var         dnode = obj as DNode;
            var         dedge = obj as DEdge;
            var         dl    = obj as DLabel;

            if (dnode != null)
            {
                node = dnode.DrawingNode;
            }
            else if (dedge != null)
            {
                edge = dedge.DrawingEdge;
            }
            else if (dl != null)
            {
                if (dl.Parent is DNode)
                {
                    node = (dl.Parent as DNode).DrawingNode;
                }
                else if (dl.Parent is DEdge)
                {
                    edge = (dl.Parent as DEdge).DrawingEdge;
                }
            }
            if (node != null)
            {
                ShowEditorDelegate(node);
            }
            else if (edge != null)
            {
                ShowEditorDelegate(edge);
            }
            else
            {
                CloseEditorDelegate();
            }
        }
Esempio n. 8
0
        /// <summary>
        /// If right click on empty space - open new node creation form.
        /// If right click on existing node - allow delete this node
        /// if left click and selected object is not null - show its proprties in grid and allow edit those.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void viewer_MouseDown(object sender, MsaglMouseEventArgs e)
        {
            mouseButtonDownPoint = (gViewer).ScreenToSource(e);
            if (gViewer.SelectedObject != null)
            {
                selectedObject = PropertiesWrapperFactory.Getwrapper(gViewer.SelectedObject);
            }


            //if clicked on object - open its properties for watch\edit.
            if (e.LeftButtonIsPressed && selectedObject != null)//&& !e.Handled)
            {
                propertyGridControl.SelectedObject = selectedObject;
            }
            //if right click - ask to delete if not edge (edge has its own menu)
            else if (e.RightButtonIsPressed && !e.Handled)
            {
                if (gViewer.SelectedObject == null)
                {
                    drawForm.ShapeId     = GetNewId();
                    drawForm.AllowIDEdit = true;
                    DialogResult result = drawForm.ShowDialog(this);
                    if (result != DialogResult.Cancel)
                    {
                        Draw(mouseButtonDownPoint);
                    }
                }
                else
                {
                    var node = selectedObject as NodeWrapper;
                    //if selected node. for edge there is its own menu
                    if (node != null)
                    {
                        this.ContextMenu.Show(this, new System.Drawing.Point(e.X, e.Y));
                    }
                }
            }
        }
Esempio n. 9
0
        private void AglGraphViewer_MouseDown(object sender, MsaglMouseEventArgs e)
        {
            if (this.currentFlowGraph == null)
            {
                return;
            }

            var viewerNode = this.aglGraphViewer.ObjectUnderMouseCursor as IViewerNode;

            if (viewerNode != null)
            {
                viewerNode.MarkedForDragging = true;

                int id = int.Parse(viewerNode.Node.Id);
                this.currentFlowNode = this.currentFlowGraph.Nodes[id];

                this.nodeIdLabel.Content     = id.ToString();
                this.exploreButton.IsEnabled = true;

                var operations = (this.currentFlowNode as InnerFlowNode)?.Operations;
                if (operations != null && operations.Count > 0 &&
                    operations.Last() is Assignment assignment && assignment.Variable.Sort == Sort.Bool)
                {
                    this.assertionCheckBox.IsEnabled = true;
                }
                else
                {
                    this.assertionCheckBox.IsEnabled = false;
                }

                foreach (var node in this.aglGraphViewer.Graph.Nodes)
                {
                    node.Attr.LineWidth = 1;
                }

                viewerNode.Node.Attr.LineWidth = 3;
            }
Esempio n. 10
0
        public void MouseMove(MsaglMouseEventArgs e)
        {
            if (currentPath == null)
            {
                return;
            }
            var point = scroller.GetWpfPosition(e);

            if (DistanceBetweenWpfPoints(point, pathEnd) < 3 * currentPath.StrokeThickness)
            {
                return;
            }

            pathEnd = point;

            pathSegmentCollection.Add(new LineSegment(point, true));
            var pathFigure           = new PathFigure(pathStart, pathSegmentCollection, true);
            var pathFigureCollection = new PathFigureCollection {
                pathFigure
            };
            var pathGeometry = new PathGeometry(pathFigureCollection);

            currentPath.Data = pathGeometry;
        }
Esempio n. 11
0
        void graphViewer_MouseDown(object sender, MsaglMouseEventArgs e)
        {
            var node = graphViewer.ObjectUnderMouseCursor as IViewerNode;

            if (node != null)
            {
                if (string.IsNullOrEmpty(start))
                {
                    var drawingNode = (Node)node.DrawingObject;
                    drawingNode.Attr.FillColor = Color.Green;
                    start = node.Node.Id;
                }
                else
                {
                    if (node.Node.Id != start)
                    {
                        var drawingNode = (Node)node.DrawingObject;
                        drawingNode.Attr.FillColor = Color.Red;
                        stop = node.Node.Id;
                        calculate.IsEnabled = true;
                    }
                }
            }
        }
Esempio n. 12
0
 void MainWindow_MouseDown(object sender, MsaglMouseEventArgs e)
 {
     statusTextBox.Text = "there was a click...";
 }
Esempio n. 13
0
 private void IViewer_MouseDown(object sender, MsaglMouseEventArgs e)
 {
     Debug.Print("Mousedown");
 }
 public Point ScreenToSource(MsaglMouseEventArgs e)
 {
     return(new Point(e.X, e.Y));
 }
Esempio n. 15
0
 internal void DrawRubberLine(MsaglMouseEventArgs args)
 {
     RubberLineEnd = gViewer.ScreenToSource(new Point(args.X, args.Y));
     DrawRubberLineWithKnownEnd();
 }
 public void DrawRubberLine(MsaglMouseEventArgs args)
 {
     throw new NotImplementedException();
 }
Esempio n. 17
0
        //        void CreateFrameworkElementForEdgeLabel(DrawingEdge edge) {
        //            var textBlock = CreateTextBlockForDrawingObj(edge);
        //            if (textBlock == null) return;
        //            drawingGraphObjectsToTextBoxes[edge] = textBlock;
        //            textBlock.Tag = new VLabel(edge, textBlock);
        //        }

        public void DrawRubberLine(MsaglMouseEventArgs args)
        {
            DrawRubberLine(ScreenToSource(args));
        }
Esempio n. 18
0
 void scroller_MouseMove(object sender, MsaglMouseEventArgs e)
 {
     MouseMove(e);
 }
Esempio n. 19
0
 private void MainForm_MouseUp(object sender, MsaglMouseEventArgs e)
 {
     m_MouseLeftButtonDownPoint = (gViewer).ScreenToSource(e);
 }
Esempio n. 20
0
 public void MouseDown(MsaglMouseEventArgs e)
 {
     StartNewPath(scroller.GetWpfPosition(e));
 }
Esempio n. 21
0
 private void GraphViewer_MouseDown(object sender, MsaglMouseEventArgs e)
 {
     Graph graph = (Graph)sender;
 }
 void GraphScrollerMouseUp(object sender, MsaglMouseEventArgs e)
 {
 }
Esempio n. 23
0
 /// <summary>
 /// Methode für das Click-Verhalten
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void GraphViewer_MouseDown(object sender, MsaglMouseEventArgs e)
 {
     statusTextBox.Text = "there was a click...";
 }
Esempio n. 24
0
        private void MouseUpHandler(object s, MsaglMouseEventArgs ev)
        {
            if (_graphViewer.ObjectUnderMouseCursor is VNode && (bool)AddTaxiPathButton.IsChecked && SourceNode != null && (VNode)_graphViewer.ObjectUnderMouseCursor != SourceNode)
            {
                TargetNode = (VNode)_graphViewer.ObjectUnderMouseCursor;

                if (SourceNode.Node.UserData is WayPoint && !(TargetNode.Node.UserData is WayPoint) && !(TargetNode.Node.UserData is Runway))
                {
                    return;
                }

                if (!(SourceNode.Node.UserData is Runway) && !(SourceNode.Node.UserData is WayPoint) && TargetNode.Node.UserData is WayPoint)
                {
                    return;
                }

                var taxiName = SourceNode.Node.Id.Replace('-', ' ')
                               .Split()
                               .Intersect(TargetNode.Node.Id.Replace('-', ' ').Split())
                               .FirstOrDefault();

                if (taxiName == null || Int32.TryParse(taxiName, out _))
                {
                    var tempName = SourceNode.Node.Id.Replace('-', ' ');

                    foreach (var ln in LikelyTaxiwayNames)
                    {
                        tempName.Contains(ln);
                        taxiName = ln;
                    }
                }

                if (taxiName == null || Int32.TryParse(taxiName, out _))
                {
                    var tempName = TargetNode.Node.Id.Replace('-', ' ');
                    foreach (var ln in LikelyTaxiwayNames)
                    {
                        tempName.Contains(ln);
                        taxiName = ln;
                    }
                }

                if (taxiName == null || Int32.TryParse(taxiName, out _))
                {
                    taxiName = $"{SourceNode.Node.Id} to {TargetNode.Node.Id}";
                }

                var mainCost    = 1;
                var reverseCost = 1;

                if (SourceNode.Node.Id.Contains("Apron") || SourceNode.Node.Id.Contains("Ramp"))
                {
                    reverseCost = 100;
                }
                if (TargetNode.Node.Id.Contains("Apron") || TargetNode.Node.Id.Contains("Ramp"))
                {
                    mainCost = 100;
                }
                if (SourceNode.Node.Id.Contains("Spot") || SourceNode.Node.Id.Contains("Maintenance") || SourceNode.Node.Id.Contains("Bunker") || SourceNode.Node.Id.Contains("Shelter") || SourceNode.Node.Id.Contains("Parking") || SourceNode.Node.Id.Contains("Cargo") || SourceNode.Node.Id.Contains("Revetment"))
                {
                    reverseCost = 999;
                }
                if (TargetNode.Node.Id.Contains("Spot") || TargetNode.Node.Id.Contains("Maintenance") || TargetNode.Node.Id.Contains("Bunker") || TargetNode.Node.Id.Contains("Shelter") || TargetNode.Node.Id.Contains("Parking") || TargetNode.Node.Id.Contains("Cargo") || TargetNode.Node.Id.Contains("Revetment"))
                {
                    mainCost = 999;
                }
                if (SourceNode.Node.Id.Contains("Runway") && TargetNode.Node.Id.Contains("Runway"))
                {
                    mainCost    = 999;
                    reverseCost = 999;
                }

                // Add to the Taxiways for searching
                airfield.Taxiways.Add(new NavigationPath
                {
                    Source = SourceNode.Node.Id,
                    Target = TargetNode.Node.Id,
                    Name   = taxiName,
                    Cost   = mainCost,
                });

                airfield.Taxiways.Add(new NavigationPath
                {
                    Source = TargetNode.Node.Id,
                    Target = SourceNode.Node.Id,
                    Name   = taxiName,
                    Cost   = reverseCost,
                });

                // Add to the underlying graph for data for refreshing UI
                var mainEdge = new TaggedEdge <NavigationPoint, string>((NavigationPoint)SourceNode.Node.UserData,
                                                                        (NavigationPoint)TargetNode.Node.UserData, taxiName);
                airfield.NavigationGraph.AddEdge(mainEdge);
                if (airfield.NavigationCost == null)
                {
                    airfield.NavigationCost = new Dictionary <TaggedEdge <NavigationPoint, string>, double>();
                }
                airfield.NavigationCost[mainEdge] = mainCost;

                var reverseEdge = new TaggedEdge <NavigationPoint, string>((NavigationPoint)TargetNode.Node.UserData,
                                                                           (NavigationPoint)SourceNode.Node.UserData, taxiName);
                airfield.NavigationGraph.AddEdge(reverseEdge);
                airfield.NavigationCost[reverseEdge] = reverseCost;

                SourceNode = null;
                DisplayGraph();
            }
        }
Esempio n. 25
0
 void scroller_MouseUp(object sender, MsaglMouseEventArgs e)
 {
     MouseUp();
 }
Esempio n. 26
0
 private void Gviewer_MouseDown(object sender, MsaglMouseEventArgs e)
 {
     selectedObject = gviewer.ObjectUnderMouseCursor;
 }
Esempio n. 27
0
 void scroller_MouseDown(object sender, MsaglMouseEventArgs e)
 {
     MouseDown(e);
 }
 void WpfApplicationSample_MouseDown(object sender, MsaglMouseEventArgs e)
 {
     statusTextBox.Text = "there was a click...";
 }
 void GraphViewerMouseMove(object sender, MsaglMouseEventArgs e)
 {
     SetStatusText();
 }
Esempio n. 30
0
 private void MasterViewer_MouseUp(object sender, MsaglMouseEventArgs e)
 {
     statusTextBox.Background = Brushes.Transparent;
     statusTextBox.Text       = "Left-Click = Move Node | Right-Click = Add Edge";
 }