/// <summary>
        /// Permite crear una coneccion. Las conecciones solo pueden 
        /// ser creadas por el tipo ChartElement en el metodo AddConnection. 
        /// Utilice el constructor de su tipo ChartElement para adicionar 
        /// las conecciones de salida de su elemento.
        /// </summary>
        /// <param name="from">Pin de salida de la coneccion.</param>
        /// <param name="to">Pin de llegada de la coneccion, puede ser null.</param>
        internal Connection(Pin from, Pin to)
        {
            this.From = from;
            this.To = to;
           

        }
Example #2
0
        /// <summary>
        /// Metodo que visualiza un pin.
        /// </summary>
        /// <param name="gr">Objeto Graphics utilizado para pintar.</param>
        /// <param name="pin">Pin que se desea visualizar.</param>
        protected virtual void DrawPin(Graphics gr, Pin pin)
        {
            Point position = pin.Position;

             Rectangle pinRectangle = new Rectangle(position.X - PinSize.Width / 2, position.Y - PinSize.Height / 2, PinSize.Width, PinSize.Height);

             switch (pin.PinType)
             {
            case PinType.Input:
               gr.FillEllipse(Brushes.White, pinRectangle);
               gr.DrawEllipse(Pens.Black, pinRectangle);
               break;

            case PinType.Output:
               gr.FillRectangle(Brushes.White, pinRectangle);
               gr.DrawRectangle(Pens.Black, pinRectangle);
               break;
             }
        }
Example #3
0
        /// <summary>
        /// Metodo que se invoca cuando se presiona un boton del mouse.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseDown(MouseEventArgs e)
        {
            lastMousePlace = FromClientToCanvas(e.Location);

            ChartElement nextSelected = null;

            foreach (ChartElement c in Charts)
            {
                if (c.Display.Contains(FromClientToCanvas(e.Location)))
                {
                    nextSelected = c;
                }
            }

            if (SelectedItem != null)
            {
                SelectedItem.Selected = false;
            }
            SelectedItem = nextSelected;
            if (SelectedItem != null)
            {
                SelectedItem.Selected = true;
            }

            if (e.Button == MouseButtons.Right)
            {
                isConnecting        = false;
                modifyingConnection = null;

                if (SelectedItem != null)
                {
                    ContextMenu cm = GetContextMenuFor(SelectedItem);
                    ContextMenu = cm;
                }
                else
                {
                    ContextMenu cm = GetGlobalContextMenu(FromClientToCanvas(e.Location));
                    ContextMenu = cm;
                }
            }
            else
            {
                if (isConnecting)
                {
                    Pin nearestInput = null;
                    if (SelectedItem != null)
                    {
                        foreach (Pin input in SelectedItem.ValidInputs)
                        {
                            if (nearestInput == null ||
                                Distance(input.Position, FromClientToCanvas(e.Location)) <
                                Distance(nearestInput.Position, FromClientToCanvas(e.Location)))
                            {
                                nearestInput = input;
                            }
                        }
                    }

                    modifyingConnection.To = nearestInput;
                    isConnecting           = false;
                    modifyingConnection    = null;
                }
            }

            Invalidate();

            base.OnMouseDown(e);
        }
Example #4
0
 /// <summary>
 /// Permite crear una coneccion. Las conecciones solo pueden ser creadas por el tipo ChartElement en el metodo AddConnection.
 /// Utilice el constructor de su tipo ChartElement para adicionar las conecciones de salida de su elemento.
 /// </summary>
 /// <param name="from">Pin de salida de la coneccion.</param>
 /// <param name="to">Pin de llegada de la coneccion, puede ser null.</param>
 internal Connection(Pin from, Pin to)
 {
     this.From = from;
     this.To   = to;
 }