示例#1
0
        public void OnDocumentSelectionChanged(object sender, EventArgs e)
        {
            if (sender != null)
            {
                ModelingDocView view = sender as ModelingDocView;
                if (view != null)
                {
                    ICollection selection = view.GetSelectedComponents();
                    if (selection.Count == 1)
                    {
                        IEnumerator enumerator = selection.GetEnumerator();
                        enumerator.MoveNext();
                        ClassShape shape = enumerator.Current as ClassShape;
                        if (shape != null)
                        {
                            ModelClass modelClass = shape.ModelElement as ModelClass;
                            if (modelClass != null)
                            {
                                control.Display(modelClass);
                                return;
                            }
                        }

                        ModelProperty property = enumerator.Current as ModelProperty;
                        if (property != null)
                        {
                            control.Display(property.ModelClass);
                            return;
                        }
                    }
                }

                control.Clear();
            }
        }
示例#2
0
        /// <summary>
        /// Gets the selected elements.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <returns></returns>
        public static IList <object> GetSelectedElements(IServiceProvider provider)
        {
            ModelingDocView docView = DesignerHelper.GetModelingDocView(provider);

            if (docView != null)
            {
                if (docView.SelectionCount > 0)
                {
                    IList <object> elements = new List <object>(docView.SelectionCount);

                    foreach (object component in docView.GetSelectedComponents())
                    {
                        ShapeElement selectedShape   = component as ShapeElement;
                        ModelElement selectedElement = component as ModelElement;
                        if (selectedShape != null)
                        {
                            elements.Add(selectedShape.ModelElement);
                        }
                        else if (selectedElement != null)
                        {
                            elements.Add(selectedElement);
                        }
                    }

                    return(elements);
                }
            }

            return(null);
        }
示例#3
0
		protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
		{
			if (newView != null && oldView == null)
			{
				//The view is being loaded
				newView.SelectionChanged += new EventHandler(newView_SelectionChanged);

				var docData = newView.DocData as nHydrateDocData;
				if (docData == null) return;
				if (docData.ModelExplorerToolWindow != null)
					docData.ModelExplorerToolWindow.SelectionChanged += new EventHandler(ModelExplorerToolWindow_SelectionChanged);

			}
			else if (newView == null && oldView != null)
			{
				//The view is being loaded
				oldView.SelectionChanged -= new EventHandler(newView_SelectionChanged);

				var docData = oldView.DocData as nHydrateDocData;
				if (docData == null) return;
				if (docData.ModelExplorerToolWindow != null)
					docData.ModelExplorerToolWindow.SelectionChanged -= new EventHandler(ModelExplorerToolWindow_SelectionChanged);
			}

			_docControl.SetupObjects(_model, _diagram, _docView);
			base.OnDocumentWindowChanged(oldView, newView);

		}
示例#4
0
        /// <summary>
        /// Lors de la fermeture de la vue principale, on s'assure que toutes les autres seront bien fermèes
        /// </summary>
        protected override void OnClose()
        {
            // Pattern pour supprimer un item dans un iterateur
            for (;;)
            {
                ModelingDocView viewToClose = null;
                foreach (ModelingDocView view in DocData.DocViews)
                {
                    if (view != this)
                    {
                        viewToClose = view;
                        break;
                    }
                }

                // Si il n'y a rien à supprimer, on s'arrete
                if (viewToClose == null)
                {
                    break;
                }

                viewToClose.Frame.CloseFrame(0);
            }

            base.OnClose();
        }
示例#5
0
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            PanZoomPanel panel = this.Window as PanZoomPanel;

            if (panel != null)
            {
                // detach from previous document view
                if (m_currentDocView != null)
                {
                    UnsubscribeFromEvents(m_currentDocView);
                    m_currentDocView = null;
                }

                DiagramDocView docView = newView as DiagramDocView;
                if (docView != null && docView.CurrentDesigner != null)
                {
                    // attach to the new document view
                    SubscribeToEvents(docView);
                    m_currentDocView = docView;

                    // make sure thumbnail image is updated
                    panel.InvalidateImage(docView.CurrentDesigner.DiagramClientView);
                }
                else
                {
                    // document is not recognized - erase the image
                    panel.InvalidateImage(null);
                }
            }
        }
