public void Goto(ITabularNamedObject obj) { var node = UI.TreeView.FindNodeByTag(obj); if (node == null) { TreeModel.BeginUpdate(); TreeModel.Options = TreeModel.Options | LogicalTreeOptions.ShowHidden | LogicalTreeOptions.AllObjectTypes | LogicalTreeOptions.Columns | LogicalTreeOptions.Measures | LogicalTreeOptions.Hierarchies; InternalApplyFilter(""); UI.FormMain.UpdateTreeUIButtons(); TreeModel.EndUpdate(); node = UI.TreeView.FindNodeByTag(obj); } if (node != null) { UI.TreeView.EnsureVisible(node); UI.TreeView.SelectedNode = node; UI.FormMain.Activate(); UI.TreeView.Focus(); } }
public void Tree_NavigateBack() { if (!CanNavigateBack) { return; } bool firstUnknown = true; IsNavigating = true; while (Back.Count > 1) { // Transfer current to forward stack: if (firstUnknown) { Forward.Push(Back.Pop()); } else { Back.Pop(); } var nav = Back.Peek(); ApplyFilter(nav.CurrentFilter); if (nav.Object == null || nav.Object.IsRemoved) { continue; } var node = UI.TreeView.FindNodeByTag(nav.Object); if (node == null && firstUnknown) { firstUnknown = false; if (!TreeModel.VisibleInTree(nav.Object)) { TreeModel.BeginUpdate(); TreeModel.Options = LogicalTreeOptions.Default | LogicalTreeOptions.ShowHidden; UI.FormMain.UpdateTreeUIButtons(); TreeModel.EndUpdate(); } node = UI.TreeView.FindNodeByTag(nav.Object); } if (node != null) { UI.TreeView.EnsureVisible(node); UI.TreeView.SelectedNode = node; UI.FormMain.Activate(); UI.TreeView.Focus(); break; } } IsNavigating = false; }