Exemplo n.º 1
0
        public override void Update(IActionContext context, ref ActionPresentation presentation)
        {
            base.Update(context, ref presentation);
            bool anyHasThreadHandler = false;

            for (int i = 0; i < context.SelectedResources.Count; i++)
            {
                string resType = context.SelectedResources [i].Type;
                IResourceThreadingHandler threadingHandler = Core.PluginLoader.GetResourceThreadingHandler(resType);
                if (threadingHandler != null)
                {
                    IResource threadRoot = ConversationBuilder.GetConversationRoot(context.SelectedResources [i]);
                    if (threadingHandler.CanExpandThread(threadRoot, ThreadExpandReason.Enumerate))
                    {
                        anyHasThreadHandler = true;
                        break;
                    }
                }
            }

            if (!anyHasThreadHandler)
            {
                if (context.Kind == ActionContextKind.MainMenu)
                {
                    presentation.Enabled = false;
                }
                else
                {
                    presentation.Visible = false;
                }
            }
        }
Exemplo n.º 2
0
        public bool CanExpandThread(IResource res, ThreadExpandReason reason)
        {
            IResourceThreadingHandler handler = GetResourceThreadingHandler(res);

            if (handler != null)
            {
                return(handler.CanExpandThread(res, reason));
            }
            return(false);
        }
Exemplo n.º 3
0
        protected override void AddResourceNodes()
        {
            _conversationNodeMap = new IntHashTable();
            foreach (IResource res in _resourceList.ValidResources)
            {
                ConversationNode node = GetConversationNode(res);
                node.InList = true;
            }

            ArrayList topLevelNodes = ArrayListPool.Alloc();

            try
            {
                foreach (ConversationNode node in _conversationRoots)
                {
                    FillTopLevelNodes(topLevelNodes, node);
                }
                if (_lastComparer != null)
                {
                    topLevelNodes.Sort(new ConversationNodeComparer(_lastComparer));
                }

                foreach (ConversationNode node in topLevelNodes)
                {
                    JetListViewNode lvNode = AddListViewNode(_listView.Nodes, node);
                    if (node.Children != null || _threadingHandler.CanExpandThread(node.Resource, ThreadExpandReason.Expand))
                    {
                        lvNode.HasChildren = true;
                    }
                }
            }
            finally
            {
                ArrayListPool.Dispose(topLevelNodes);
            }

            _listView.ChildrenRequested += HandleChildrenRequested;
            _listView.NodeCollection.NodeExpandChanging += HandleExpandChanging;
        }