Beispiel #1
0
 protected virtual Shapes.IDiagramLine CreateTemporaryLink(Shapes.IDiagramPort fromPort, Shapes.IDiagramPort toPort)
 {
     Shapes.IDiagramLine link1 = (Shapes.IDiagramLine)Activator.CreateInstance(base.View.LineType);
     if ((link1 == null) || (link1.DiagramShape == null))
     {
         return(null);
     }
     link1.FromPort = fromPort;
     link1.ToPort   = toPort;
     Shapes.DiagramShape obj1 = link1.DiagramShape;
     if (obj1 is Shapes.LineGraph)
     {
         Shapes.LineGraph link2 = (Shapes.LineGraph)obj1;
         if (this.myOrthogonalSet)
         {
             link2.Orthogonal = this.Orthogonal;
         }
         link2.AdjustingStyle = Shapes.LineAdjustingStyle.Calculate;
     }
     else if (obj1 is Shapes.TextLine)
     {
         Shapes.TextLine link3 = (Shapes.TextLine)obj1;
         if (this.myOrthogonalSet)
         {
             link3.Orthogonal = this.Orthogonal;
         }
         link3.AdjustingStyle = Shapes.LineAdjustingStyle.Calculate;
     }
     base.View.Layers.Default.Add(obj1);
     return(link1);
 }
Beispiel #2
0
 public virtual void DoNoRelink(Shapes.IDiagramLine oldlink, Shapes.IDiagramPort fromPort, Shapes.IDiagramPort toPort)
 {
     Shapes.DiagramShape obj1 = oldlink.DiagramShape;
     if ((obj1 != null) && (obj1.Layer != null))
     {
         if (obj1.Movable)
         {
             oldlink.FromPort       = fromPort;
             oldlink.ToPort         = toPort;
             base.TransactionResult = "Relink";
             base.View.RaiseLinkRelinked(oldlink.DiagramShape);
             return;
         }
         if (obj1.CanDelete())
         {
             CancelEventArgs args1 = new CancelEventArgs();
             base.View.RaiseSelectionDeleting(args1);
             if (!args1.Cancel)
             {
                 obj1.Remove();
                 base.View.RaiseSelectionDeleted();
                 base.TransactionResult = "Relink";
                 return;
             }
             this.DoCancelMouse();
         }
         else
         {
             this.DoCancelMouse();
         }
     }
     base.TransactionResult = null;
 }
Beispiel #3
0
 public virtual void DoLinking(PointF dc)
 {
     if (this.EndPort != null)
     {
         Shapes.DiagramShape obj1 = this.EndPort.DiagramShape;
         if (obj1 != null)
         {
             RectangleF          ef1;
             Shapes.IDiagramPort port1 = this.PickNearestPort(dc);
             GoTemporaryPort     port2 = obj1 as GoTemporaryPort;
             if (port2 != null)
             {
                 port2.Target = port1 as Shapes.DiagramPort;
             }
             if ((port1 != null) && (port1.DiagramShape != null))
             {
                 ef1 = port1.DiagramShape.Bounds;
             }
             else
             {
                 ef1 = new RectangleF(dc.X, dc.Y, 0f, 0f);
             }
             obj1.Bounds = ef1;
         }
     }
 }
Beispiel #4
0
 public virtual bool IsValidToPort(Shapes.IDiagramPort toPort)
 {
     if (!this.ForwardsOnly)
     {
         return(toPort.CanLinkTo());
     }
     return(false);
 }
Beispiel #5
0
 internal PortFilteredLinkEnumerator(Shapes.IDiagramPort p, ArrayList a, bool dest)
 {
     this.myPort  = p;
     this.myArray = a;
     this.myIndex = -1;
     this.myDest  = dest;
     this.Reset();
 }
Beispiel #6
0
 public virtual bool IsValidLink(Shapes.IDiagramPort fromPort, Shapes.IDiagramPort toPort)
 {
     if ((fromPort != null) && (toPort != null))
     {
         return(fromPort.IsValidLink(toPort));
     }
     return(true);
 }
 internal PortFilteredLinkEnumerator(Shapes.IDiagramPort p, ArrayList a, bool dest)
 {
     this.myPort = p;
     this.myArray = a;
     this.myIndex = -1;
     this.myDest = dest;
     this.Reset();
 }
