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();
            }
        }
Ejemplo n.º 2
0
        public void Goto(ITabularNamedObject obj)
        {
            var node = UI.TreeView.FindNodeByTag(obj);

            if (node == null)
            {
                TreeModel.BeginUpdate();
                var options = TreeModel.Options;

                // Adjust the LogicalTreeOptions based on the object itself. For example, if the object is hidden,
                // make sure the tree displays hidden objects, etc.:
                if ((obj is IHideableObject) && (obj as IHideableObject).IsHidden)
                {
                    options = options | LogicalTreeOptions.ShowHidden;
                }
                if ((obj is Column))
                {
                    options = options | LogicalTreeOptions.Columns;
                }
                else if ((obj is Measure))
                {
                    options = options | LogicalTreeOptions.Measures;
                }
                else if ((obj is Hierarchy))
                {
                    options = options | LogicalTreeOptions.Hierarchies;
                }
                else if ((obj is Table) || (obj is Model)) /* Do nothing */ } {
        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;
        }