示例#6
0
        /// <summary>
        /// Gets the selected element.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <returns></returns>
        public static ModelElement GetSelectedElement(IServiceProvider provider)
        {
            ModelingDocView docView = DesignerHelper.GetModelingDocView(provider);

            if (docView != null)
            {
                if (docView.SelectionCount == 1)
                {
                    foreach (object component in docView.GetSelectedComponents())
                    {
                        ShapeElement selectionShape   = component as ShapeElement;
                        ModelElement selectionElement = component as ModelElement;

                        if (selectionShape != null)
                        {
                            return(selectionShape.ModelElement);
                        }
                        else if (selectionElement != null)
                        {
                            return(selectionElement);
                        }
                    }
                }
            }

            return(null);
        }
示例#7
0
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            base.OnDocumentWindowChanged(oldView, newView);

            ModelingDocData data1 = (oldView != null) ? oldView.DocData : null;

            if ((data1 != null) && data1 is ActiveWriterDocData)
            {
                oldView.SelectionChanged -= new EventHandler(this.OnDocumentSelectionChanged);

                Model model = (Model)data1.RootElement;
                model.ModelPropertyAdded   -= new ModelPropertyAddedHandler(this.OnModelPropertyAdded);
                model.ModelPropertyDeleted -= new ModelPropertyDeletedHandler(this.OnModelPropertyDeleted);
                model.ModelPropertyChanged -= new ModelPropertyChangedHandler(this.OnModelPropertyChanged);
            }

            ModelingDocData data2 = (newView != null) ? newView.DocData : null;

            if ((data2 != null) && data2 is ActiveWriterDocData)
            {
                newView.SelectionChanged += new EventHandler(this.OnDocumentSelectionChanged);

                Model model = (Model)data2.RootElement;
                model.ModelPropertyAdded   += new ModelPropertyAddedHandler(this.OnModelPropertyAdded);
                model.ModelPropertyDeleted += new ModelPropertyDeletedHandler(this.OnModelPropertyDeleted);
                model.ModelPropertyChanged += new ModelPropertyChangedHandler(this.OnModelPropertyChanged);
            }

            OnDocumentSelectionChanged(data2, EventArgs.Empty);
        }
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            base.OnDocumentWindowChanged(oldView, newView);

            ModelingDocData data1 = (oldView != null) ? oldView.DocData : null;
            if ((data1 != null) && data1 is ActiveWriterDocData)
            {
                oldView.SelectionChanged -= OnDocumentSelectionChanged;

                Model model = (Model)data1.RootElement;
                model.ModelPropertyAdded -= OnModelPropertyAdded;
                model.ModelPropertyDeleted -= OnModelPropertyDeleted;
                model.ModelPropertyChanged -= OnModelPropertyChanged;
            }

            ModelingDocData data2 = (newView != null) ? newView.DocData : null;
            if ((data2 != null) && data2 is ActiveWriterDocData)
            {
                newView.SelectionChanged += OnDocumentSelectionChanged;

                Model model = (Model)data2.RootElement;
                model.ModelPropertyAdded += OnModelPropertyAdded;
                model.ModelPropertyDeleted += OnModelPropertyDeleted;
                model.ModelPropertyChanged += OnModelPropertyChanged;
            }

            OnDocumentSelectionChanged(data2, EventArgs.Empty);
        }
 protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
 {
     base.OnDocumentWindowChanged(oldView, newView);
     if (newView == null)
     {
         this.HideWindow();
     }
     else if (newView is MVCVisualDesignerDocView)
     {
         ShowViewModel((VDView)(newView.DocData.RootElement));
     }
 }
示例#10
0
        /// <summary>
        /// Execute the command
        /// </summary>
        public void Exec()
        {
            Guid logicalViewGuid        = new Guid(LogicalViewID.ProjectSpecificEditor);
            ModelElementLocator locator = new ModelElementLocator((IServiceProvider)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(Microsoft.VisualStudio.OLE.Interop.IObjectWithSite)));
            ModelingDocView     view    = locator.FindDocView(logicalViewGuid, this._diagram);

            ModelingDocData docdata = view.DocData as ModelingDocData;

            if (docdata != null && docdata.FileName != null)
            {
                // Guid du DataLayerEditorFactory
                Guid guid1 = new Guid("56AF6F2B-EF94-4297-9857-8653A0AE02D8");
                ServiceLocator.Instance.IDEHelper.OpenModelsDiagram(docdata.FileName, guid1);
            }
        }
