public void IDocumentViewModelCloseTest() { EnqueueShowWindow(); IDocumentManagerService service = null; bool close = false; bool closeChecked = false; IDocument document = null; EnqueueCallback(() => { WindowedDocumentUIService windowedDocumentUIService = new WindowedDocumentUIService(); Interaction.GetBehaviors(Window).Add(windowedDocumentUIService); service = windowedDocumentUIService; TestDocumentViewModel viewModel = new TestDocumentViewModel(() => { closeChecked = true; return close; }); document = service.CreateDocument("EmptyView", viewModel); document.Show(); }); EnqueueWindowUpdateLayout(); EnqueueCallback(() => { document.DestroyOnClose = false; close = false; closeChecked = false; document.Close(false); Assert.IsTrue(closeChecked); Assert.IsTrue(service.Documents.Contains(document)); close = true; closeChecked = false; document.Close(false); Assert.IsTrue(closeChecked); document.Show(); }); EnqueueWindowUpdateLayout(); EnqueueCallback(() => { document.DestroyOnClose = true; close = false; closeChecked = false; document.Close(false); Assert.IsTrue(closeChecked); Assert.IsTrue(service.Documents.Contains(document)); close = true; closeChecked = false; document.Close(false); Assert.IsTrue(closeChecked); Assert.IsFalse(service.Documents.Contains(document)); }); EnqueueTestComplete(); }
public override IRootDock CreateLayout() { var document1 = new TestDocumentViewModel { Id = "Document1", Title = "Document1" }; var document2 = new TestDocumentViewModel { Id = "Document2", Title = "Document2" }; var leftTopTool1 = new LeftTopTool1ViewModel { Id = "LeftTop1", Title = "LeftTop1" }; var leftTopTool2 = new LeftTopTool2ViewModel { Id = "LeftTop2", Title = "LeftTop2" }; var leftBottomTool1 = new LeftBottomTool1ViewModel { Id = "LeftBottom1", Title = "LeftBottom1" }; var leftBottomTool2 = new LeftBottomTool2ViewModel { Id = "LeftBottom2", Title = "LeftBottom2" }; var rightTopTool1 = new RightTopTool1ViewModel { Id = "RightTop1", Title = "RightTop1" }; var rightTopTool2 = new RightTopTool2ViewModel { Id = "RightTop2", Title = "RightTop2" }; var rightBottomTool1 = new RightBottomTool1ViewModel { Id = "RightBottom1", Title = "RightBottom1" }; var rightBottomTool2 = new RightBottomTool2ViewModel { Id = "RightBottom2", Title = "RightBottom2" }; var documentDock = new DocumentDock { Id = "DocumentsPane", Title = "DocumentsPane", Proportion = double.NaN, ActiveDockable = document1, VisibleDockables = CreateList <IDockable> ( document1, document2 ) }; documentDock.CanCreateDocument = true; documentDock.CreateDocument = ReactiveCommand.Create(() => { var index = documentDock.VisibleDockables?.Count + 1; var document = new TestDocumentViewModel { Id = $"Document{index}", Title = $"Document{index}" }; this.AddDockable(documentDock, document); this.SetActiveDockable(document); this.SetFocusedDockable(documentDock, document); }); var mainLayout = new ProportionalDock { Id = "MainLayout", Title = "MainLayout", Proportion = double.NaN, Orientation = Orientation.Horizontal, ActiveDockable = null, VisibleDockables = CreateList <IDockable> ( new ProportionalDock { Id = "LeftPane", Title = "LeftPane", Proportion = double.NaN, Orientation = Orientation.Vertical, ActiveDockable = null, VisibleDockables = CreateList <IDockable> ( new ToolDock { Id = "LeftPaneTop", Title = "LeftPaneTop", Proportion = double.NaN, ActiveDockable = leftTopTool1, VisibleDockables = CreateList <IDockable> ( leftTopTool1, leftTopTool2 ), Alignment = Alignment.Left, GripMode = GripMode.Visible }, new SplitterDockable() { Id = "LeftPaneTopSplitter", Title = "LeftPaneTopSplitter" }, new ToolDock { Id = "LeftPaneBottom", Title = "LeftPaneBottom", Proportion = double.NaN, ActiveDockable = leftBottomTool1, VisibleDockables = CreateList <IDockable> ( leftBottomTool1, leftBottomTool2 ), Alignment = Alignment.Left, GripMode = GripMode.Visible } ) }, new SplitterDockable() { Id = "LeftSplitter", Title = "LeftSplitter" }, documentDock, new SplitterDockable() { Id = "RightSplitter", Title = "RightSplitter" }, new ProportionalDock { Id = "RightPane", Title = "RightPane", Proportion = double.NaN, Orientation = Orientation.Vertical, ActiveDockable = null, VisibleDockables = CreateList <IDockable> ( new ToolDock { Id = "RightPaneTop", Title = "RightPaneTop", Proportion = double.NaN, ActiveDockable = rightTopTool1, VisibleDockables = CreateList <IDockable> ( rightTopTool1, rightTopTool2 ), Alignment = Alignment.Right, GripMode = GripMode.Visible }, new SplitterDockable() { Id = "RightPaneTopSplitter", Title = "RightPaneTopSplitter" }, new ToolDock { Id = "RightPaneBottom", Title = "RightPaneBottom", Proportion = double.NaN, ActiveDockable = rightBottomTool1, VisibleDockables = CreateList <IDockable> ( rightBottomTool1, rightBottomTool2 ), Alignment = Alignment.Right, GripMode = GripMode.Visible } ) } ) }; var mainView = new MainViewModel { Id = "Main", Title = "Main", ActiveDockable = mainLayout, VisibleDockables = CreateList <IDockable>(mainLayout) }; var root = CreateRootDock(); root.Id = "Root"; root.Title = "Root"; root.ActiveDockable = mainView; root.DefaultDockable = mainView; root.VisibleDockables = CreateList <IDockable>(mainView); _documentDock = documentDock; return(root); }