From b24f1209eb17bdad47801ef4c41c6a718aaf004b Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 16 Jul 2022 09:36:21 -0400 Subject: [PATCH] Replaced mAddProjectTargetFolder with GetSelectedWorkspaceFolder() --- IDE/src/IDEApp.bf | 4 +- IDE/src/ui/InstalledProjectDialog.bf | 2 +- IDE/src/ui/ProjectPanel.bf | 95 ++++++++++++++-------------- 3 files changed, 50 insertions(+), 51 deletions(-) diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index 00eef23b..b2d5b830 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -2304,7 +2304,7 @@ namespace IDE AddNewProjectToWorkspace(project); project.FinishCreate(); - mProjectPanel.InitProject(project); + mProjectPanel.InitProject(project, mProjectPanel.GetSelectedWorkspaceFolder()); mProjectPanel.Sort(); mWorkspace.FixOptions(); mWorkspace.mHasChanged = true; @@ -2694,7 +2694,7 @@ namespace IDE AddProjectToWorkspace(project, false); if (addToUI) - mProjectPanel.InitProject(project); + mProjectPanel.InitProject(project, null); } } if (!hadLoad) diff --git a/IDE/src/ui/InstalledProjectDialog.bf b/IDE/src/ui/InstalledProjectDialog.bf index e139dd1e..832e6627 100644 --- a/IDE/src/ui/InstalledProjectDialog.bf +++ b/IDE/src/ui/InstalledProjectDialog.bf @@ -203,7 +203,7 @@ namespace IDE.ui VerSpec verSpec = .SemVer(new .("*")); defer verSpec.Dispose(); - let project = gApp.mProjectPanel.ImportProject(entry.mPath, verSpec); + let project = gApp.mProjectPanel.ImportProject(entry.mPath, null, verSpec); if (project == null) { return; diff --git a/IDE/src/ui/ProjectPanel.bf b/IDE/src/ui/ProjectPanel.bf index 27e4727a..259fa15d 100644 --- a/IDE/src/ui/ProjectPanel.bf +++ b/IDE/src/ui/ProjectPanel.bf @@ -134,7 +134,6 @@ namespace IDE.ui bool mImportFolderDeferred; bool mImportProjectDeferred; bool mImportInstalledDeferred; - WorkspaceFolder mAddProjectTargetFolder; public Dictionary mListViewToProjectMap = new .() ~ delete _; public Dictionary mProjectToListViewMap = new .() ~ delete _; public Dictionary mListViewToWorkspaceFolderMap = new .() ~ delete _; @@ -519,21 +518,21 @@ namespace IDE.ui } } - public void InitProject(Project project) - { + public void InitProject(Project project, WorkspaceFolder workspaceFolder) + { var projectListViewItem = InitProjectItem(project.mRootFolder); projectListViewItem.mRefObject = project; - if (mAddProjectTargetFolder != null) + if (workspaceFolder != null) { let root = mListView.GetRoot(); root.RemoveChildItem(projectListViewItem, false); - mAddProjectTargetFolder.mListView.MakeParent(); - mAddProjectTargetFolder.mListView.AddChild(projectListViewItem); - mAddProjectTargetFolder.mListView.Open(true); - mProjectToWorkspaceFolderMap[project.mRootFolder] = mAddProjectTargetFolder; + workspaceFolder.mListView.MakeParent(); + workspaceFolder.mListView.AddChild(projectListViewItem); + workspaceFolder.mListView.Open(true); + mProjectToWorkspaceFolderMap[project.mRootFolder] = workspaceFolder; - mAddProjectTargetFolder.mProjects.Add(project); - mAddProjectTargetFolder = null; + workspaceFolder.mProjects.Add(project); + QueueSortItem(workspaceFolder.mListView); } } @@ -577,7 +576,7 @@ namespace IDE.ui mProjectToWorkspaceFolderMap.Clear(); for (var project in IDEApp.sApp.mWorkspace.mProjects) - InitProject(project); + InitProject(project, null); let root = mListView.GetRoot(); @@ -1502,6 +1501,14 @@ namespace IDE.ui #endif } + public WorkspaceFolder GetSelectedWorkspaceFolder() + { + ListViewItem selectedItem = mListView.GetRoot().FindFirstSelectedItem(); + if (mListViewToWorkspaceFolderMap.TryGetValue(selectedItem, let folder)) + return folder; + return null; + } + ListViewItem GetSelectedParentItem() { ListViewItem selectedItem = mListView.GetRoot().FindFirstSelectedItem(); @@ -2449,7 +2456,7 @@ namespace IDE.ui } - public Project ImportProject(String filePath, VerSpec verSpec = .None) + public Project ImportProject(String filePath, WorkspaceFolder workspaceFolder, VerSpec verSpec = .None) { if (gApp.IsCompiling) return null; @@ -2496,7 +2503,7 @@ namespace IDE.ui gApp.AddNewProjectToWorkspace(proj, verSpec); gApp.mWorkspace.FixOptions(); gApp.[Friend]FlushDeferredLoadProjects(true); - InitProject(proj); + InitProject(proj, workspaceFolder); if (failed) { gApp.Fail(StackStringFormat!("Failed to load project: {0}", filePath)); @@ -2542,6 +2549,8 @@ namespace IDE.ui initialDir.Concat(Path.DirectorySeparatorChar, "Samples"); } + var workspaceFolder = GetSelectedWorkspaceFolder(); + fileDialog.InitialDirectory = initialDir; fileDialog.ValidateNames = true; fileDialog.DefaultExt = ".toml"; @@ -2551,7 +2560,7 @@ namespace IDE.ui { for (String origProjFilePath in fileDialog.FileNames) { - ImportProject(origProjFilePath); + ImportProject(origProjFilePath, workspaceFolder); } } #endif @@ -2656,16 +2665,10 @@ namespace IDE.ui { Menu anItem; - if (mListViewToWorkspaceFolderMap.TryGetValue(focusedItem, let folder)) + void AddWorkspaceMenuItems() { - anItem = menu.AddItem("Remove"); - anItem.mOnMenuItemSelected.Add(new (item) => { RemoveSelectedWorkspaceFolder(); }); - anItem = menu.AddItem("Rename"); - anItem.mOnMenuItemSelected.Add(new (item) => { EditListViewItem(focusedItem); }); - menu.AddItem(); anItem = menu.AddItem("Add New Project..."); anItem.mOnMenuItemSelected.Add(new (item) => { - mAddProjectTargetFolder = folder; AddNewProject(); }); if (gApp.IsCompiling) @@ -2674,7 +2677,6 @@ namespace IDE.ui anItem = menu.AddItem("Add Existing Project..."); anItem.mOnMenuItemSelected.Add(new (item) => { mImportProjectDeferred = true; - mAddProjectTargetFolder = folder; }); if (gApp.IsCompiling) anItem.SetDisabled(true); @@ -2682,15 +2684,34 @@ namespace IDE.ui anItem = menu.AddItem("Add From Installed..."); anItem.mOnMenuItemSelected.Add(new (item) => { mImportInstalledDeferred = true; - mAddProjectTargetFolder = folder; }); if (gApp.IsCompiling) anItem.SetDisabled(true); anItem = menu.AddItem("New Folder"); anItem.mOnMenuItemSelected.Add(new (item) => { - let newfolder = AddWorkspaceFolder(folder.mListView); - newfolder.mParent = folder; + var workspaceFolder = GetSelectedWorkspaceFolder(); + if (workspaceFolder != null) + { + let newFolder = AddWorkspaceFolder(workspaceFolder.mListView); + newFolder.mParent = workspaceFolder; + } + else + { + AddWorkspaceFolder((ProjectListViewItem)mListView.GetRoot()); + } }); + } + + if (mListViewToWorkspaceFolderMap.TryGetValue(focusedItem, let folder)) + { + anItem = menu.AddItem("Remove"); + anItem.mOnMenuItemSelected.Add(new (item) => { RemoveSelectedWorkspaceFolder(); }); + anItem = menu.AddItem("Rename"); + anItem.mOnMenuItemSelected.Add(new (item) => { EditListViewItem(focusedItem); }); + menu.AddItem(); + + AddWorkspaceMenuItems(); + handled = true; } else if (gApp.mWorkspace.IsInitialized) @@ -2698,29 +2719,7 @@ namespace IDE.ui AddOpenContainingFolder(); menu.AddItem(); - anItem = menu.AddItem("Add New Project..."); - anItem.mOnMenuItemSelected.Add(new (item) => { - mAddProjectTargetFolder = null; - AddNewProject(); - }); - if (gApp.IsCompiling) - anItem.SetDisabled(true); - - anItem = menu.AddItem("Add Existing Project..."); - anItem.mOnMenuItemSelected.Add(new (item) => { - mAddProjectTargetFolder = null; - mImportProjectDeferred = true; - }); - if (gApp.IsCompiling) - anItem.SetDisabled(true); - - anItem = menu.AddItem("Add From Installed..."); - anItem.mOnMenuItemSelected.Add(new (item) => { mImportInstalledDeferred = true; }); - if (gApp.IsCompiling) - anItem.SetDisabled(true); - - anItem = menu.AddItem("New Folder"); - anItem.mOnMenuItemSelected.Add(new (item) => { AddWorkspaceFolder((ProjectListViewItem)mListView.GetRoot()); }); + AddWorkspaceMenuItems(); menu.AddItem(); anItem = menu.AddItem("Properties..."); anItem.mOnMenuItemSelected.Add(new (item) => { ShowWorkspaceProperties(); });