示例#11
0
        /// <summary>
        /// Ouverture du diagramme dédié
        /// </summary>
        /// <param name="e">The diagram point event arguments.</param>
        public override void OnDoubleClick(DiagramPointEventArgs e)
        {
            base.OnDoubleClick(e);

            // TODO dans un helper
            Guid logicalViewGuid        = new Guid(LogicalViewID.ProjectSpecificEditor);
            ModelElementLocator locator =
                new ModelElementLocator(
                    (IServiceProvider)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(IObjectWithSite)));
            ModelingDocView view = locator.FindDocView(logicalViewGuid, Diagram);

            ModelingDocData docdata = view.DocData;

            if (docdata != null)
            {
                OpenDiagram(docdata.FileName);
            }
        }
示例#12
0
        /// <summary>
        /// Notifies derived classes if a change is made in the Document Window.
        /// </summary>
        /// <param name="oldView">The view for the Document Window in the previous frame.</param>
        /// <param name="newView">The view for the Document Window in the current frame.</param>
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            base.OnDocumentWindowChanged(oldView, newView);

            if (((newView != null) && (newView.DocData != null)))
            {
                Store store = newView.DocData.Store;
                IList <SoftwareComponent> list = store.ElementDirectory.FindElements <SoftwareComponent>(true);
                if (list.Count > 0)
                {
                    //this.Form.Populate(list[0]);
                    Form.Show();
                }
                return;
            }

            SetSelection(null);
        }
示例#13
0
        /// <summary>
        /// Execute the command
        /// </summary>
        public void Exec()
        {
            ModelElementLocator locator = new ModelElementLocator(_serviceProvider);
            ModelingDocView     view    = locator.FindDocView(Guid.Empty, _diagram);

            if (view != null)
            {
                System.Windows.Forms.FolderBrowserDialog ofd = new System.Windows.Forms.FolderBrowserDialog();
                ofd.ShowNewFolderButton = true;
                if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    string          fileName = view.DocData.FileName;
                    DiagramExporter exporter = new DiagramExporter(_serviceProvider);
                    exporter.ExportErrorEvent += exporter_ExportErrorEvent;
                    exporter.ExportDiagram(fileName, ofd.SelectedPath, System.Drawing.Imaging.ImageFormat.Png, true);
                    exporter.ExportErrorEvent -= exporter_ExportErrorEvent;
                }
            }
        }
示例#14
0
        private static void SelectShape(ShapeElement shapeElement, DocData docData)
        {
            // Validation

            if (shapeElement == null)
            {
                throw new ArgumentNullException("shapeElement");
            }

            if (docData == null)
            {
                throw new ArgumentNullException("docData");
            }

            ModelingDocView docView = docData.DocViews[0];

            if (docView != null)
            {
                docView.SelectObjects(1, new object[] { shapeElement }, 0);
            }
        }
示例#15
0
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            if (newView != null && oldView == null)
            {
                //The view is being loaded
                newView.SelectionChanged += new EventHandler(newView_SelectionChanged);

                var docData = newView.DocData as nHydrateDocData;
                if (docData == null)
                {
                    return;
                }
                if (docData.ModelExplorerToolWindow != null)
                {
                    docData.ModelExplorerToolWindow.SelectionChanged += new EventHandler(ModelExplorerToolWindow_SelectionChanged);
                }
            }
            else if (newView == null && oldView != null)
            {
                //The view is being loaded
                oldView.SelectionChanged -= new EventHandler(newView_SelectionChanged);

                var docData = oldView.DocData as nHydrateDocData;
                if (docData == null)
                {
                    return;
                }
                if (docData.ModelExplorerToolWindow != null)
                {
                    docData.ModelExplorerToolWindow.SelectionChanged -= new EventHandler(ModelExplorerToolWindow_SelectionChanged);
                }
            }

            _docControl.SetupObjects(_model, _diagram, _docView);
            base.OnDocumentWindowChanged(oldView, newView);
        }
