Ejemplo n.º 1
0
        /// <summary>
        /// Crea un menu contextual para cierto elemento del diagrama.
        /// Permite eliminar el elemento, conectar a otro, etc.
        /// </summary>
        /// <param name="chart">Elemento al que se le aplican las opciones.</param>
        /// <returns>Un objeto ContextMenu con las opciones.</returns>
        private ContextMenu GetContextMenuFor(ChartElement chart)
        {
            var cm = new ContextMenu();

            foreach (Connection c in chart.Connections)        // para cada conexion del elemento
            {
                var item = new MenuItem();                     // se crea un nuevo MenuItem.
                item.Text   = "Connect " + c.Label + " to..."; // el texto del menu es la etiqueta de la conexion.
                item.Tag    = c;                               // se almacena la conexion como un objeto asociado al MenuItem.
                item.Click += new EventHandler(item_Click);
                // se determina que accion se ejecuta para el click del MenuItem.
                cm.MenuItems.Add(item); // se agrega el menu item a los menuItems del menu contextual.
            }

            var sep = new MenuItem();

            sep.Text = "-";

            cm.MenuItems.Add(sep);

            var removeMenuItem = new MenuItem();

            removeMenuItem.Text   = "Remove";
            removeMenuItem.Tag    = chart;
            removeMenuItem.Click += new EventHandler(removeMenuItem_Click);

            cm.MenuItems.Add(removeMenuItem);
            return(cm);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Inicializa una coleccion de pines de cierto tipo, para determinado elemento.
 /// </summary>
 /// <param name="chart">Elemento poseedor de los pines.</param>
 /// <param name="count">Cantidad de pines de la coleccion.</param>
 /// <param name="type">Tipo de pin de la coleccion.</param>
 internal PinCollection(ChartElement chart, int count, PinType type)
 {
     this.pins = new Pin[count];
     for (int i = 0; i < this.pins.Length; i++)
     {
         this.pins[i] = new Pin(chart, i, type);
     }
 }
Ejemplo n.º 3
0
        void builderMenuItem_Click(object sender, EventArgs e)
        {
            MenuItem            item    = sender as MenuItem;
            ChartElementBuilder builder = item.Tag as ChartElementBuilder; // se recupera el Builder a partir
            //del menu item.

            ChartElement element = builder.Build(); // se crea un nuevo elemento utilizando ese builder.

            this.Charts.Add(element);               // se agrega a la coleccion de elementos del diagrama.
            if (GraphChanged != null)
            {
                GraphChanged();
            }
        }
Ejemplo n.º 4
0
        private void builderMenuItem_Click(object sender, EventArgs e)
        {
            var item    = sender as MenuItem;
            var builder = item.Tag as ChartElementBuilder;    // se recupera el Builder a partir del menu item.

            ChartElement element = builder.Build(item.Index); // se crea un nuevo elemento utilizando ese builder.

            if (element is BeginChartElement && Charts.First != null)
            {
                if (AddedASecondBeginElement != null)
                {
                    AddedASecondBeginElement.Invoke(this, EventArgs.Empty);
                }
            }
            else
            {
                Charts.Add(element); // se agrega a la coleccion de elementos del diagrama.
            }
            Invalidate();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Crea un menu contextual para cierto elemento del diagrama.
        /// Permite eliminar el elemento, conectar a otro, etc.
        /// </summary>
        /// <param name="chart">Elemento al que se le aplican las opciones.</param>
        /// <returns>Un objeto ContextMenu con las opciones.</returns>
        private ContextMenu GetContextMenuFor(ChartElement chart)
        {
            ContextMenu cm = new ContextMenu();

            MenuItem node = new MenuItem();

            node.Text   = "Insert conditional probabilities";
            node.Tag    = chart;
            node.Click += new EventHandler(Probability_Click);
            cm.MenuItems.Add(node);

            MenuItem removeMenuItem = new MenuItem();

            removeMenuItem.Text   = "Remove";
            removeMenuItem.Tag    = chart;
            removeMenuItem.Click += new EventHandler(removeMenuItem_Click);

            cm.MenuItems.Add(removeMenuItem);


            foreach (Connection c in chart.Connections) // para cada conexion del elemento
            {
                MenuItem item = new MenuItem();         // se crea un nuevo MenuItem.
                item.Text   = "Connect " + c.Label;     // el texto del menu es la etiqueta de la conexion.
                item.Tag    = c;                        // se almacena la conexion como un objeto asociado al MenuItem.
                item.Click += item_Click;               // se determina que accion se ejecuta para el click del MenuItem.
                cm.MenuItems.Add(item);                 // se agrega el menu item a los menuItems del menu contextual.
            }

            MenuItem sep = new MenuItem();

            sep.Text = "-";

            cm.MenuItems.Add(sep);

            return(cm);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Permite inicializar un pin. Observe que el uso de internal esta dado porque el elemento del diagrama es el que sabe que pines debe tener.
 /// </summary>
 internal Pin(ChartElement chart, int index, PinType type)
 {
     this.ChartElement = chart;
     this.Index        = index;
     this.PinType      = type;
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Permite inicializar un pin. Observe que el uso de internal esta dado porque el elemento del diagrama es el que sabe que pines debe tener.
 /// </summary>
 internal Pin(ChartElement chart, int index, PinType type)
 {
     this.ChartElement = chart;
     this.Index = index;
     this.PinType = type;
 }
Ejemplo n.º 8
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 == System.Windows.Forms.MouseButtons.Right)
            {
                isConnecting        = false;
                modifyingConnection = null;

                if (SelectedItem != null)
                {
                    ContextMenu cm = GetContextMenuFor(SelectedItem);
                    this.ContextMenu = cm;
                }
                else
                {
                    ContextMenu cm = GetGlobalContextMenu(FromClientToCanvas(e.Location));
                    this.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;
                            }
                        }
                    }

                    var before = modifyingConnection.To;

                    modifyingConnection.To = nearestInput;
                    if (nearestInput != null) //le pongo el padre
                    {
                        ((BayesianNodeChartElement)nearestInput.ChartElement).Parents.Add((BayesianNodeChartElement)modifyingConnection.From.ChartElement);
                        ((BayesianNodeChartElement)nearestInput.ChartElement).Condicional_Probabilities = null;
                    }
                    if (before != null) //le quito el antiguo padre
                    {
                        ((BayesianNodeChartElement)before.ChartElement).Parents.Remove(
                            modifyingConnection.From.ChartElement as BayesianNodeChartElement);
                        ((BayesianNodeChartElement)before.ChartElement).Condicional_Probabilities = null;
                    }


                    isConnecting        = false;
                    modifyingConnection = null;
                }
            }

            Invalidate();

            base.OnMouseDown(e);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Crea un menu contextual para cierto elemento del diagrama.
        /// Permite eliminar el elemento, conectar a otro, etc.
        /// </summary>
        /// <param name="chart">Elemento al que se le aplican las opciones.</param>
        /// <returns>Un objeto ContextMenu con las opciones.</returns>
        private ContextMenu GetContextMenuFor(ChartElement chart)
        {
            var cm = new ContextMenu();

             foreach (Connection c in chart.Connections) // para cada conexion del elemento
             {
            var item = new MenuItem(); // se crea un nuevo MenuItem.
            item.Text = "Connect " + c.Label + " to..."; // el texto del menu es la etiqueta de la conexion.
            item.Tag = c; // se almacena la conexion como un objeto asociado al MenuItem.
            item.Click += new EventHandler(item_Click);
            // se determina que accion se ejecuta para el click del MenuItem.
            cm.MenuItems.Add(item); // se agrega el menu item a los menuItems del menu contextual.
             }

             var sep = new MenuItem();
             sep.Text = "-";

             cm.MenuItems.Add(sep);

             var removeMenuItem = new MenuItem();
             removeMenuItem.Text = "Remove";
             removeMenuItem.Tag = chart;
             removeMenuItem.Click += new EventHandler(removeMenuItem_Click);

             cm.MenuItems.Add(removeMenuItem);
             return cm;
        }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 11
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);
        }
        /// <summary>
        /// Crea un menu contextual para cierto elemento del diagrama.
        /// Permite eliminar el elemento, conectar a otro, etc.
        /// </summary>
        /// <param name="chart">Elemento al que se le aplican las opciones.</param>
        /// <returns>Un objeto ContextMenu con las opciones.</returns>
        private ContextMenu GetContextMenuFor(ChartElement chart)
        {
            ContextMenu cm = new ContextMenu();

            MenuItem node = new MenuItem();
            node.Text = "Insert conditional probabilities";
            node.Tag = chart;
            node.Click += new EventHandler(Probability_Click);
            cm.MenuItems.Add(node); 
  
            MenuItem removeMenuItem = new MenuItem();
            removeMenuItem.Text = "Remove";
            removeMenuItem.Tag = chart;
            removeMenuItem.Click += new EventHandler(removeMenuItem_Click);

            cm.MenuItems.Add(removeMenuItem);

           
            foreach (Connection c in chart.Connections) // para cada conexion del elemento
            {
                MenuItem item = new MenuItem(); // se crea un nuevo MenuItem.
                item.Text ="Connect "+ c.Label; // el texto del menu es la etiqueta de la conexion.
                item.Tag = c; // se almacena la conexion como un objeto asociado al MenuItem.
                item.Click += item_Click; // se determina que accion se ejecuta para el click del MenuItem.
                cm.MenuItems.Add(item); // se agrega el menu item a los menuItems del menu contextual.
            }

            MenuItem sep = new MenuItem ();
            sep.Text = "-";

            cm.MenuItems.Add(sep);

              return cm;
        }