Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="control"></param>
        /// <param name="toggle"></param>
        public virtual void SelectLink(NodeEdgeControl control, LinkInfo info, bool toggle)
        {
            if (control == null)
            {
                return;
            }

            object edge = (object)control.Edge;

            if (selected_links_.Contains(info))
            {
                if (toggle)
                {
                    control.Path.SetValue(Selector.IsSelectedProperty, false);

                    selected_links_.Remove(info);
                    link_controls_.Remove(info);
                }
            }
            else
            {
                control.Path.SetValue(Selector.IsSelectedProperty, true);

                selected_links_.Add(info);
                link_controls_.Add(info, control.Path);
            }
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="control"></param>
        public virtual void UnselectLink(NodeEdgeControl control, LinkInfo info)
        {
            if (control == null)
            {
                return;
            }

            object edge = (object)control.Edge;

            control.Path.SetValue(Selector.IsSelectedProperty, false);

            selected_links_.Remove(info);
            link_controls_.Remove(info);
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        protected void OnLinkSelected(object sender, LinkSelectedEventArgs args)
        {
            // Travel up the visual tree to find the edge
            FrameworkElement       element = args.Link;
            NodeEdgeControl        control = element.FindVisualParentOfType <NodeEdgeControl>();
            NodeEdge               edge    = control.Edge as NodeEdge;
            Tuple <object, object> link    = element.DataContext as Tuple <object, object>;

            LinkInfo info = selected_links_.FirstOrDefault(x => (x.Link == link) && (x.Edge == edge));

            if (info == null)
            {
                ClearSelection();
                info = new LinkInfo()
                {
                    Edge = edge, Link = link
                };
                SelectLink(control, info, false);
            }
        }