Beispiel #1
0
        private imTreeNode CreateAssetNode(string text)
        {
            imTreeNode assetNode = new imTreeNode("{All}" + text, "asset");

            assetNode.Nodes.Add(CreateFileNode(text));
            return(assetNode);
        }
Beispiel #2
0
        private imTreeNode CreateAssetNode(imTreeNode originalNode)
        {
            imTreeNode assetNode = new imTreeNode("{All}" + originalNode.Text, "asset");

            assetNode.Nodes.Add(CreateFileNode(originalNode));
            return(assetNode);
        }
Beispiel #3
0
        private ArrayList GetUniqueClassRoots(ArrayList nodes)
        {
            ArrayList uniqueRoots = new ArrayList();

            if (nodes == null)
            {
                return(uniqueRoots);
            }

            foreach (imTreeNode tn in nodes)
            {
                imTreeNode root = tn;
                while (root.Parent != null && nodes.Contains(root.Parent))
                {
                    root = root.Parent as imTreeNode;
                }

                if (!uniqueRoots.Contains(root))
                {
                    uniqueRoots.Add(root);
                }
            }

            return(uniqueRoots);
        }
Beispiel #4
0
        private void tvTree_DoubleClick(object sender, System.EventArgs e)
        {
            imTreeNode clickedNode = this.tvTree.GetNodeAt(this.tvTree.PointToClient(Cursor.Position)) as imTreeNode;

            if (clickedNode != null && clickedNode.IsDirectory)
            {
                LoadTree(this.loadedDir + "\\" + clickedNode.Text);
            }
        }
Beispiel #5
0
        public void LoadProjectClasses(MOG_Project proj)
        {
            this.tvClasses.Nodes.Clear();

            foreach (string rootClassName in proj.GetRootClassificationNames())
            {
                imTreeNode rootNode = LoadProjectClasses_Helper(proj, rootClassName);
                this.tvClasses.Nodes.Add(rootNode);
                rootNode.Expand();
            }
        }
Beispiel #6
0
        private void InsertDirTreeAsClassTree(imTreeNode targetNode, imTreeNode draggedNode)
        {
            if (targetNode == null || draggedNode == null)
            {
                return;
            }

            imTreeNode classNode = CloneDirTreeAsClassTree(draggedNode);

            targetNode.Nodes.Add(classNode);
            targetNode.Expand();
        }
Beispiel #7
0
        private void tvTree_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
        {
            imTreeNode tn = e.Node as imTreeNode;

            if (tn != null)
            {
                if (tn.IsDirectory && !tn.Populated)
                {
                    PopulateDiskNode_Shallow(tn);
                }
            }
        }
Beispiel #8
0
 private void PopulateDiskNode_Shallow(imTreeNode tn)
 {
     if (!tn.Populated)
     {
         tn.Nodes.Clear();                               // kill dummy node
         foreach (imTreeNode subNode in LoadTree_Helper(tn.Path))
         {
             tn.Nodes.Add(subNode);
         }
         tn.Populated = true;
     }
 }
Beispiel #9
0
        private void PopulateDiskNode_Complete(imTreeNode tn)
        {
            if (!tn.Populated)
            {
                PopulateDiskNode_Shallow(tn);
            }

            foreach (imTreeNode subNode in tn.Nodes)
            {
                if (subNode.IsDirectory)
                {
                    PopulateDiskNode_Complete(subNode);
                }
            }
        }
Beispiel #10
0
        private void tvClasses_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
        {
            imTreeNode targetNode = this.tvClasses.GetNodeAt(this.tvClasses.PointToClient(new Point(e.X, e.Y))) as imTreeNode;

            if (targetNode == null)
            {
                e.Effect = DragDropEffects.None;
                this.tvClasses.SelectedNodes.Clear();
            }
            else
            {
                e.Effect = e.AllowedEffect;
                this.tvClasses.SelectedNodes.Clear();
                this.tvClasses.SelectedNodes.Add(targetNode);
            }
        }
Beispiel #11
0
        private void InsertPathAsClassTree(imTreeNode targetNode, string path)
        {
            imTreeNode classNode = CreateClassNode(Path.GetFileName(path));

            foreach (string subdirpath in Directory.GetDirectories(path))
            {
                InsertPathAsClassTree(classNode, subdirpath);
            }

            foreach (string filename in Directory.GetFiles(path))
            {
                imTreeNode fileNode = CreateAssetNode(Path.GetFileName(filename));
                classNode.Nodes.Add(fileNode);
            }

            targetNode.Nodes.Add(classNode);
        }
