Пример #1
0
        /*
                private ListViewItem AddNewItemInView(FrameworkElement item, object dataItem)
                {
                    //LvProjects.Items
                    var lvi = new ListViewItem
                    {
                        Content = item,
                        Tag = dataItem
                    };
                    _listViewItems.Add(lvi);
                    return lvi;
                }
        */

        private void ShowCollection()
        {
            _collectionItems.Clear();
            //            LvProjects.Items.Clear();

            foreach (var solution in _projectCollection.Solution)
            {
                var item = new CollectionItem(solution, _projectCollection.Tags);
                _collectionItems.Add(item);
                //var lvi = AddNewItemInView(item, solution);

                item.Remove = () =>
                {
                    _projectCollection.Solution.Remove(solution);
                    _collectionItems.Remove(item);//lvi
                    //LvProjects.Items.Remove(item);
                };

                _existProjects.Add(solution.FullPath.ToLower());
            }
            foreach (var project in _projectCollection.Project)
            {
                var item = new CollectionItem(project, _projectCollection.Tags);
                _collectionItems.Add(item);

                //                var lvi = AddNewItemInView(item, project);

                item.Remove = () =>
                {
                    _projectCollection.Project.Remove(project);
                    _collectionItems.Remove(item);//lvi
                    //LvProjects.Items.Remove(item);
                };

                _existProjects.Add(project.FullPath.ToLower());
            }
        }
Пример #2
0
        private void RemoveItem(CollectionItem ci, bool refresh = true)//ListViewItem
        {
            _collectionItems.Remove(ci);
            //            LvProjects.Items.Remove(lvi);

            var project = ci.Project;
            if (project != null)
            {
                var solution = project as SolutionBase;
                if (solution != null)
                    _projectCollection.Solution.Remove(solution);
                else
                    _projectCollection.Project.Remove(project);
                _existProjects.Remove(project.FullPath.ToLower());

                // Удаляем из дерева
                var folder = ci.Project.Folder;

                if (folder.SubDirs == null || folder.SubDirs.Count == 0)
                {
                    folder.Projects.Remove(ci.Project);

                    // если это последний проект в паке, то удаляем её и все пустые вышестоящие
                    do
                    {
                        if (folder.Parent != null && (folder.Projects == null || folder.Projects.Count == 0)
                            && (folder.SubDirs == null || folder.SubDirs.Count == 0))
                        {
                            folder.Parent.SubDirs.Remove(folder);
                        }
                        folder = folder.Parent;
                    } while (folder != null);
                    RefreshFolders();
                }
            }
            if(refresh)
                RefreshView();
        }
Пример #3
0
        private void OnFileDrop(object sender, RoutedEventArgs e)
        {
            var dfc = (DropFileControl) sender;

            var fullProjectPath = dfc.DroppedFile;

            var ext = Path.GetExtension(fullProjectPath);
            var dirName = Path.GetDirectoryName(fullProjectPath);
            var dirInfo = new DirectoryInfo(dirName);
            var name = Path.GetFileNameWithoutExtension(fullProjectPath);


            ProjectBase newProject = null;
            if (ext == SolutionFileExt)
            {
                newProject = new SolutionBase();
                _projectCollection.Solution.Add((SolutionBase)newProject);
            }
            else if (ext == ProjectFileExt)
            {
                newProject = new ProjectBase();
                _projectCollection.Project.Add(newProject);
            }
            if (newProject == null) return;
            newProject.CategoryId = -1;
            newProject.Name = name;
            newProject.FullPath = fullProjectPath;

            ScanFolder(newProject, dirInfo);

            var item = new CollectionItem(newProject, _projectCollection.Tags);
            _collectionItems.Add(item);
            _existProjects.Add(newProject.FullPath.ToLower());

            CreateDirInTree(_folders, newProject);


            RefreshView();
            RefreshFolders();
        }