Beispiel #8
0
 public virtual void DoRelink(Shapes.IDiagramLine oldlink, Shapes.IDiagramPort fromPort, Shapes.IDiagramPort toPort)
 {
     oldlink.FromPort = fromPort;
     oldlink.ToPort   = toPort;
     Shapes.SubGraphNode.ReparentToCommonSubGraph(oldlink.DiagramShape, (fromPort != null) ? fromPort.DiagramShape : null, (toPort != null) ? toPort.DiagramShape : null, true, base.View.Document.LinksLayer);
     base.TransactionResult = "Relink";
     base.View.RaiseLinkRelinked(oldlink.DiagramShape);
 }
Beispiel #9
0
 private Shapes.IDiagramPort pickNearestPort1(Shapes.DiagramShape obj, PointF dc, Shapes.IDiagramPort bestPort, ref float bestDist)
 {
     Shapes.IDiagramPort port1 = obj as Shapes.IDiagramPort;
     if (port1 != null)
     {
         PointF tf1     = this.PortPoint(port1, dc);
         float  single1 = dc.X - tf1.X;
         float  single2 = dc.Y - tf1.Y;
         float  single3 = (single1 * single1) + (single2 * single2);
         if (single3 <= bestDist)
         {
             object obj1 = null;
             if (this.ValidPortsCache != null)
             {
                 obj1 = this.ValidPortsCache[port1];
             }
             if (obj1 == ToolLinking.Valid)
             {
                 bestPort = port1;
                 bestDist = single3;
             }
             else if (obj1 != ToolLinking.Invalid)
             {
                 if ((this.Forwards && this.IsValidLink(this.OriginalStartPort, port1)) || (!this.Forwards && this.IsValidLink(port1, this.OriginalStartPort)))
                 {
                     if (this.ValidPortsCache != null)
                     {
                         this.ValidPortsCache[port1] = ToolLinking.Valid;
                     }
                     bestPort = port1;
                     bestDist = single3;
                 }
                 else if (this.ValidPortsCache != null)
                 {
                     this.ValidPortsCache[port1] = ToolLinking.Invalid;
                 }
             }
         }
     }
     Shapes.GroupShape group1 = obj as Shapes.GroupShape;
     if (group1 != null)
     {
         Shapes.GroupEnumerator enumerator2 = group1.GetEnumerator();
         Shapes.GroupEnumerator enumerator1 = enumerator2.GetEnumerator();
         while (enumerator1.MoveNext())
         {
             Shapes.DiagramShape obj2 = enumerator1.Current;
             bestPort = this.pickNearestPort1(obj2, dc, bestPort, ref bestDist);
         }
     }
     return(bestPort);
 }
Beispiel #10
0
 public virtual void DoNewLink(Shapes.IDiagramPort fromPort, Shapes.IDiagramPort toPort)
 {
     Shapes.IDiagramLine link1 = base.View.CreateLink(fromPort, toPort);
     if (link1 != null)
     {
         base.TransactionResult = "New Link";
         base.View.RaiseLinkCreated(link1.DiagramShape);
     }
     else
     {
         base.TransactionResult = null;
     }
 }
Beispiel #11
0
        protected virtual Shapes.IDiagramPort CreateTemporaryPort(Shapes.IDiagramPort port, PointF pnt, bool forToPort, bool atEnd)
        {
            GoTemporaryPort port1 = new GoTemporaryPort();

            port1.Target = port as Shapes.DiagramPort;
            if ((port != null) && (port.DiagramShape != null))
            {
                port1.Size = port.DiagramShape.Size;
            }
            port1.Center = pnt;
            port1.Style  = Shapes.DiagramPortStyle.None;
            base.View.Layers.Default.Add(port1);
            return(port1);
        }
