/// <summary> /// Constructor. /// </summary> /// <param name="sourceViewModel">View model that triggers the event.</param> /// <param name="viewModelToOpen">View model that needs to be opened.</param> public OpenViewModelEventArgs(BaseDockingViewModel sourceViewModel, BaseDockingViewModel viewModelToOpen) : base(sourceViewModel) { DockingPaneStyle = DockingPaneStyle.Docked; DockingPaneAnchorStyle = DockingPaneAnchorStyle.None; this.ViewModelToOpen = viewModelToOpen; }
/// <summary> /// Constructor. /// </summary> /// <param name="sourceViewModel">View model that triggers the event.</param> /// <param name="viewName">View model name.</param> public ShowViewModelRequestEventArgs(BaseDockingViewModel sourceViewModel, string viewName) : base(sourceViewModel) { DockingPaneStyle = DockingPaneStyle.Docked; DockingPaneAnchorStyle = DockingPaneAnchorStyle.None; this.ViewName = viewName; }
/// <summary> /// Tries to close a specified window.. /// </summary> /// <param name="view"></param> /// <param name="bRemove"></param> public void CloseWindow(IDockableViewModel view, bool bRemove) { string accessKey = this.SelectedShellViewModel.FullFileName; if (this.IsTransientViewModel(view.GetType())) { accessKey = TransientPanesKey; } if (!viewLookup.ContainsKey(accessKey)) { return; } if (viewLookup[accessKey].ContainsKey(view.DockingPaneName)) { ViewLookUp v = viewLookup[view.DockingPaneName][accessKey]; if (v.Pane != null) { (v.Pane.Frame as IVsWindowFrame).CloseFrame((uint)__FRAMECLOSE.FRAMECLOSE_NoSave); } else { view.IsDockingPaneVisible = false; if (this.SelectedShellViewModel.VisibleDocumentPanes.Contains(view)) { this.SelectedShellViewModel.HiddenDocumentPanes.Add(this.SelectedShellViewModel.SelectedDocumentPane); this.SelectedShellViewModel.VisibleDocumentPanes.Remove(this.SelectedShellViewModel.SelectedDocumentPane); } if (this.SelectedShellViewModel.VisibleDocumentPanes.Count == 0) { this.SelectedShellViewModel.SelectedDocumentPane = null; } } // TODO ? if (bRemove) { // remove pane from lookup //this.viewLookup.Remove(view.DockingPaneName); } } if (this.IsTransientViewModel(view.GetType())) { // update all IsDockingPaneVisible foreach (ShellMainViewModel v in this.packageController.AvailableShellVMs.Keys) { BaseDockingViewModel foundVm = v.FindViewModel(view.GetType()); foundVm.IsDockingPaneVisible = false; } } }
private void SetViewModel(ModelToolWindowPane pane, BaseDockingViewModel vm) { if (vm != null) { if (!vm.IsDisposed) { pane.Content.DataContext = vm; return; } } pane.Content.DataContext = null; }
/// <summary> /// Constructor. /// </summary> /// <param name="sourceViewModel">View model that triggers the event.</param> public ShowViewModelRequestEventArgs(BaseDockingViewModel sourceViewModel) : base(sourceViewModel) { DockingPaneStyle = DockingPaneStyle.Docked; DockingPaneAnchorStyle = DockingPaneAnchorStyle.None; }
/// <summary> /// Shows a docking window for a given view. /// If is has been shown before, restore its position. Otherwise dock it to the right side. /// </summary> /// <param name="view">View to dock.</param> /// <param name="dockingStyle">Docking style.</param> /// <param name="dockingAnchorStyle">Docking anchor style. Only usefull for DockingPaneStyle.Docked.</param> /// <param name="dockedInDocumentPane">True if this view should be shown in the document pane window. False otherwise.</param> /// <param name="fullFileName">File name.</param> public virtual void ShowWindow(IDockableViewModel view, DockingPaneStyle dockingStyle, DockingPaneAnchorStyle dockingAnchorStyle, bool dockedInDocumentPane, string fullFileName) { if (!view.IsInitialized) { view.InitializeVM(); } string accessKey = fullFileName; if (this.IsTransientViewModel(view.GetType())) { accessKey = TransientPanesKey; if (viewLookup.ContainsKey(TransientPanesKey)) { if (viewLookup[TransientPanesKey].ContainsKey(view.DockingPaneName)) { ModelToolWindowPane p = viewLookup[TransientPanesKey][view.DockingPaneName].Pane; if (p != null) { if (((IVsWindowFrame)p.Frame).IsVisible() != VSConstants.S_OK) { return; } } } } } if (!viewLookup.ContainsKey(accessKey)) { viewLookup.Add(accessKey, new Dictionary <string, ViewLookUp>()); } if (!viewLookup[accessKey].ContainsKey(view.DockingPaneName)) { if (!dockedInDocumentPane) { int key; if (!this.viewTypeNameLookup.ContainsKey(view.DockingPaneType.FullName)) { key = 0; } else { key = this.viewTypeNameLookup[view.DockingPaneType.FullName].Count; } ModelToolWindowPane window = this.package.FindToolWindow(this.package.GetToolWindowType(view.DockingPaneType), key, true) as ModelToolWindowPane; if ((window == null) || (window.Frame == null)) { throw new NotSupportedException("Can not show window!"); } window.Content.DataContext = view; window.Caption = view.DockingPaneTitle; // subscribe to events window.PaneClosed += new EventHandler(Window_PaneClosed); // get window frame IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame; // add lookup information viewLookup[accessKey][view.DockingPaneName] = new ViewLookUp(view, window); view.IsDockingPaneVisible = true; paneViewLookup.Add(ModelPackage.GetPersistenceSlot(windowFrame), view.DockingPaneName); if (!this.viewTypeNameLookup.ContainsKey(view.DockingPaneType.FullName)) { this.viewTypeNameLookup[view.DockingPaneType.FullName] = new List <string>(); } this.viewTypeNameLookup[view.DockingPaneType.FullName].Add(view.DockingPaneName); // show window windowFrame.Show(); } else { viewLookup[accessKey][view.DockingPaneName] = new ViewLookUp(view); if (accessKey != TransientPanesKey) { this.packageController.AvailableShellVMsReversed[accessKey].VisibleDocumentPanes.Add(view); if (this.packageController.AvailableShellVMsReversed[accessKey].SelectedDocumentPane == null) { this.packageController.AvailableShellVMsReversed[accessKey].SelectedDocumentPane = view; } } else { this.SelectedShellViewModel.VisibleDocumentPanes.Add(view); if (this.SelectedShellViewModel.SelectedDocumentPane == null) { this.SelectedShellViewModel.SelectedDocumentPane = view; } } view.IsDockingPaneVisible = true; } } // show docking window if (!dockedInDocumentPane) { if (viewLookup[accessKey][view.DockingPaneName].Pane != null) { if (((IVsWindowFrame)viewLookup[accessKey][view.DockingPaneName].Pane.Frame).IsVisible() != VSConstants.S_OK) { ((IVsWindowFrame)viewLookup[accessKey][view.DockingPaneName].Pane.Frame).Show(); viewLookup[accessKey][view.DockingPaneName].View.IsDockingPaneVisible = true; } } } else { if (this.SelectedShellViewModel.HiddenDocumentPanes.Contains(view)) { this.SelectedShellViewModel.HiddenDocumentPanes.Remove(view); this.SelectedShellViewModel.VisibleDocumentPanes.Add(view); if (this.SelectedShellViewModel.SelectedDocumentPane == null) { this.SelectedShellViewModel.SelectedDocumentPane = view; } } view.IsDockingPaneVisible = true; } if (this.IsTransientViewModel(view.GetType())) { // update all IsDockingPaneVisible foreach (ShellMainViewModel v in this.packageController.AvailableShellVMs.Keys) { BaseDockingViewModel foundVm = v.FindViewModel(view.GetType()); foundVm.IsDockingPaneVisible = true; } } }
/// <summary> /// Constructor. /// </summary> /// <param name="viewModelToOpen">View model that needs to be opened.</param> public OpenViewModelEventArgs(BaseDockingViewModel viewModelToOpen) : this(null, viewModelToOpen) { }
/// <summary> /// Constructor. /// </summary> /// <param name="sourceViewModel">View model that triggers the event.</param> public BringToFrontViewModelRequestEventArgs(BaseDockingViewModel sourceViewModel) : base(sourceViewModel) { }
/// <summary> /// Constuctor. /// </summary> /// <param name="viewModelStore">The store this view model belongs to.</param> public ModelContextViewModel(ViewModelStore viewModelStore, BaseModelContext baseModelContext, bool isLocked) : base(viewModelStore) { this.modelContext = baseModelContext; this.copyCommand = new DelegateCommand(CopyCommand_Executed, CopyCommand_CanExecute); this.pasteCommand = new DelegateCommand(PasteCommand_Executed, PasteCommand_CanExecute); this.copyAllTreeCommand = new DelegateCommand(CopyAllTreeCommand_Executed, CopyAllTreeCommand_CanExecute); this.copyEmbeddingTreeCommand = new DelegateCommand(CopyEmbeddingTreeCommand_Executed, CopyAllTreeCommand_CanExecute); this.copyReferenceTreeCommand = new DelegateCommand(CopyReferenceTreeCommand_Executed, CopyAllTreeCommand_CanExecute); //this.cutCommand = new DelegateCommand(CutCommand_Executed, CutCommand_CanExecute); this.optimizeCommand = new DelegateCommand(OptimizeCommand_Executed); if (baseModelContext is ModelContext) { ModelContext modelContext = baseModelContext as ModelContext; this.modelTreeViewModel = new ModelTreeViewModel(viewModelStore, this, modelContext.ViewContext.DomainModelTreeView); this.modelTreeViewModel.IsLocked = isLocked; this.diagramViewModel = new DiagramViewModel(viewModelStore, this, modelContext.ViewContext.DiagramView); this.serializationViewModel = new SerializationViewModel(viewModelStore, modelContext.SerializationModel); this.modelContextType = ModelContextViewType.ModelContext; } else if( baseModelContext is ExternModelContext) { ExternModelContext modelContext = baseModelContext as ExternModelContext; if (modelContext.ModelContext != null) { this.AddModelContext(modelContext.ModelContext); } this.EventManager.GetEvent<ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ExternModelContextReferencesModelContext.DomainClassId), true, this.modelContext.Id, new System.Action<ElementAddedEventArgs>(OnModelContextAdded)); this.EventManager.GetEvent<ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ExternModelContextReferencesModelContext.DomainClassId), true, this.modelContext.Id, new System.Action<ElementDeletedEventArgs>(OnModelContextRemoved)); this.EventManager.GetEvent<ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ExternModelContextReferencesModelContext.ExternModelContextDomainRoleId), new System.Action<RolePlayerChangedEventArgs>(OnModelContextChanged)); this.EventManager.GetEvent<ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ExternModelContextReferencesModelContext.ModelContextDomainRoleId), new System.Action<RolePlayerChangedEventArgs>(OnModelContextChanged)); this.modelContextType = ModelContextViewType.ExternModelContext; } else if (baseModelContext is LibraryModelContext) { LibraryModelContext modelContext = baseModelContext as LibraryModelContext; this.modelTreeViewModel = new ModelTreeViewModel(viewModelStore, this, modelContext.ViewContext.DomainModelTreeView); this.modelTreeViewModel.IsLocked = isLocked; this.diagramViewModel = new DiagramViewModel(viewModelStore, this, modelContext.ViewContext.DiagramView); this.modelContextType = ModelContextViewType.LibraryContext; this.serializationViewModel = new SerializationViewModel(viewModelStore, modelContext.SerializationModel); } this.selectedItem = this.ModelTreeViewModel; if( this.ModelContext != null ) this.EventManager.GetEvent<ModelElementPropertyChangedEvent>().Subscribe( this.Store.DomainDataDirectory.GetDomainProperty(BaseModelContext.NameDomainPropertyId), this.ModelContext.Id, new System.Action<ElementPropertyChangedEventArgs>(NamePropertyChanged)); }
/// <summary> /// Constructor. /// </summary> /// <param name="sourceViewModel">View model that triggers the event.</param> /// <param name="bRemove"></param> public CloseViewModelRequestEventArgs(BaseDockingViewModel sourceViewModel, bool bRemove) : base(sourceViewModel) { this.ShouldRemoveVM = bRemove; }
/// <summary> /// Constructor. /// </summary> /// <param name="sourceViewModel">View model that triggers the event.</param> public CloseViewModelRequestEventArgs(BaseDockingViewModel sourceViewModel) : this(sourceViewModel, false) { }