Browse Source

Custom components side tab is now updated when a new reference is added to the project. It is also disposed before creating a new instance when the toolbox side tabs are reloaded.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2299 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 19 years ago
parent
commit
3cbcab3bf6
  1. 22
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs
  2. 9
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs

22
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs

@ -21,8 +21,10 @@ using ICSharpCode.SharpDevelop.Widgets.SideBar;
namespace ICSharpCode.FormsDesigner.Gui namespace ICSharpCode.FormsDesigner.Gui
{ {
public class CustomComponentsSideTab : SideTabDesigner public class CustomComponentsSideTab : SideTabDesigner, IDisposable
{ {
bool disposed;
///<summary>Load an assembly's controls</summary> ///<summary>Load an assembly's controls</summary>
public CustomComponentsSideTab(SideBarControl sideTab, string name, IToolboxService toolboxService) public CustomComponentsSideTab(SideBarControl sideTab, string name, IToolboxService toolboxService)
: base(sideTab, name, toolboxService) : base(sideTab, name, toolboxService)
@ -31,6 +33,17 @@ namespace ICSharpCode.FormsDesigner.Gui
ScanProjectAssemblies(); ScanProjectAssemblies();
ProjectService.EndBuild += RescanProjectAssemblies; ProjectService.EndBuild += RescanProjectAssemblies;
ProjectService.SolutionLoaded += RescanProjectAssemblies; ProjectService.SolutionLoaded += RescanProjectAssemblies;
ProjectService.ProjectItemAdded += ProjectItemAdded;
}
public void Dispose()
{
if (!disposed) {
disposed = true;
ProjectService.EndBuild -= RescanProjectAssemblies;
ProjectService.SolutionLoaded -= RescanProjectAssemblies;
ProjectService.ProjectItemAdded -= ProjectItemAdded;
}
} }
void RescanProjectAssemblies(object sender, EventArgs e) void RescanProjectAssemblies(object sender, EventArgs e)
@ -41,6 +54,13 @@ namespace ICSharpCode.FormsDesigner.Gui
SharpDevelopSideBar.SideBar.Refresh(); SharpDevelopSideBar.SideBar.Refresh();
} }
void ProjectItemAdded(object sender, ProjectItemEventArgs e)
{
if (e.ProjectItem is ReferenceProjectItem) {
RescanProjectAssemblies(sender, e);
}
}
void ScanProjectAssemblies() void ScanProjectAssemblies()
{ {
// custom user controls don't need custom images // custom user controls don't need custom images

9
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs

@ -26,6 +26,8 @@ namespace ICSharpCode.FormsDesigner
static ICSharpCode.FormsDesigner.Services.ToolboxService toolboxService = null; static ICSharpCode.FormsDesigner.Services.ToolboxService toolboxService = null;
public static List<SideTab> SideTabs = new List<SideTab>(); public static List<SideTab> SideTabs = new List<SideTab>();
static CustomComponentsSideTab customTab;
static ComponentLibraryLoader componentLibraryLoader = new ComponentLibraryLoader(); static ComponentLibraryLoader componentLibraryLoader = new ComponentLibraryLoader();
public static ComponentLibraryLoader ComponentLibraryLoader { public static ComponentLibraryLoader ComponentLibraryLoader {
@ -90,7 +92,7 @@ namespace ICSharpCode.FormsDesigner
tab.ItemsExchanged -= SideTabItemsExchanged; tab.ItemsExchanged -= SideTabItemsExchanged;
if (SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) { if (SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) {
SharpDevelopSideBar.SideBar.Tabs.Remove(tab); SharpDevelopSideBar.SideBar.Tabs.Remove(tab);
reInsertTabs = true;; reInsertTabs = true;
} }
} }
reInsertTabs &= doInsert; reInsertTabs &= doInsert;
@ -108,7 +110,10 @@ namespace ICSharpCode.FormsDesigner
} }
} }
} }
SideTabDesigner customTab = new CustomComponentsSideTab(SharpDevelopSideBar.SideBar, ResourceService.GetString("ICSharpCode.SharpDevelop.FormDesigner.ToolboxProvider.CustomComponents"), toolboxService); if (customTab != null) {
customTab.Dispose();
}
customTab = new CustomComponentsSideTab(SharpDevelopSideBar.SideBar, ResourceService.GetString("ICSharpCode.SharpDevelop.FormDesigner.ToolboxProvider.CustomComponents"), toolboxService);
customTab.ItemRemoved += SideTabItemRemoved; customTab.ItemRemoved += SideTabItemRemoved;
customTab.ItemsExchanged += SideTabItemsExchanged; customTab.ItemsExchanged += SideTabItemsExchanged;
SideTabs.Add(customTab); SideTabs.Add(customTab);

Loading…
Cancel
Save