private void RebuildProjectNode(Project project)
        {
            activeProject = project;

            // create the top-level project node
            ProjectNode projectNode = new ProjectNode(project);

            Nodes.Add(projectNode);
            projectNode.Refresh(true);
            projectNode.Expand();

            ArrayList projectClasspaths = new ArrayList();
            ArrayList globalClasspaths  = new ArrayList();

            if (PluginMain.Settings.ShowProjectClasspaths)
            {
                projectClasspaths.AddRange(project.Classpaths);
                if (project.AdditionalPaths != null)
                {
                    projectClasspaths.AddRange(project.AdditionalPaths);
                }
            }

            if (PluginMain.Settings.ShowGlobalClasspaths)
            {
                globalClasspaths.AddRange(PluginMain.Settings.GlobalClasspaths);
            }

            ReferencesNode refs = new ReferencesNode(project.Directory, "References");

            projectNode.References = refs;
            ClasspathNode cpNode;

            foreach (string projectClasspath in projectClasspaths)
            {
                string absolute = projectClasspath;
                if (!Path.IsPathRooted(absolute))
                {
                    absolute = project.GetAbsolutePath(projectClasspath);
                }
                if ((absolute + "\\").StartsWith(project.Directory + "\\"))
                {
                    continue;
                }

                cpNode = new ProjectClasspathNode(project, absolute, projectClasspath);
                refs.Nodes.Add(cpNode);
                cpNode.Refresh(true);
            }

            foreach (string globalClasspath in globalClasspaths)
            {
                string absolute = globalClasspath;
                if (!Path.IsPathRooted(absolute))
                {
                    absolute = project.GetAbsolutePath(globalClasspath);
                }
                if (absolute.StartsWith(project.Directory + Path.DirectorySeparatorChar.ToString()))
                {
                    continue;
                }

                cpNode = new ClasspathNode(project, absolute, globalClasspath);
                refs.Nodes.Add(cpNode);
                cpNode.Refresh(true);
            }

            // add external libraries at the top level also
            if (project is AS3Project)
            {
                foreach (LibraryAsset asset in (project as AS3Project).SwcLibraries)
                {
                    if (!asset.IsSwc)
                    {
                        continue;
                    }
                    // check if SWC is inside the project or inside a classpath
                    string absolute = asset.Path;
                    if (!Path.IsPathRooted(absolute))
                    {
                        absolute = project.GetAbsolutePath(asset.Path);
                    }

                    bool showNode = true;
                    if (absolute.StartsWith(project.Directory))
                    {
                        showNode = false;
                    }
                    foreach (string path in project.AbsoluteClasspaths)
                    {
                        if (absolute.StartsWith(path))
                        {
                            showNode = false;
                            break;
                        }
                    }
                    foreach (string path in PluginMain.Settings.GlobalClasspaths)
                    {
                        if (absolute.StartsWith(path))
                        {
                            showNode = false;
                            break;
                        }
                    }

                    if (showNode && File.Exists(absolute))
                    {
                        SwfFileNode swcNode = new SwfFileNode(absolute);
                        refs.Nodes.Add(swcNode);
                        swcNode.Refresh(true);
                    }
                }
            }
        }
		/// <summary>
		/// Rebuilds the tree from scratch.
		/// </summary>
		public void RebuildTree(bool saveState, bool restoreExpanded)
		{
			// store old tree state
            List<string> previouslyExpanded = restoreExpanded ? ExpandedPaths : new List<string>();
			
			foreach (GenericNode node in Nodes)
				node.Dispose();

			BeginUpdate();

			SelectedNodes = null;
			Nodes.Clear();
			nodeMap.Clear();
			ShowRootLines = false;
			
			if (project == null)
			{
				EndUpdate();
				return;
			}

			// create the top-level project node
			ProjectNode projectNode = new ProjectNode(project);
			Nodes.Add(projectNode);
			projectNode.Refresh(true);
			projectNode.Expand();

            ArrayList projectClasspaths = new ArrayList();
            ArrayList globalClasspaths = new ArrayList();

            if (PluginMain.Settings.ShowProjectClasspaths)
                projectClasspaths.AddRange(project.Classpaths);

			if (PluginMain.Settings.ShowGlobalClasspaths)
                globalClasspaths.AddRange(PluginMain.Settings.GlobalClasspaths);

            ClasspathNode cpNode;

            foreach (string projectClasspath in projectClasspaths)
            {
                string absolute = projectClasspath;
                if (!Path.IsPathRooted(absolute))
                    absolute = project.GetAbsolutePath(projectClasspath);
                if ((absolute + "\\").StartsWith(project.Directory + "\\"))
                    continue;

                cpNode = new ProjectClasspathNode(project, absolute, projectClasspath);
                Nodes.Add(cpNode);
                cpNode.Refresh(true);
                ShowRootLines = true;
            }

            foreach (string globalClasspath in globalClasspaths)
            {
                string absolute = globalClasspath;
                if (!Path.IsPathRooted(absolute))
                    absolute = project.GetAbsolutePath(globalClasspath);
                if (absolute.StartsWith(project.Directory + Path.DirectorySeparatorChar.ToString()))
                    continue;

                cpNode = new ClasspathNode(project, absolute, globalClasspath);
                Nodes.Add(cpNode);
                cpNode.Refresh(true);
                ShowRootLines = true;
            }


            // add external libraries at the top level also
            if (project is AS3Project)
            foreach (LibraryAsset asset in (project as AS3Project).SwcLibraries)
            {
                if (!asset.IsSwc) continue;
                // check if SWC is inside the project or inside a classpath
                string absolute = asset.Path;
                if (!Path.IsPathRooted(absolute))
                    absolute = project.GetAbsolutePath(asset.Path);

                bool showNode = true;
                if (absolute.StartsWith(project.Directory))
                    showNode = false;
                foreach (string path in project.AbsoluteClasspaths)
                    if (absolute.StartsWith(path))
                    {
                        showNode = false;
                        break;
                    }
                foreach (string path in PluginMain.Settings.GlobalClasspaths)
                    if (absolute.StartsWith(path))
                    {
                        showNode = false;
                        break;
                    }

                if (showNode && File.Exists(absolute))
                {
                    SwfFileNode swcNode = new SwfFileNode(absolute);
                    Nodes.Add(swcNode);
                    swcNode.Refresh(true);
                    ShowRootLines = true;
                }
            }

			// restore tree state
			ExpandedPaths = previouslyExpanded;

			// scroll to the top
			projectNode.EnsureVisible();
			SelectedNode = projectNode;
			Win32.Scrolling.scrollToLeft(this);

			EndUpdate();
		}
        private void RebuildProjectNode(Project project)
        {
            activeProject = project;

            // create the top-level project node
            ProjectNode projectNode = new ProjectNode(project);
            Nodes.Add(projectNode);
            projectNode.Refresh(true);
            projectNode.Expand();

            ArrayList projectClasspaths = new ArrayList();
            ArrayList globalClasspaths = new ArrayList();

            if (PluginMain.Settings.ShowProjectClasspaths)
            {
                projectClasspaths.AddRange(project.Classpaths);
                if (project.AdditionalPaths != null) projectClasspaths.AddRange(project.AdditionalPaths);
            }

            if (PluginMain.Settings.ShowGlobalClasspaths)
                globalClasspaths.AddRange(PluginMain.Settings.GlobalClasspaths);

            ReferencesNode refs = new ReferencesNode(project.Directory, "References");
            projectNode.References = refs;
            ClasspathNode cpNode;

            foreach (string projectClasspath in projectClasspaths)
            {
                string absolute = projectClasspath;
                if (!Path.IsPathRooted(absolute))
                    absolute = project.GetAbsolutePath(projectClasspath);
                if ((absolute + "\\").StartsWith(project.Directory + "\\"))
                    continue;

                cpNode = new ProjectClasspathNode(project, absolute, projectClasspath);
                refs.Nodes.Add(cpNode);
                cpNode.Refresh(true);
            }

            foreach (string globalClasspath in globalClasspaths)
            {
                string absolute = globalClasspath;
                if (!Path.IsPathRooted(absolute))
                    absolute = project.GetAbsolutePath(globalClasspath);
                if (absolute.StartsWith(project.Directory + Path.DirectorySeparatorChar.ToString()))
                    continue;

                cpNode = new ClasspathNode(project, absolute, globalClasspath);
                refs.Nodes.Add(cpNode);
                cpNode.Refresh(true);
            }

            // add external libraries at the top level also
            if (project is AS3Project)
                foreach (LibraryAsset asset in (project as AS3Project).SwcLibraries)
                {
                    if (!asset.IsSwc) continue;
                    // check if SWC is inside the project or inside a classpath
                    string absolute = asset.Path;
                    if (!Path.IsPathRooted(absolute))
                        absolute = project.GetAbsolutePath(asset.Path);

                    bool showNode = true;
                    if (absolute.StartsWith(project.Directory))
                        showNode = false;
                    foreach (string path in project.AbsoluteClasspaths)
                        if (absolute.StartsWith(path))
                        {
                            showNode = false;
                            break;
                        }
                    foreach (string path in PluginMain.Settings.GlobalClasspaths)
                        if (absolute.StartsWith(path))
                        {
                            showNode = false;
                            break;
                        }

                    if (showNode && File.Exists(absolute))
                    {
                        SwfFileNode swcNode = new SwfFileNode(absolute);
                        refs.Nodes.Add(swcNode);
                        swcNode.Refresh(true);
                    }
                }
        }