示例#16
0
		protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
		{
			if (newView == null && oldView != null)
			{
				//The model is being unloaded
				var m = oldView.DocData.RootElement as nHydrate.Dsl.nHydrateModel;
				if (m == null) return;
				_loadedModels.Remove(m.Id);

				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.nHydrateModel)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ModelChanged));

				#region Entity
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

				#region Field
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#endregion

				#region View
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

				#region Field
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#endregion

				#region Stored Procedure
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

				#region Field
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#region Parameter
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#endregion

				#region Function
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

				#region Field
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#region Parameter
				oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
					oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#endregion

				return;
			}

			//When the old view is null this is the first time. Only load the first time
			if (newView == null)
				return;
			
			//Reload model if necessary
			_model = newView.DocData.RootElement as nHydrate.Dsl.nHydrateModel;
			if (_model == null) return;
			_diagram = ((Microsoft.VisualStudio.Modeling.Shell.SingleDiagramDocView)newView).CurrentDesigner.DocView;
			_docView = newView.DocData;

			//This model is already hooked
			if (!_loadedModels.Contains(_model.Id))
			{
				_loadedModels.Add(_model.Id);

				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.nHydrateModel)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ModelChanged));

				#region Entity
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

				#region Field
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#endregion

				#region View
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

				#region Field
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#endregion

				#region Stored Procedure
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

				#region Field
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#region Parameter
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#endregion

				#region Function
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

				#region Field
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#region Parameter
				newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

				newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

				newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
					newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
					new EventHandler<Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
				#endregion

				#endregion

			}

			_findControl.SetupObjects(_model, _diagram, _docView);
			base.OnDocumentWindowChanged(oldView, newView);

		}
        /// <summary>
        ///     Fired when the current document changes.
        /// </summary>
        /// <param name="oldView">Previous DocData</param>
        /// <param name="newView">Current DocData</param>
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            var newModelingData = newView != null ? newView.DocData : null;

            if (newModelingData != null &&
                IsDocumentSupported(newModelingData))
            {
                var store = newModelingData.Store;
                if (store != null)
                {
                    if (_currentDocData != null)
                    {
                        // if we're switching stores, make sure we clear the tree.  Prevents store disposed exceptions if
                        // the currentDocData.Store is disposed before we switch back to it.
                        if (newModelingData.Store != _currentDocData.Store)
                        {
                            // clear tree data, causes event handlers to be removed from our branches.
                            if (_treeProvider != null)
                            {
                                _treeProvider.Root = null;
                            }

                            // clear cached selection
                            _currentSelection    = null;
                            _currentBrowseObject = null;
                        }

                        // disable column event handlers
                        _treeControl.RemoveColumnEventHandlers();

                        // unsubscribe from document closing event
                        _currentDocData.DocumentClosing -= OnDocumentClosing;
                    }

                    // enable column event handlers
                    _treeControl.AddColumnEventHandlers();

                    // subscribe to document closing event
                    newModelingData.DocumentClosing += OnDocumentClosing;

                    // cache the doc data, so we can unsubscribe properly.  We cannot
                    // unsubscribe using oldView.DocData, because we may get an OnDocumentWindowChanged(oldModelingData, null)
                    // just prior to a document close.  In that case, we'd unsubscribe too early, and not clean up properly
                    // in OnDocumentClosed.  Instead we wait until either we get a new supported document, or the old one closes.
                    _currentDocData = newModelingData;
                }
            }
            else
            {
                // it's possible that the oldView is not some docData we support, in that case, don't do anything
                var oldModelingData = oldView != null ? oldView.DocData : null;
                if (oldModelingData != null &&
                    IsDocumentSupported(oldModelingData))
                {
                    // Null or unsupported view, clear our selection context.  Note that we leave the tree populated
                    // here so that in the common case of switching back and forth between designer and code, we
                    // don't lose selection/expansion state in the tree.  We also clear/save the selection context,
                    // because we don't want to push anything to the property browser while the watermark is showing.
                    _currentBrowseObject = PrimarySelection;
                    SetSelectedComponents(new object[] { });
                    if (_containerControl != null)
                    {
                        _containerControl.WatermarkVisible = true;
                    }
                }
            }
        }
示例#18
0
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            base.OnDocumentWindowChanged(oldView, newView);
            if (newView == null)
            {
                this.HideWindow();

            }
            else if (newView is MVCVisualDesignerDocView)
            {
                ShowViewModel((VDView)(newView.DocData.RootElement));
            }
        }