Beispiel #12
0
 public override void DoMouseUp()
 {
     Shapes.IDiagramPort port1 = this.PickNearestPort(base.LastInput.DocPoint);
     if (port1 != null)
     {
         if (this.myLinkingNew)
         {
             if (this.Forwards)
             {
                 this.DoNewLink(this.OriginalStartPort, port1);
             }
             else
             {
                 this.DoNewLink(port1, this.OriginalStartPort);
             }
         }
         else if (this.Forwards)
         {
             this.DoRelink(this.Link, this.OriginalStartPort, port1);
         }
         else
         {
             this.DoRelink(this.Link, port1, this.OriginalStartPort);
         }
     }
     else
     {
         Shapes.IDiagramPort port2 = this.PickPort(base.LastInput.DocPoint);
         if (this.myLinkingNew)
         {
             if (this.Forwards)
             {
                 this.DoNoNewLink(this.OriginalStartPort, port2);
             }
             else
             {
                 this.DoNoNewLink(port2, this.OriginalStartPort);
             }
         }
         else if (this.Forwards)
         {
             this.DoNoRelink(this.Link, this.OriginalStartPort, port2);
         }
         else
         {
             this.DoNoRelink(this.Link, port2, this.OriginalStartPort);
         }
     }
     base.StopTool();
 }
Beispiel #13
0
        public virtual PointF PortPoint(Shapes.IDiagramPort port, PointF dc)
        {
            Shapes.DiagramPort port1 = port.DiagramShape as Shapes.DiagramPort;
            if (port1 == null)
            {
                return(port.DiagramShape.Center);
            }
            Shapes.DiagramShape obj1 = port1.PortObject;
            if ((obj1 == null) || (obj1.Layer == null))
            {
                obj1 = port1;
            }
            SizeF ef1     = obj1.Size;
            float single1 = 10f / base.View.WorldScale.Width;

            if ((ef1.Width < single1) && (ef1.Height < single1))
            {
                return(obj1.Center);
            }
            return(port1.GetLinkPointFromPoint(dc));
        }
Beispiel #14
0
 public override bool CanStart()
 {
     if (base.FirstInput.IsContextButton)
     {
         return(false);
     }
     if (!base.View.CanLinkObjects())
     {
         return(false);
     }
     Shapes.IDiagramPort port1 = this.PickPort(base.FirstInput.DocPoint);
     base.OriginalStartPort = port1;
     if (port1 == null)
     {
         return(false);
     }
     if (!this.IsValidFromPort(port1))
     {
         return(this.IsValidToPort(port1));
     }
     return(true);
 }
Beispiel #15
0
 public virtual void StartNewLink(Shapes.IDiagramPort port, PointF dc)
 {
     if (port != null)
     {
         base.StartTransaction();
         this.myLinkingNew = true;
         if (this.IsValidFromPort(port))
         {
             this.Forwards  = true;
             this.StartPort = this.CreateTemporaryPort(port, port.DiagramShape.Center, false, false);
             this.EndPort   = this.CreateTemporaryPort(port, dc, true, true);
             this.Link      = this.CreateTemporaryLink(this.StartPort, this.EndPort);
         }
         else
         {
             this.Forwards  = false;
             this.StartPort = this.CreateTemporaryPort(port, port.DiagramShape.Center, true, false);
             this.EndPort   = this.CreateTemporaryPort(port, dc, false, true);
             this.Link      = this.CreateTemporaryLink(this.EndPort, this.StartPort);
         }
         base.View.Cursor = Cursors.Hand;
     }
 }
Beispiel #16
0
        public virtual Shapes.IDiagramPort PickNearestPort(PointF dc)
        {
            Shapes.IDiagramPort port1 = null;
            float single1             = base.View.PortGravity;

            single1 *= single1;
            LayerCollectionEnumerator enumerator1 = base.View.Layers.Backwards.GetEnumerator();

            while (enumerator1.MoveNext())
            {
                DiagramLayer layer1 = enumerator1.Current;
                if (layer1.IsInDocument && layer1.CanViewObjects())
                {
                    LayerEnumerator enumerator3 = layer1.Backwards.GetEnumerator();
                    while (enumerator3.MoveNext())
                    {
                        Shapes.DiagramShape obj1 = enumerator3.Current;
                        port1 = this.pickNearestPort1(obj1, dc, port1, ref single1);
                    }
                }
            }
            return(port1);
        }