Exemple #4
0
        /// <summary>
        /// Rebuilds the tree from scratch.
        /// </summary>
        public void RebuildTree(bool saveState, bool restoreExpanded)
        {
            // store old tree state
            List <string> previouslyExpanded = restoreExpanded ? ExpandedPaths : new List <string>();

            foreach (GenericNode node in Nodes)
            {
                node.Dispose();
            }

            BeginUpdate();

            SelectedNodes = null;
            Nodes.Clear();
            nodeMap.Clear();
            ShowRootLines = false;

            if (project == null)
            {
                EndUpdate();
                return;
            }

            // create the top-level project node
            ProjectNode projectNode = new ProjectNode(project);

            Nodes.Add(projectNode);
            projectNode.Refresh(true);
            projectNode.Expand();

            ArrayList projectClasspaths = new ArrayList();
            ArrayList globalClasspaths  = new ArrayList();

            if (PluginMain.Settings.ShowProjectClasspaths)
            {
                projectClasspaths.AddRange(project.Classpaths);
            }

            if (PluginMain.Settings.ShowGlobalClasspaths)
            {
                globalClasspaths.AddRange(PluginMain.Settings.GlobalClasspaths);
            }

            ClasspathNode cpNode;

            foreach (string projectClasspath in projectClasspaths)
            {
                string absolute = projectClasspath;
                if (!Path.IsPathRooted(absolute))
                {
                    absolute = project.GetAbsolutePath(projectClasspath);
                }
                if ((absolute + "\\").StartsWith(project.Directory + "\\"))
                {
                    continue;
                }

                cpNode = new ProjectClasspathNode(project, absolute, projectClasspath);
                Nodes.Add(cpNode);
                cpNode.Refresh(true);
                ShowRootLines = true;
            }

            foreach (string globalClasspath in globalClasspaths)
            {
                string absolute = globalClasspath;
                if (!Path.IsPathRooted(absolute))
                {
                    absolute = project.GetAbsolutePath(globalClasspath);
                }
                if (absolute.StartsWith(project.Directory + Path.DirectorySeparatorChar.ToString()))
                {
                    continue;
                }

                cpNode = new ClasspathNode(project, absolute, globalClasspath);
                Nodes.Add(cpNode);
                cpNode.Refresh(true);
                ShowRootLines = true;
            }


            // add external libraries at the top level also
            if (project is AS3Project)
            {
                foreach (LibraryAsset asset in (project as AS3Project).SwcLibraries)
                {
                    if (!asset.IsSwc)
                    {
                        continue;
                    }
                    // check if SWC is inside the project or inside a classpath
                    string absolute = asset.Path;
                    if (!Path.IsPathRooted(absolute))
                    {
                        absolute = project.GetAbsolutePath(asset.Path);
                    }

                    bool showNode = true;
                    if (absolute.StartsWith(project.Directory))
                    {
                        showNode = false;
                    }
                    foreach (string path in project.AbsoluteClasspaths)
                    {
                        if (absolute.StartsWith(path))
                        {
                            showNode = false;
                            break;
                        }
                    }
                    foreach (string path in PluginMain.Settings.GlobalClasspaths)
                    {
                        if (absolute.StartsWith(path))
                        {
                            showNode = false;
                            break;
                        }
                    }

                    if (showNode && File.Exists(absolute))
                    {
                        SwfFileNode swcNode = new SwfFileNode(absolute);
                        Nodes.Add(swcNode);
                        swcNode.Refresh(true);
                        ShowRootLines = true;
                    }
                }
            }

            // restore tree state
            ExpandedPaths = previouslyExpanded;

            // scroll to the top
            projectNode.EnsureVisible();
            SelectedNode = projectNode;
            Win32.Scrolling.scrollToLeft(this);

            EndUpdate();
        }