Ejemplo n.º 1
0
        void RefreshRadius(DesignLink link, List <DesignLink> linkList)
        {
            var s = ItemList.FirstOrDefault(v => v.DesignItemID == link.SourceDesignItemID);
            var t = ItemList.FirstOrDefault(v => v.DesignItemID == link.TargetDesignItemID);

            if (s == null || t == null)
            {
                throw new Exception("Can not find valid design item, source id is " + link.SourceDesignItemID.ToString() + ", target id is " + link.TargetDesignItemID.ToString());
            }
            var l = LinkList.Where(v => v.SourceDesignItemID == link.SourceDesignItemID &&
                                   v.TargetDesignItemID == link.TargetDesignItemID &&
                                   v.TargetPosition == link.TargetPosition && v.SourcePosition == link.SourcePosition &&
                                   link != v && !linkList.Contains(v)).ToList();

            if (l.Count > 0)
            {
                l.ForEach(tl =>
                {
                    tl.RadiusRadio        = 0;
                    tl.LineSweepDirection = Windows.UI.Xaml.Media.SweepDirection.Clockwise;
                });
                l.ForEach(tl => tl.SetCurveRadius(s, t));
                linkList.AddRange(l);
            }
        }
Ejemplo n.º 2
0
        void Connecting(PointerRoutedEventArgs e)
        {
            if (TargetCanvas == null)
            {
                return;
            }
            if (CurrentLink == null)
            {
                CurrentLink = new DesignLink()
                {
                    SourceX = GetCenter().X,
                    SourceY = GetCenter().Y,
                    TargetX = e.GetCurrentPoint(TargetCanvas).Position.X,
                    TargetY = e.GetCurrentPoint(TargetCanvas).Position.Y
                };
                CurrentLink.SourcePoint = ConnectionControl;
                if (IsBottom)
                {
                    CurrentLink.SourcePosition = RelativePosition.Bottom;
                }
                if (IsLeft)
                {
                    CurrentLink.SourcePosition = RelativePosition.Left;
                }
                if (IsTop)
                {
                    CurrentLink.SourcePosition = RelativePosition.Top;
                }
                if (IsRight)
                {
                    CurrentLink.SourcePosition = RelativePosition.Right;
                }
            }
            //if (CurrentLink.LinkLine == null)
            //{
            //    CurrentLink.SetLinkLine(PointX, PointY, e.GetCurrentPoint(TargetCanvas).Position.X, e.GetCurrentPoint(TargetCanvas).Position.Y);

            //}
            //CurrentLink.SourceX = PointX;
            //CurrentLink.SourceY = PointY;

            CurrentLink.TargetX = e.GetCurrentPoint(TargetCanvas).Position.X;
            CurrentLink.TargetY = e.GetCurrentPoint(TargetCanvas).Position.Y;


            if (!TargetCanvas.Children.Contains(CurrentLink.LinkLine))
            {
                TargetCanvas.Children.Add(CurrentLink.LinkLine);
            }
        }
Ejemplo n.º 3
0
        void OutControl_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
        {
            if (TargetCanvas == null)
            {
                return;
            }

            PointX      = e.GetCurrentPoint(TargetCanvas).Position.X;
            PointY      = e.GetCurrentPoint(TargetCanvas).Position.Y;
            CurrentLink = null;
            TargetCanvas.PointerMoved    += TargetCanvas_PointerMoved;
            TargetCanvas.PointerReleased += TargetCanvas_PointerReleased;
            IsConnecting      = true;
            CurrentConnection = this;
            //CurrentOutControl = sender as FrameworkElement;
            e.Handled = true;
            //System.Windows.DragDrop.DoDragDrop(OutControl, OutControl, DragDropEffects.Copy);
        }
Ejemplo n.º 4
0
 public void TargetCanvas_PointerReleased(object sender, PointerRoutedEventArgs e)
 {
     if (TargetCanvas == null)
     {
         return;
     }
     Silent();
     if (IsConnecting)
     {
         IsConnecting = false;
         if (CurrentLink != null && TargetCanvas.Children.Contains(CurrentLink.LinkLine))
         {
             TargetCanvas.Children.Remove(CurrentLink.LinkLine); //can not need add a connection
         }
     }
     CurrentLink       = null;
     CurrentConnection = null;
     e.Handled         = true;
 }
