Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@novell.com>2009-07-27 18:20:10 +0400
committerLluis Sanchez <lluis@novell.com>2009-07-27 18:20:10 +0400
commit20fd1725bbc5e185545367efb1daaa8230c9e46c (patch)
tree448fd94cedc8c57f5258c8baec7952590cc25149 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad
parent580e5550b503e3add1c93396912b7692c731891d (diff)
* MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs:
* MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs: Properly support moving items between solution folders of the same solution (the ItemAddedToSolution is not fired anymore in this case). svn path=/trunk/monodevelop/; revision=138729
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs38
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs47
2 files changed, 62 insertions, 23 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs
index 655c64122a..6c305da567 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs
@@ -43,10 +43,14 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
public class SolutionFolderNodeBuilder: TypeNodeBuilder
{
SolutionItemRenamedEventHandler combineNameChanged;
+ SolutionItemChangeEventHandler combineEntryAdded;
+ SolutionItemChangeEventHandler combineEntryRemoved;
public SolutionFolderNodeBuilder ()
{
combineNameChanged = (SolutionItemRenamedEventHandler) DispatchService.GuiDispatch (new SolutionItemRenamedEventHandler (OnCombineRenamed));
+ combineEntryAdded = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (OnEntryAdded));
+ combineEntryRemoved = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (OnEntryRemoved));
}
public override Type NodeDataType {
@@ -103,14 +107,18 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
public override void OnNodeAdded (object dataObject)
{
- SolutionFolder combine = (SolutionFolder) dataObject;
- combine.NameChanged += combineNameChanged;
+ SolutionFolder folder = (SolutionFolder) dataObject;
+ folder.NameChanged += combineNameChanged;
+ folder.ItemAdded += combineEntryAdded;
+ folder.ItemRemoved += combineEntryRemoved;
}
public override void OnNodeRemoved (object dataObject)
{
- SolutionFolder combine = (SolutionFolder) dataObject;
- combine.NameChanged -= combineNameChanged;
+ SolutionFolder folder = (SolutionFolder) dataObject;
+ folder.NameChanged -= combineNameChanged;
+ folder.ItemAdded -= combineEntryAdded;
+ folder.ItemRemoved -= combineEntryRemoved;
}
void OnCombineRenamed (object sender, SolutionItemRenamedEventArgs e)
@@ -118,6 +126,24 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
ITreeBuilder tb = Context.GetTreeBuilder (e.SolutionItem);
if (tb != null) tb.Update ();
}
+
+ void OnEntryAdded (object sender, SolutionItemEventArgs e)
+ {
+ ITreeBuilder tb = Context.GetTreeBuilder (e.SolutionItem.ParentFolder);
+ if (tb != null) {
+ tb.AddChild (e.SolutionItem, true);
+ tb.Expanded = true;
+ }
+ }
+
+ void OnEntryRemoved (object sender, SolutionItemEventArgs e)
+ {
+ ITreeBuilder tb = Context.GetTreeBuilder (e.SolutionItem);
+ if (tb != null) {
+ ITreeBuilder tbs = Context.GetTreeBuilder (e.SolutionItem);
+ tb.Remove ();
+ }
+ }
}
public class CombineNodeCommandHandler: NodeCommandHandler
@@ -151,8 +177,8 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
SolutionItem it = (SolutionItem) dataObject;
if (!MessageService.Confirm (GettextCatalog.GetString ("Are you sure you want to move the item '{0}' to the solution folder '{1}'?", it.Name, folder.Name), AlertButton.Move))
return;
-
- it.ParentFolder.Items.Remove (it);
+
+ // If the items belongs to another folder, it will be automatically removed from it
folder.Items.Add (it);
IdeApp.ProjectOperations.Save (folder.ParentSolution);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs
index 05cff362bb..4e42046bfc 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs
@@ -42,27 +42,29 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
{
public class SolutionNodeBuilder: TypeNodeBuilder
{
- SolutionItemEventHandler combineEntryAdded;
- SolutionItemEventHandler combineEntryRemoved;
+ SolutionItemEventHandler globalItemAddedRemoved;
+ SolutionItemChangeEventHandler combineEntryAdded;
+ SolutionItemChangeEventHandler combineEntryRemoved;
EventHandler<WorkspaceItemRenamedEventArgs> combineNameChanged;
EventHandler startupChanged;
public SolutionNodeBuilder ()
{
- combineEntryAdded = (SolutionItemEventHandler) DispatchService.GuiDispatch (new SolutionItemEventHandler (OnEntryAdded));
- combineEntryRemoved = (SolutionItemEventHandler) DispatchService.GuiDispatch (new SolutionItemEventHandler (OnEntryRemoved));
+ globalItemAddedRemoved = (SolutionItemEventHandler) DispatchService.GuiDispatch (new SolutionItemEventHandler (OnSolutionItemAddedRemoved));
+ combineEntryAdded = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (OnEntryAdded));
+ combineEntryRemoved = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (OnEntryRemoved));
combineNameChanged = (EventHandler<WorkspaceItemRenamedEventArgs>) DispatchService.GuiDispatch (new EventHandler<WorkspaceItemRenamedEventArgs> (OnCombineRenamed));
startupChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnStartupChanged));
- IdeApp.Workspace.ItemAddedToSolution += combineEntryAdded;
- IdeApp.Workspace.ItemRemovedFromSolution += combineEntryRemoved;
+ IdeApp.Workspace.ItemAddedToSolution += globalItemAddedRemoved;
+ IdeApp.Workspace.ItemRemovedFromSolution += globalItemAddedRemoved;
}
public override void Dispose ()
{
base.Dispose ();
- IdeApp.Workspace.ItemAddedToSolution -= combineEntryAdded;
- IdeApp.Workspace.ItemRemovedFromSolution -= combineEntryRemoved;
+ IdeApp.Workspace.ItemAddedToSolution -= globalItemAddedRemoved;
+ IdeApp.Workspace.ItemRemovedFromSolution -= globalItemAddedRemoved;
}
@@ -129,6 +131,8 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
Solution solution = (Solution) dataObject;
solution.NameChanged += combineNameChanged;
solution.StartupItemChanged += startupChanged;
+ solution.RootFolder.ItemAdded += combineEntryAdded;
+ solution.RootFolder.ItemRemoved += combineEntryRemoved;
}
public override void OnNodeRemoved (object dataObject)
@@ -136,6 +140,8 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
Solution solution = (Solution) dataObject;
solution.NameChanged -= combineNameChanged;
solution.StartupItemChanged -= startupChanged;
+ solution.RootFolder.ItemAdded -= combineEntryAdded;
+ solution.RootFolder.ItemRemoved -= combineEntryRemoved;
}
void OnStartupChanged (object sender, EventArgs args)
@@ -147,16 +153,17 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
}
}
+ void OnSolutionItemAddedRemoved (object sender, SolutionItemEventArgs e)
+ {
+ ITreeBuilder tb = Context.GetTreeBuilder (e.SolutionItem.ParentSolution);
+ if (tb != null)
+ tb.Update (); // Update the entry count
+ }
+
void OnEntryAdded (object sender, SolutionItemEventArgs e)
{
- ITreeBuilder tb;
- if (e.SolutionItem.ParentFolder.IsRoot)
- tb = Context.GetTreeBuilder (e.SolutionItem.ParentSolution);
- else
- tb = Context.GetTreeBuilder (e.SolutionItem.ParentFolder);
-
+ ITreeBuilder tb = Context.GetTreeBuilder (e.SolutionItem.ParentSolution);
if (tb != null) {
- tb.Update (); // Update the entry count
tb.AddChild (e.SolutionItem, true);
tb.Expanded = true;
}
@@ -167,8 +174,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
ITreeBuilder tb = Context.GetTreeBuilder (e.SolutionItem);
if (tb != null) {
ITreeBuilder tbs = Context.GetTreeBuilder (e.SolutionItem);
- if (tbs.MoveToParent ())
- tbs.Update (); // Update the entry count
tb.Remove ();
}
}
@@ -200,6 +205,14 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
public override void OnNodeDrop (object dataObject, DragOperation operation)
{
+ Solution sol = CurrentNode.DataItem as Solution;
+ SolutionItem it = (SolutionItem) dataObject;
+ if (!MessageService.Confirm (GettextCatalog.GetString ("Are you sure you want to move the item '{0}' to the root node of the solution?", it.Name), AlertButton.Move))
+ return;
+
+ // If the items belongs to another folder, it will be automatically removed from it
+ sol.RootFolder.Items.Add (it);
+ IdeApp.ProjectOperations.Save (sol);
}
public override void ActivateMultipleItems ()