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. 26
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs
  2. 11
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs

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

@ -21,16 +21,29 @@ using ICSharpCode.SharpDevelop.Widgets.SideBar; @@ -21,16 +21,29 @@ using ICSharpCode.SharpDevelop.Widgets.SideBar;
namespace ICSharpCode.FormsDesigner.Gui
{
public class CustomComponentsSideTab : SideTabDesigner
public class CustomComponentsSideTab : SideTabDesigner, IDisposable
{
bool disposed;
///<summary>Load an assembly's controls</summary>
public CustomComponentsSideTab(SideBarControl sideTab, string name, IToolboxService toolboxService)
: base(sideTab, name, toolboxService)
{
this.DisplayName = StringParser.Parse(this.Name);
ScanProjectAssemblies();
ProjectService.EndBuild += RescanProjectAssemblies;
ProjectService.SolutionLoaded += RescanProjectAssemblies;
ProjectService.EndBuild += 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)
@ -41,6 +54,13 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -41,6 +54,13 @@ namespace ICSharpCode.FormsDesigner.Gui
SharpDevelopSideBar.SideBar.Refresh();
}
void ProjectItemAdded(object sender, ProjectItemEventArgs e)
{
if (e.ProjectItem is ReferenceProjectItem) {
RescanProjectAssemblies(sender, e);
}
}
void ScanProjectAssemblies()
{
// custom user controls don't need custom images

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

@ -26,8 +26,10 @@ namespace ICSharpCode.FormsDesigner @@ -26,8 +26,10 @@ namespace ICSharpCode.FormsDesigner
static ICSharpCode.FormsDesigner.Services.ToolboxService toolboxService = null;
public static List<SideTab> SideTabs = new List<SideTab>();
static ComponentLibraryLoader componentLibraryLoader = new ComponentLibraryLoader();
static CustomComponentsSideTab customTab;
static ComponentLibraryLoader componentLibraryLoader = new ComponentLibraryLoader();
public static ComponentLibraryLoader ComponentLibraryLoader {
get {
return componentLibraryLoader;
@ -90,7 +92,7 @@ namespace ICSharpCode.FormsDesigner @@ -90,7 +92,7 @@ namespace ICSharpCode.FormsDesigner
tab.ItemsExchanged -= SideTabItemsExchanged;
if (SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) {
SharpDevelopSideBar.SideBar.Tabs.Remove(tab);
reInsertTabs = true;;
reInsertTabs = true;
}
}
reInsertTabs &= doInsert;
@ -108,7 +110,10 @@ namespace ICSharpCode.FormsDesigner @@ -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.ItemsExchanged += SideTabItemsExchanged;
SideTabs.Add(customTab);

Loading…
Cancel
Save