Beispiel #12
0
        private imTreeNode CloneDirTreeAsClassTree(imTreeNode dirNode)
        {
            imTreeNode classNode = CreateClassNode(dirNode);

            foreach (imTreeNode subNode in dirNode.Nodes)
            {
                if (subNode.IsFile)
                {
                    classNode.Nodes.Add(CreateAssetNode(subNode));
                }
                else if (subNode.IsDirectory)
                {
                    classNode.Nodes.Add(CloneDirTreeAsClassTree(subNode));
                }
            }

            return(classNode);
        }
Beispiel #13
0
        private void InsertPathList(ArrayList paths, imTreeNode targetNode)
        {
            foreach (string path in paths)
            {
                if (Directory.Exists(path))
                {
                    // path is a directory, create classification
                    InsertPathAsClassTree(targetNode, path);
                }
                else if (File.Exists(path))
                {
                    // path is a file, create asset
                    targetNode.Nodes.Add(CreateAssetNode(Path.GetFileName(path)));
                }
            }

            targetNode.Expand();
        }
Beispiel #14
0
        private imTreeNode LoadProjectClasses_Helper(MOG_Project proj, string baseClass)
        {
            string baseClassName = baseClass;

            if (baseClassName.IndexOf("~") != -1)
            {
                baseClassName = baseClass.Substring(baseClass.LastIndexOf("~") + 1);
            }

            imTreeNode node = new imTreeNode(baseClassName, "class");

            foreach (string className in proj.GetSubClassificationNames(baseClass))
            {
                node.Nodes.Add(LoadProjectClasses_Helper(proj, baseClass + "~" + className));
            }

            return(node);
        }
Beispiel #15
0
        private void tvClasses_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
        {
            imTreeNode targetNode = this.tvClasses.GetNodeAt(this.tvClasses.PointToClient(new Point(e.X, e.Y))) as imTreeNode;

            if (targetNode == null)
            {
                return;
            }

            if (e.Data.GetDataPresent(typeof(ArrayList)))
            {
                ArrayList nodes = (ArrayList)e.Data.GetData(typeof(ArrayList));
                nodes = GetUniqueClassRoots(nodes);

                InsertNodeList(nodes, targetNode);
            }
            else if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] files = (string[])e.Data.GetData("FileDrop", false);
                InsertPathList(GetUniquePathRoots(new ArrayList(files)), targetNode);
            }
        }
Beispiel #16
0
        private ArrayList LoadTree_Helper(string path)
        {
            ArrayList nodes = new ArrayList();

            if (!Directory.Exists(path))
            {
                return(nodes);
            }

            foreach (string dirname in Directory.GetDirectories(path))
            {
                imTreeNode dirNode = new imTreeNode(Path.GetFileName(dirname), "dir");
                dirNode.Path = dirname;

                try
                {
                    if (Directory.GetDirectories(dirname).Length > 0 || Directory.GetFiles(dirname).Length > 0)
                    {
                        dirNode.Nodes.Add(new imTreeNode("DUMMYNODE", "dummy"));
                    }
                }
                catch
                {
                    dirNode.WindowsProtected = true;
                    dirNode.ForeColor        = Color.Red;
                }

                nodes.Add(dirNode);
            }

            foreach (string filename in Directory.GetFiles(path))
            {
                imTreeNode fileNode = new imTreeNode(Path.GetFileName(filename), "file");
                fileNode.Path = filename;
                nodes.Add(fileNode);
            }

            return(nodes);
        }
Beispiel #17
0
        private void InsertNodeList(ArrayList nodes, imTreeNode targetNode)
        {
            foreach (imTreeNode draggedNode in nodes)
            {
                if (draggedNode.WindowsProtected)
                {
                    continue;                                   // skip windows-protected stuff
                }
                // make sure the node is fully populated (i.e., no dummy nodes)
                PopulateDiskNode_Complete(draggedNode);

                if (draggedNode.IsDirectory)
                {
                    // create classification
                    InsertDirTreeAsClassTree(targetNode, draggedNode);
                }
                else if (draggedNode.IsFile)
                {
                    // create asset
                    targetNode.Nodes.Add(CreateAssetNode(draggedNode));
                    targetNode.Expand();
                }
            }
        }
Beispiel #18
0
        private imTreeNode CreateClassNode(string text)
        {
            imTreeNode classNode = new imTreeNode(text, "class");

            return(classNode);
        }
Beispiel #19
0
        private imTreeNode CreateClassNode(imTreeNode originalNode)
        {
            imTreeNode classNode = new imTreeNode(originalNode.Text, "class");

            return(classNode);
        }
Beispiel #20
0
        private imTreeNode CreateFileNode(string text)
        {
            imTreeNode fileNode = new imTreeNode(text, "subasset");

            return(fileNode);
        }
Beispiel #21
0
        private imTreeNode CreateFileNode(imTreeNode originalNode)
        {
            imTreeNode fileNode = new imTreeNode(originalNode.Text, "subasset");

            return(fileNode);
        }