Beispiel #17
0
 public virtual void StartRelink(Shapes.IDiagramLine oldlink, Shapes.IDiagramPort oldport, PointF dc)
 {
     if (oldlink != null)
     {
         Shapes.DiagramShape obj1 = oldlink.DiagramShape;
         if ((obj1 != null) && (obj1.Layer != null))
         {
             base.StartTransaction();
             this.myLinkingNew    = false;
             this.OriginalEndPort = oldport;
             this.Link            = oldlink;
             if (oldlink.ToPort == oldport)
             {
                 this.Forwards          = true;
                 this.OriginalStartPort = oldlink.FromPort;
                 PointF tf1 = dc;
                 if (this.OriginalStartPort != null)
                 {
                     tf1 = this.OriginalStartPort.DiagramShape.Center;
                 }
                 else if (oldlink is Shapes.LineGraph)
                 {
                     Shapes.LineGraph link1 = (Shapes.LineGraph)oldlink;
                     if (link1.PointsCount > 0)
                     {
                         tf1 = link1.GetPoint(0);
                     }
                 }
                 else if (oldlink is Shapes.TextLine)
                 {
                     Shapes.TextLine link2 = (Shapes.TextLine)oldlink;
                     if (link2.RealLink.PointsCount > 0)
                     {
                         tf1 = link2.RealLink.GetPoint(0);
                     }
                 }
                 this.StartPort   = this.CreateTemporaryPort(this.OriginalStartPort, tf1, false, false);
                 oldlink.FromPort = this.StartPort;
                 this.EndPort     = this.CreateTemporaryPort(this.OriginalEndPort, dc, true, true);
                 oldlink.ToPort   = this.EndPort;
             }
             else if (oldlink.FromPort == oldport)
             {
                 this.Forwards          = false;
                 this.OriginalStartPort = oldlink.ToPort;
                 PointF tf2 = dc;
                 if (this.OriginalStartPort != null)
                 {
                     tf2 = this.OriginalStartPort.DiagramShape.Center;
                 }
                 else if (oldlink is Shapes.LineGraph)
                 {
                     Shapes.LineGraph link3 = (Shapes.LineGraph)oldlink;
                     if (link3.PointsCount > 0)
                     {
                         tf2 = link3.GetPoint(link3.PointsCount - 1);
                     }
                 }
                 else if (oldlink is Shapes.TextLine)
                 {
                     Shapes.TextLine link4 = (Shapes.TextLine)oldlink;
                     if (link4.RealLink.PointsCount > 0)
                     {
                         tf2 = link4.RealLink.GetPoint(link4.RealLink.PointsCount - 1);
                     }
                 }
                 this.StartPort   = this.CreateTemporaryPort(this.OriginalStartPort, tf2, true, false);
                 oldlink.ToPort   = this.StartPort;
                 this.EndPort     = this.CreateTemporaryPort(this.OriginalEndPort, dc, false, true);
                 oldlink.FromPort = this.EndPort;
             }
             base.View.Cursor = Cursors.Hand;
         }
     }
 }
Beispiel #18
0
 public virtual void DoCancelRelink(Shapes.IDiagramLine oldlink, Shapes.IDiagramPort fromPort, Shapes.IDiagramPort toPort)
 {
     oldlink.FromPort       = fromPort;
     oldlink.ToPort         = toPort;
     base.TransactionResult = null;
 }
Beispiel #19
0
 public virtual bool IsValidFromPort(Shapes.IDiagramPort fromPort)
 {
     return(fromPort.CanLinkFrom());
 }
Beispiel #20
0
 public virtual void DoNoNewLink(Shapes.IDiagramPort fromPort, Shapes.IDiagramPort toPort)
 {
     base.TransactionResult = null;
 }