Example #1
0
        private void DisplayClasses(IEnumerable <TagDatum> references, bool loadTags = false)
        {
            var lookup = new Dictionary <TagClass, TreeNode>( );

            foreach (var reference in references)
            {
                var path     = reference.Path;
                var tagClass = reference.Class;
                var @class   = ( string )tagClass;

                // Don't process empty classes
                if (tagClass == TagClass.Empty)
                {
                    continue;
                }

                if (!lookup.ContainsKey(tagClass))
                {
                    lookup.Add(tagClass, new ScenarioView.DirectoryNode(@class, @class));
                }

                if (!loadTags)
                {
                    continue;
                }

                var node = new ScenarioView.GuerillaBlockReferenceNode(path, path, reference);
                lookup[tagClass].Nodes.Add(node);
            }
            BeginUpdate(  );
            Nodes.Clear( );
            Nodes.AddRange(lookup.Values.ToArray( ));
            EndUpdate(  );
        }
Example #2
0
        private void DisplayHierarchical(IEnumerable <TagDatum> references, bool loadTags = false)
        {
            BeginUpdate();
            Nodes.Clear( );

            foreach (var reference in references)
            {
                var path        = reference.Path;
                var directories = path.Split(new[] { @"\" }, StringSplitOptions.RemoveEmptyEntries);
                var length      = path.IndexOf('\\');

                // Don't process empty arrays
                if (directories.Length <= 0)
                {
                    continue;
                }

                var collection = Nodes;

                // Loop through all elements of array except the last one
                var lastElementIndex = directories.Length - 1;
                for (var index = 0; index < lastElementIndex; index++)
                {
                    var dir           = directories[index];
                    var fullDirectory = path.Substring(0, length);
                    var directoryNode = new ScenarioView.DirectoryNode(dir, fullDirectory);
                    if (!collection.ContainsKey(directoryNode.Name))
                    {
                        collection.Add(directoryNode);
                    }
                    collection = collection[directoryNode.Name].Nodes;

                    var indexOf = path.IndexOf('\\', length + 1);
                    length = indexOf < 0 ? path.Length : indexOf;
                }
                if (!loadTags)
                {
                    continue;
                }

                // Do special work on the last element:
                var text = directories[lastElementIndex];
                var guerillaBlockNode = new ScenarioView.GuerillaBlockReferenceNode(path, text, reference);
                if (!collection.ContainsKey(guerillaBlockNode.Name))
                {
                    collection.Add(guerillaBlockNode);
                }
            }
            SelectedNode = Nodes.Count > 0 ? Nodes[0] : null;
            SelectedNode?.Expand( );
            EndUpdate();
        }