Ejemplo n.º 5
0
        public void DeleteLink(DesignLink link)
        {
            if (LinkList.Contains(link))
            {
                LinkList.Remove(link);
            }
            ItemList.ForEach(v =>
            {
                if (v.InLinkList.Contains(link))
                {
                    v.InLinkList.Remove(link);
                }
                if (v.OutLinkList.Contains(link))
                {
                    v.OutLinkList.Remove(link);
                }
            });
            var s = ItemList.FirstOrDefault(v => v.DesignItemID == link.SourceDesignItemID);
            var t = ItemList.FirstOrDefault(v => v.DesignItemID == link.TargetDesignItemID);

            if (s == null || t == null)
            {
                return;
            }
            var l = LinkList.Where(v => v.SourceDesignItemID == link.SourceDesignItemID &&
                                   v.TargetDesignItemID == link.TargetDesignItemID &&
                                   v.TargetPosition == link.TargetPosition && v.SourcePosition == link.SourcePosition &&
                                   link != v).ToList();

            if (l.Count > 0)
            {
                l.ForEach(tl =>
                {
                    tl.RadiusRadio        = 0;
                    tl.LineSweepDirection = Windows.UI.Xaml.Media.SweepDirection.Clockwise;
                });
                l.ForEach(tl => tl.SetCurveRadius(s, t));
            }
        }
Ejemplo n.º 6
0
        void Connect(Tuple <Guid, Guid, object> link)
        {
            var s = GetItemByID(link.Item1);

            if (s == null)
            {
                return;
            }
            var t = GetItemByID(link.Item2);

            if (t == null)
            {
                return;
            }
            var si          = s.DataContext as DesignItem;
            var ti          = t.DataContext as DesignItem;
            var p           = DesignManager.GetLinkConnection(s.DataContext as DesignItem, t.DataContext as DesignItem);
            var sp          = DesignManager.GetPoint(si, p.Item1);
            var tp          = DesignManager.GetPoint(ti, p.Item2);
            var sc          = getConnectionControl(s, p.Item1);
            var tc          = getConnectionControl(t, p.Item2);
            var CurrentLink = new DesignLink()
            {
                SourceX      = sp.X,
                SourceY      = sp.Y,
                TargetX      = tp.X,
                TargetY      = tp.Y,
                TargetObject = link.Item3
            };

            CurrentLink.SourcePoint = sc.TargetControl;
            CurrentLink.TargetPoint = tc.TargetControl;
            si.OutLinkList.Add(CurrentLink);
            ti.InLinkList.Add(CurrentLink);

            Draw(CurrentLink.LinkLine);
        }
Ejemplo n.º 7
0
 public override void LoadInfo()
 {
     TargetDesignCanvasViewModel.ItemList.Clear();
     TargetDesignCanvasViewModel.LinkList.Clear();
     TargetObject.NodeList.ForEach(v =>
     {
         var item = new DesignItem()
         {
             Width          = v.Width,
             Height         = v.Height,
             Left           = v.Left,
             Top            = v.Top,
             ZIndex         = v.ZIndex,
             IconPath       = v.IconPath,
             TargetObjectID = v.TargetObjectID,
             Info           = v.NodeName,
             IsValid        = v.IsValid(MainViewModel.mainViewModel.Target.TargetStory, TargetObject.CurrentTime),
             TargetObject   = MainViewModel.mainViewModel.GetViewModelByID(v.TargetObjectID),
             DesignItemID   = v.DesignObjectID
         };
         if (v.IsIconMode)
         {
             item.ShowMode = DesignItemShowMode.Icon;
         }
         else
         {
             item.ShowMode = DesignItemShowMode.Full;
         }
         TargetDesignCanvasViewModel.ItemList.Add(item);
     });
     TargetObject.ConnectionList.ForEach(v =>
     {
         var link = new DesignLink()
         {
             SourceX            = v.StartLeft,
             SourceY            = v.StartTop,
             TargetX            = v.EndLeft,
             TargetY            = v.EndTop,
             SourceID           = v.StartObjectID,
             TargetID           = v.EndObjectID,
             TargetObjectID     = v.TargetObjectID,
             DesignLinkID       = v.DesignObjectID,
             SourceDesignItemID = v.SourceDesignItemID,
             TargetDesignItemID = v.TargetDesignItemID,
             Text               = v.Memo,
             IsValid            = v.IsValid(MainViewModel.mainViewModel.Target.TargetStory, TargetObject.CurrentTime),
             TargetObject       = MainViewModel.mainViewModel.GetViewModelByID(v.TargetObjectID),
             SourcePosition     = v.LinkLineInfo.SourcePosition,
             TargetPosition     = v.LinkLineInfo.TargetPosition,
             RadiusRadio        = v.LinkLineInfo.RadiusRadio,
             LineSweepDirection = v.LinkLineInfo.LineSweepDirection
         };
         if (v.ConnectionType == ConnectionType.TwoWay)
         {
             link.LinkLine.ArrowVisibility = Visibility.Collapsed;
         }
         TargetDesignCanvasViewModel.LinkList.Add(link);
     });
     TargetDesignCanvasViewModel.Refresh();
     OnPropertyChanged("Height");
     OnPropertyChanged("Width");
     LoadNoteList();
     base.LoadInfo();
 }