コード例 #1
0
        private void AddNode(CsgNode node)
        {
            if (root == null)
            {
                return;
            }
            CsgNodeWrapper      wrapper  = root.Node.Repository.GetWrapper(node);
            CsgNodeTreeViewItem item     = nodeView.SelectedItem as CsgNodeTreeViewItem;
            CsgGroupWrapper     selected = null;

            while (item != null)
            {
                selected = item.Node as CsgGroupWrapper;
                if (selected != null)
                {
                    break;
                }
                item = item.Parent as CsgNodeTreeViewItem;
            }
            if (selected == null)
            {
                selected = root.Node as CsgGroupWrapper;
            }
            if (selected != null)
            {
                selected.AddChild(wrapper);
            }
        }
コード例 #2
0
        private void RunClick(object sender, RoutedEventArgs e)
        {
            CsgGroupWrapper node = SelectedItem;

            if (node != null)
            {
                new PhysicsDocument(owner, node);
            }
        }
コード例 #3
0
 public CsgGroupTreeViewItem(ObjectTreeView owner, CsgGroupWrapper group, bool expand = true)
     : base(owner, group)
 {
     this.group = group;
     RefreshChildren();
     group.PropertyChanged += NodePropertyChanged;
     IsExpanded             = expand;
     AllowDrop              = true;
 }
コード例 #4
0
        private void RunExecuted(object sender, ExecutedRoutedEventArgs e)
        {
            CsgGroupWrapper node = objectList.SelectedItem as CsgGroupWrapper;

            if (node != null)
            {
                new PhysicsDocument(this, node);
            }
        }
コード例 #5
0
 private void LoadObject(CsgGroupWrapper node)
 {
     nodeView.Items.Clear();
     this.root = null;
     if (node != null)
     {
         nodeView.Items.Add((this.root = new CsgGroupTreeViewItem(this, node)));
         this.root.IsSelected = true;
     }
 }
コード例 #6
0
 public ObjectDocument(LibraryView owner, CsgGroupWrapper node)
 {
     Content = view = new ObjectView()
     {
         Node = node, Owner = owner
     };
     BindingOperations.SetBinding(this, TitleProperty,
                                  new Binding("Name")
     {
         Source = node, Mode = BindingMode.OneWay
     });
     if (owner != null)
     {
         owner.RegisterOpenDocument(this);
     }
 }
コード例 #7
0
 public PhysicsDocument(LibraryView owner, CsgGroupWrapper node)
 {
     Content = view = new PhysicsView3D()
     {
         SelectedItem = node
     };
     BindingOperations.SetBinding(this, TitleProperty,
                                  new Binding("Name")
     {
         Source = node, Mode = BindingMode.OneWay
     });
     if (owner != null)
     {
         owner.RegisterOpenDocument(this);
     }
     Closed += (s, e) => { view.Stop(); };
 }
コード例 #8
0
 protected override void OnDrop(DragEventArgs e)
 {
     string[] ids = (e.Data.GetData(DataFormats.Text) as string ?? string.Empty).Split('|');
     e.Handled = true;
     if (ids.Length == 2)
     {
         CsgNodeWrapper wrapper = Node.Repository.GetWrapperById(ids[0]);
         if (e.Effects == DragDropEffects.Move)
         {
             CsgGroupWrapper parent = Node.Repository.GetWrapperById(ids[1]) as CsgGroupWrapper;
             if (wrapper != null && parent != null)
             {
                 CsgNodeTreeViewItem item = this;
                 while (item != null)
                 {
                     if (item.Node == wrapper)
                     {
                         return;
                     }
                     item = item.Parent as CsgNodeTreeViewItem;
                 }
                 if (parent.RemoveChild(wrapper))
                 {
                     if (!Group.AddChild(wrapper))
                     {
                         parent.AddChild(wrapper);
                     }
                 }
                 IsSelected = true;
             }
         }
         else if (e.Effects == DragDropEffects.Link)
         {
             if (wrapper != null)
             {
                 Group.AddChild(wrapper);
                 IsSelected = true;
             }
         }
     }
     base.OnDrop(e);
 }
コード例 #9
0
 private void RecursiveDelete(CsgGroupWrapper group)
 {
     if (group == null)
     {
         return;
     }
     if (group.ReferenceCount > 0)
     {
         return;
     }
     if (group.IsObjectRoot)
     {
         return;
     }
     group.Repository.RemoveNode(group);
     foreach (var item in group.Children.ToArray())
     {
         group.RemoveChild(item);
         RecursiveDelete(item as CsgGroupWrapper);
     }
 }
コード例 #10
0
        private void ShowItem(object sender, RoutedEventArgs e)
        {
            CsgGroupWrapper selected = objectList.SelectedItem as CsgGroupWrapper;

            if (selected != null)
            {
                ObjectDocument doc;
                foreach (LayoutDocument o in openDocuments)
                {
                    doc = o as ObjectDocument;
                    if (doc == null)
                    {
                        continue;
                    }
                    if (doc.Node == selected)
                    {
                        if (!doc.IsFloating && !ObjectDocumentPane.Children.Contains(o))
                        {
                            ObjectDocumentPane.Children.Add(o);
                        }
                        doc.IsActive = true;
                        if (doc.Content is UIElement)
                        {
                            ((UIElement)doc.Content).Focus();
                        }
                        return;
                    }
                }
                doc          = new ObjectDocument(this, selected);
                doc.IsActive = true;
                if (doc.Content is UIElement)
                {
                    ((UIElement)doc.Content).Focus();
                }
            }
        }