Ejemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ConnectorDrawing" /> class.
        /// </summary>
        /// <param name="definition">The definition.</param>
        /// <param name="align">The align.</param>
        /// <param name="owningItem">The owning item.</param>
        public ConnectorDrawing(ConnectorDefinition definition, ConnectorAlign align, DiagramItem owningItem)
        {
            Align      = align;
            Definition = definition;
            OwningItem = owningItem;

            var halfMargin = 10;

            switch (Align)
            {
            case ConnectorAlign.Top:
            case ConnectorAlign.Bottom:
                Margin = new Thickness(halfMargin, 0, halfMargin, 0);
                break;

            case ConnectorAlign.Left:
            case ConnectorAlign.Right:
                Margin = new Thickness(0, halfMargin, 0, halfMargin);
                break;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Generate points for given connectors.
        /// </summary>
        /// <param name="connectors">Connectors which points will be generated.</param>
        /// <param name="connectorAlign">The connector align.</param>
        /// <param name="item">The item.</param>
        /// <param name="points">The points.</param>
        /// <exception cref="System.NotSupportedException">Connector align  + connectorAlign</exception>
        private void generateConnectorPoints(IEnumerable <ConnectorDrawing> connectors, ConnectorAlign connectorAlign, DiagramItem item, List <GraphPoint> points)
        {
            //detect conus for connector direction
            ViewAngle view;

            switch (connectorAlign)
            {
            case ConnectorAlign.Bottom:
                view = BottomEdge;
                break;

            case ConnectorAlign.Right:
                view = RightConus;
                break;

            case ConnectorAlign.Left:
                view = LeftConus;
                break;

            case ConnectorAlign.Top:
                view = TopEdge;
                break;

            default:
                throw new NotSupportedException("Connector align " + connectorAlign);
            }

            //create points for connectors
            var connectorsArray = connectors.ToArray();
            var connectorsCount = connectorsArray.Length;

            for (var i = 0; i < connectorsCount; ++i)
            {
                var connector = connectorsArray[i];

                var point = createPoint(connector, view);
                _connectorPoints.Add(connector, point);

                var inputs = getInputSlots(i, connectorsCount, connector, item, points);
                foreach (var input in inputs)
                {
                    point.SetEdgeStatus(input);
                    points.Add(input);
                }

                points.Add(point);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Exports the connectory drawing factory that is used for every drawn join.
 /// </summary>
 /// <param name="factory">The exported factory.</param>
 /// <param name="align">Align for which connector will be used.</param>
 protected void ExportConnectorFactory(ConnectorFactory factory, ConnectorAlign align)
 {
     Message("Exporting {0} connector factory {1}", align, factory);
     _connectorFactories[align] = factory;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Gets the connector drawings.
 /// </summary>
 /// <param name="align">The align.</param>
 /// <returns>IEnumerable&lt;ConnectorDrawing&gt;.</returns>
 private IEnumerable<ConnectorDrawing> getConnectorDrawings(ConnectorAlign align)
 {
     return _connectors.Values.Where((connector) => connector.Align == align);
 }