internal RegionItem(Region region, object item, Control hostControl) { Verify.ArgumentNotNull(region, "region", out _region); Verify.ArgumentNotNull(item, "item", out _item); Verify.ArgumentNotNull(hostControl, "hostControl", out _hostControl); _hostControl.Tag = this; _clientControl = item as Control; _task = item as UipTask; if (_task != null) { _viewManager = new ViewManager(_hostControl); _task.ServiceContainer.RegisterInstance<IRegion>(_region); _task.ServiceContainer.RegisterInstance<IRegionInfo>(this); _task.TaskComplete += Task_TaskComplete; UpdateRegionInfo(_task); } else if (_clientControl != null) { Form form = _clientControl as Form; if (form != null) { form.TopLevel = false; form.FormBorderStyle = FormBorderStyle.None; } UpdateRegionInfo(_clientControl); _hostControl.Controls.Add(_clientControl); _clientControl.Dock = DockStyle.Fill; _clientControl.Visible = true; } else { string message = String.Format("Cannot add object of type {0} to a Windows Forms region", item.GetType().FullName); Log.Error(message); throw new ArgumentException(message); } }
private void RunMockAppHelper(UipTask task, FakeViewDeck viewManager) { Assert.IsNotNull(task); Assert.IsInstanceOfType(typeof(MockState), task.GetStateObject()); var state = (MockState)task.GetStateObject(); task.Start(viewManager); task.TaskComplete += task_TaskComplete; Assert.AreEqual("Node1", task.CurrentNode.Name); Assert.IsNotNull(task.CurrentController); Assert.IsInstanceOf<MockController1>(task.CurrentController); Assert.IsNotNull(viewManager.VisibleView); Assert.IsInstanceOf<MockView1>(viewManager.VisibleView); var view1 = (MockView1)viewManager.VisibleView; view1.PushNextButton(); // Should be in Node2 Assert.AreEqual("Node2", task.CurrentNode.Name); Assert.IsNotNull(task.CurrentController); Assert.IsInstanceOfType(typeof(MockController2), task.CurrentController); Assert.IsNotNull(viewManager.VisibleView); Assert.IsInstanceOfType(typeof(MockView2), viewManager.VisibleView); var view2 = (MockView2)viewManager.VisibleView; view2.PushNextButton(); // Should be in Node3 Assert.AreEqual("Node3", task.CurrentNode.Name); Assert.IsNotNull(task.CurrentController); Assert.IsInstanceOfType(typeof(MockController2), task.CurrentController); Assert.IsNotNull(viewManager.VisibleView); Assert.IsInstanceOfType(typeof(MockView1), viewManager.VisibleView); view1 = (MockView1)viewManager.VisibleView; view1.PushNextButton(); // Should navigate to NavigateInViewConstructorNode and then straight to Node1 Assert.AreEqual("Node1", task.CurrentNode.Name); Assert.IsNotNull(task.CurrentController); Assert.IsInstanceOfType(typeof(MockController1), task.CurrentController); Assert.IsNotNull(viewManager.VisibleView); Assert.IsInstanceOfType(typeof(MockView1), viewManager.VisibleView); view1 = (MockView1)viewManager.VisibleView; Assert.IsFalse(state.SetByController3); view1.PushBackButton(); Assert.IsTrue(state.SetByController3); Assert.AreEqual("Node3", task.CurrentNode.Name); Assert.IsNotNull(task.CurrentController); Assert.IsInstanceOfType(typeof(MockController2), task.CurrentController); Assert.IsNotNull(viewManager.VisibleView); Assert.IsInstanceOfType(typeof(MockView1), viewManager.VisibleView); view1.PushNextButton(); Assert.AreEqual("Node1", task.CurrentNode.Name); Assert.IsTrue(task.IsRunning); Assert.IsFalse(task.IsComplete); Assert.IsFalse(_taskCompleted); // Should navigate to NavigateInViewLoadEvent and then straight to Node2 view1.PushNavigateInViewLoadButton(); Assert.AreEqual("Node2", task.CurrentNode.Name); view2 = (MockView2) viewManager.VisibleView; view2.PushBackButton(); Assert.AreEqual("Node1", task.CurrentNode.Name); view1 = (MockView1) viewManager.VisibleView; view1.PushButtonForView5(); Assert.AreEqual("Node5", task.CurrentNode.Name); var view5 = (MockView5) viewManager.VisibleView; view5.PushBackButton(); Assert.AreEqual("Node1", task.CurrentNode.Name); view1 = (MockView1)viewManager.VisibleView; view1.PushEndButton(); Assert.IsTrue(_taskCompleted); Assert.IsTrue(task.IsComplete); Assert.IsFalse(task.IsRunning); }
public UipNavigator(UipTask task) { _task = task; }