示例#19
0
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            if (newView == null && oldView != null)
            {
                //The model is being unloaded
                var m = oldView.DocData.RootElement as nHydrate.Dsl.nHydrateModel;
                if (m == null)
                {
                    return;
                }
                _loadedModels.Remove(m.Id);

                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.nHydrateModel)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ModelChanged));

                #region Entity
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

                #region Field
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #endregion

                #region View
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

                #region Field
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #endregion

                #region Stored Procedure
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

                #region Field
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #region Parameter
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #endregion

                #region Function
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

                #region Field
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #region Parameter
                oldView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                oldView.DocData.Store.EventManagerDirectory.ElementAdded.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                oldView.DocData.Store.EventManagerDirectory.ElementDeleted.Remove(
                    oldView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #endregion

                return;
            }

            //When the old view is null this is the first time. Only load the first time
            if (newView == null)
            {
                return;
            }

            //Reload model if necessary
            _model = newView.DocData.RootElement as nHydrate.Dsl.nHydrateModel;
            if (_model == null)
            {
                return;
            }
            _diagram = ((Microsoft.VisualStudio.Modeling.Shell.SingleDiagramDocView)newView).CurrentDesigner.DocView;
            _docView = newView.DocData;

            //This model is already hooked
            if (!_loadedModels.Contains(_model.Id))
            {
                _loadedModels.Add(_model.Id);

                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.nHydrateModel)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ModelChanged));

                #region Entity
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Entity)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

                #region Field
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Field)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #endregion

                #region View
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.View)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

                #region Field
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.ViewField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #endregion

                #region Stored Procedure
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedure)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

                #region Field
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #region Parameter
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.StoredProcedureParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #endregion

                #region Function
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.Function)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));

                #region Field
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionField)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #region Parameter
                newView.DocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementPropertyChangedEventArgs>(ElementChanged));

                newView.DocData.Store.EventManagerDirectory.ElementAdded.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementAddedEventArgs>(ElementAddHandler));

                newView.DocData.Store.EventManagerDirectory.ElementDeleted.Add(
                    newView.DocData.Store.DomainDataDirectory.FindDomainClass(typeof(nHydrate.Dsl.FunctionParameter)),
                    new EventHandler <Microsoft.VisualStudio.Modeling.ElementDeletedEventArgs>(ElementDeleteHandler));
                #endregion

                #endregion
            }

            _findControl.SetupObjects(_model, _diagram, _docView);
            base.OnDocumentWindowChanged(oldView, newView);
        }
        /// <summary>
        ///     Fired when the current document changes.
        /// </summary>
        /// <param name="oldView">Previous DocData</param>
        /// <param name="newView">Current DocData</param>
        protected override void OnDocumentWindowChanged(ModelingDocView oldView, ModelingDocView newView)
        {
            var newModelingData = newView != null ? newView.DocData : null;
            if (newModelingData != null
                && IsDocumentSupported(newModelingData))
            {
                var store = newModelingData.Store;
                if (store != null)
                {
                    if (_currentDocData != null)
                    {
                        // if we're switching stores, make sure we clear the tree.  Prevents store disposed exceptions if
                        // the currentDocData.Store is disposed before we switch back to it.
                        if (newModelingData.Store != _currentDocData.Store)
                        {
                            // clear tree data, causes event handlers to be removed from our branches.
                            if (_treeProvider != null)
                            {
                                _treeProvider.Root = null;
                            }

                            // clear cached selection
                            _currentSelection = null;
                            _currentBrowseObject = null;
                        }

                        // disable column event handlers
                        _treeControl.RemoveColumnEventHandlers();

                        // unsubscribe from document closing event
                        _currentDocData.DocumentClosing -= OnDocumentClosing;
                    }

                    // enable column event handlers
                    _treeControl.AddColumnEventHandlers();

                    // subscribe to document closing event
                    newModelingData.DocumentClosing += OnDocumentClosing;

                    // cache the doc data, so we can unsubscribe properly.  We cannot
                    // unsubscribe using oldView.DocData, because we may get an OnDocumentWindowChanged(oldModelingData, null) 
                    // just prior to a document close.  In that case, we'd unsubscribe too early, and not clean up properly
                    // in OnDocumentClosed.  Instead we wait until either we get a new supported document, or the old one closes.
                    _currentDocData = newModelingData;
                }
            }
            else
            {
                // it's possible that the oldView is not some docData we support, in that case, don't do anything
                var oldModelingData = oldView != null ? oldView.DocData : null;
                if (oldModelingData != null
                    && IsDocumentSupported(oldModelingData))
                {
                    // Null or unsupported view, clear our selection context.  Note that we leave the tree populated
                    // here so that in the common case of switching back and forth between designer and code, we 
                    // don't lose selection/expansion state in the tree.  We also clear/save the selection context,
                    // because we don't want to push anything to the property browser while the watermark is showing.
                    _currentBrowseObject = PrimarySelection;
                    SetSelectedComponents(new object[] { });
                    if (_containerControl != null)
                    {
                        _containerControl.WatermarkVisible = true;
                    }
                }
            }
        }