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); } }
private void RunClick(object sender, RoutedEventArgs e) { CsgGroupWrapper node = SelectedItem; if (node != null) { new PhysicsDocument(owner, node); } }
public CsgGroupTreeViewItem(ObjectTreeView owner, CsgGroupWrapper group, bool expand = true) : base(owner, group) { this.group = group; RefreshChildren(); group.PropertyChanged += NodePropertyChanged; IsExpanded = expand; AllowDrop = true; }
private void RunExecuted(object sender, ExecutedRoutedEventArgs e) { CsgGroupWrapper node = objectList.SelectedItem as CsgGroupWrapper; if (node != null) { new PhysicsDocument(this, node); } }
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; } }
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); } }
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(); }; }
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); }
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); } }
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(); } } }