void OnViewChanged(object sender, EventArgs args)
        {
            if (viewProvider != null)
            {
                this.dynamicProviders.Remove(viewProvider);
                viewProvider.ItemsChanged -= OnProviderItemsChanged;
            }

            //only treat active ViewContent as a Toolbox consumer if it implements IToolboxConsumer
            if (IdeApp.Workbench.ActiveDocument != null && IdeApp.Workbench.ActiveDocument.ActiveView != null)
            {
                CurrentConsumer = IdeApp.Workbench.ActiveDocument.ActiveView.GetContent <IToolboxConsumer> ();
                viewProvider    = IdeApp.Workbench.ActiveDocument.ActiveView.GetContent <IToolboxDynamicProvider> ();
                customizer      = IdeApp.Workbench.ActiveDocument.ActiveView.GetContent <IToolboxCustomizer> ();
                if (viewProvider != null)
                {
                    this.dynamicProviders.Add(viewProvider);
                    viewProvider.ItemsChanged += OnProviderItemsChanged;
                    OnToolboxContentsChanged();
                }
            }
            else
            {
                CurrentConsumer = null;
                viewProvider    = null;
                customizer      = null;
            }
        }
        void OnContentChanged(object sender, EventArgs args)
        {
            foreach (var viewProvider in viewProviders)
            {
                this.dynamicProviders.Remove(viewProvider);
                viewProvider.ItemsChanged -= OnProviderItemsChanged;
            }
            viewProviders.Clear();

            //only treat active ViewContent as a Toolbox consumer if it implements IToolboxConsumer
            if (IdeApp.Workbench.ActiveDocument != null)
            {
                CurrentConsumer = IdeApp.Workbench.ActiveDocument.GetContent <IToolboxConsumer> (true);
                foreach (var viewProvider in IdeApp.Workbench.ActiveDocument.GetContents <IToolboxDynamicProvider> ())
                {
                    viewProviders.Add(viewProvider);
                    dynamicProviders.Add(viewProvider);
                    viewProvider.ItemsChanged += OnProviderItemsChanged;
                }
                customizer = IdeApp.Workbench.ActiveDocument.GetContent <IToolboxCustomizer> (true);
                if (viewProviders.Count > 0)
                {
                    OnToolboxContentsChanged();
                }
            }
            else
            {
                CurrentConsumer = null;
                customizer      = null;
            }
        }
		void OnViewChanged (object sender, EventArgs args)
		{
			if (viewProvider != null) {
				this.dynamicProviders.Remove (viewProvider);
				viewProvider.ItemsChanged -= OnProviderItemsChanged;
			}
			
			//only treat active ViewContent as a Toolbox consumer if it implements IToolboxConsumer
			if (IdeApp.Workbench.ActiveDocument != null && IdeApp.Workbench.ActiveDocument.ActiveView != null) {
				CurrentConsumer = IdeApp.Workbench.ActiveDocument.ActiveView.GetContent<IToolboxConsumer> ();
				viewProvider    = IdeApp.Workbench.ActiveDocument.ActiveView.GetContent<IToolboxDynamicProvider> ();
				customizer = IdeApp.Workbench.ActiveDocument.ActiveView.GetContent<IToolboxCustomizer> ();
				if (viewProvider != null)  {
					this.dynamicProviders.Add (viewProvider);
					viewProvider.ItemsChanged += OnProviderItemsChanged;
					OnToolboxContentsChanged ();
				}
			} else {
				CurrentConsumer = null;
				viewProvider = null;
				customizer = null;
			}
		}