private ConnectionPoint GetEmptyEdgeMidConnectionPointNotOfType(UIElement designer, EdgeLocation edgeLocation, ConnectionPointKind invalidType)
        {
            List<ConnectionPoint> connectionPoints = FlowchartDesigner.GetAllConnectionPoints(designer);
            connectionPoints = new List<ConnectionPoint>(connectionPoints.Where<ConnectionPoint>((p) =>
            {
                return p != null && p.PointType != invalidType && p.AttachedConnectors.Count == 0 && p.EdgeLocation == edgeLocation;
            }));

            if (connectionPoints.Count > 0)
            {
                return connectionPoints[connectionPoints.Count / 2];
            }

            return null;
        }
 static ConnectionPoint GetClosestConnectionPointNotOfType(ConnectionPoint srcConnectionPoint, List<ConnectionPoint> targetConnectionPoints, ConnectionPointKind illegalConnectionPointKind)
 {
     double minDist;
     List<ConnectionPoint> filteredConnectionPoints = new List<ConnectionPoint>();
     foreach (ConnectionPoint connPoint in targetConnectionPoints)
     {
         if (connPoint.PointType != illegalConnectionPointKind && !connPoint.Equals(srcConnectionPoint) && connPoint.AttachedConnectors.Count == 0)
         {
             filteredConnectionPoints.Add(connPoint);
         }
     }
     return GetClosestConnectionPoint(srcConnectionPoint, filteredConnectionPoints, out minDist);
 }
 public ConnectionPoint()
 {
     pointType = ConnectionPointKind.Default;
     attachedConnectors = new List<Connector>();
     this.parentDesigner = null;
 }
 protected ConnectionPointSymbol(ConnectionPointKind kind, string name, Location location, TaskDeclarationSymbol taskDeclaration) : base(name, location) {
     Kind = kind;
     TaskDeclaration = taskDeclaration;
 }
 //widthFraction and heightFraction determine the location of the ConnectionPoint on the UIElement.
 ConnectionPoint CreateConnectionPoint(UIElement element, double widthFraction, double heightFraction, EdgeLocation location, ConnectionPointKind type)
 {
     ConnectionPoint connectionPoint = new ConnectionPoint();
     connectionPoint.EdgeLocation = location;
     connectionPoint.PointType = type;
     connectionPoint.ParentDesigner = element;
     connectionPoint.IsEnabled = false;
     BindingOperations.SetBinding(connectionPoint, ConnectionPoint.LocationProperty, GetConnectionPointBinding(element as FrameworkElement, widthFraction, heightFraction));
     return connectionPoint;
 }
        static ConnectionPoint GetClosestConnectionPointNotOfType(ConnectionPoint srcConnectionPoint, List <ConnectionPoint> targetConnectionPoints, ConnectionPointKind illegalConnectionPointKind)
        {
            double minDist;
            List <ConnectionPoint> filteredConnectionPoints = new List <ConnectionPoint>();

            foreach (ConnectionPoint connPoint in targetConnectionPoints)
            {
                if (connPoint.PointType != illegalConnectionPointKind && !connPoint.Equals(srcConnectionPoint) && connPoint.AttachedConnectors.Count == 0)
                {
                    filteredConnectionPoints.Add(connPoint);
                }
            }
            return(GetClosestConnectionPoint(srcConnectionPoint, filteredConnectionPoints, out minDist));
        }
Пример #7
0
 public ConnectionPoint()
 {
     pointType           = ConnectionPointKind.Default;
     attachedConnectors  = new List <Connector>();
     this.parentDesigner = null;
 }
        private static List <ConnectionPoint> FindCandidatePointsForLink(List <ConnectionPoint> destConnPoints, ConnectionPointKind excludePointType)
        {
            List <ConnectionPoint>        candidateDestConnPoints;
            IEnumerable <ConnectionPoint> freeDestConnPoints = destConnPoints.Where(p =>
                                                                                    p.PointType != excludePointType &&
                                                                                    !p.AttachedConnectors.Any());

            if (freeDestConnPoints.Any())
            {
                candidateDestConnPoints = freeDestConnPoints.ToList();
            }
            else
            {
                IEnumerable <ConnectionPoint> availablePoints =
                    destConnPoints.Where(
                        p => p.PointType != excludePointType &&
                        p.AttachedConnectors.Any(connector => FreeFormPanel.GetDestinationConnectionPoint(connector).Equals(p)));

                candidateDestConnPoints = availablePoints.Any() ? availablePoints.ToList() : destConnPoints;
            }

            return(candidateDestConnPoints);
        }
        ConnectionPoint FindClosestConnectionPointNotOfType(ConnectionPoint srcConnectionPoint, List <ConnectionPoint> targetConnectionPoints, ConnectionPointKind illegalConnectionPointKind)
        {
            double minDist;
            List <ConnectionPoint> filteredConnectionPoints = new List <ConnectionPoint>();

            foreach (ConnectionPoint connPoint in targetConnectionPoints)
            {
                if (connPoint != null && connPoint.PointType != illegalConnectionPointKind && !connPoint.Equals(srcConnectionPoint))
                {
                    filteredConnectionPoints.Add(connPoint);
                }
            }
            return(FindClosestConnectionPoint(srcConnectionPoint, filteredConnectionPoints, out minDist));
        }
 protected ConnectionPointSymbol(ConnectionPointKind kind, string name, Location location): base(name, location) {
     Kind = kind;
 }