public override void Run()
        {
            Guard.ObjectIsInstanceOfType(Owner, typeof(ISelection), "Owner");
            Guard.ObjectIsInstanceOfType(Owner, typeof(IObjectAware), "Owner");
            var selection   = (ISelection)Owner;
            var objectAware = (IObjectAware)Owner;
            ObjectController objectController = (ObjectController)this.Owner;

            Guid selectedId = Guid.Empty;
            var  parameters = new ActionParameters(objectAware.ObjectName, selectedId, ViewShowType.Show)
            {
                { "WorkingMode", _workMode }
            };
            var            controllerName   = objectAware.ObjectName;
            BaseController filterController =
                objectController.Context.ControllerFinder.FindController <BaseController>("BaseControllerList");

            if (filterController != null)
            {
                Guid?projectId   = filterController.GetSelectedFilterProjectId();
                Guid?memberId    = filterController.GetSelectedMemberId();
                Guid?iterationId = filterController.GetSelectedIterationId();
                parameters.Add("ProjectId", projectId);
                parameters.Add("MemberId", memberId);
                parameters.Add("IterationId", iterationId);
            }
            App.Instance.Invoke(controllerName, "Detail", parameters);
        }
        private void LoadMainView(string dockPath, ActionParameters parameters)
        {
            var viewDescriptors = AddInTree.BuildItems <object>(dockPath, this, false).OfType <ViewDescriptor>().ToList();

            if (!viewDescriptors.Any())
            {
                throw new Exception(string.Format("{0} doesn't contains any view, please check it", dockPath));
            }
            if (viewDescriptors.Count > 1 && !viewDescriptors.Any(c => c.Codon.Properties.Contains("MainView")))
            {
                throw new Exception(string.Format("One screen only supprt one view, {0} contains more then one view, please check it", dockPath));
            }
            var mainViewDescriptor = viewDescriptors[0];

            if (viewDescriptors.Any(c => c.Codon.Properties.Contains("MainView")))
            {
                mainViewDescriptor = viewDescriptors.Where(c => c.Codon.Properties.Contains("MainView")).First();
            }
            if (!mainViewDescriptor.Codon.Properties.Contains("controller"))
            {
                throw new Exception(string.Format("{0}/{1} doesn't contains controller property, please check it", dockPath, mainViewDescriptor.Id));
            }
            _mainController             = ControllerFactory.CreateController(mainViewDescriptor.Codon.Properties["controller"]);
            _mainController.WorkSpaceID = this.ID;
            _mainController.Context     = this._workspaceContext;
            this.LoadCommands();

            var ribbonPath = BasePath + "/Ribbon";

            if (AddInTree.ExistsTreeNode(ribbonPath))
            {
                RibbonManager.AddItemsToMenu(ribbon, _mainController, ribbonPath, this._commandManager);
            }
            parameters.Add("ribbonControl", this.ribbon);
            ActionResult = new ActionInvoker().Invoke(_mainController, null, parameters) as IActionResult;
            var result = ActionResult as IPartialViewResult;

            if (result == null)
            {
                return;
            }
            result.View.ViewName = mainViewDescriptor.Codon.Id;
            var mainControl = (Control)result.View;

            if (viewDescriptors.Count > 1)
            {
                LoadSubViews(viewDescriptors.Where(c => !c.Codon.Properties.Contains("MainView")).ToList(), dockPath, parameters, mainControl);
            }
            mainControl.Dock = DockStyle.Fill;
            AddView(result.View);
            this.Controls.Add(mainControl);
            ActiveView = result.View;
        }
Esempio n. 3
0
        public override void Run()
        {
            if (!(Owner is ObjectController))
            {
                return;
            }
            ObjectController objectController = (ObjectController)Owner;
            string           objectName       = objectController.ObjectName;
            Guid             selectedId       = Guid.Empty;
            IObjectSpace     objectSpace      = new ODataObjectSpace();

            selectedId = objectSpace.GetObjectId(objectName, objectController.SelectedObject);
            var parameters = new ActionParameters(objectName, selectedId, ViewShowType.Show);

            if (Owner is NoteController)
            {
                parameters.Add("ParentObjectName", ((NoteController)Owner).ParentObjectName);
            }
            App.Instance.Invoke("NoteDetail", "NoteAction", parameters);
        }