示例#1
0
        public void LoadValueFromFile()
        {
            string assemblyFileName   = ViewModelFactory.GetSourceFileNameFromUser("Assembly files|*.dll;*.exe", "All files|*.*");
            var    assembly           = System.Reflection.Assembly.ReflectionOnlyLoadFrom(assemblyFileName);
            var    assemblyDescriptor = DataContext.GetQuery <Assembly>().SingleOrDefault(a => a.Name == assembly.FullName);

            if (assemblyDescriptor == null)
            {
                assemblyDescriptor      = DataContext.Create <Assembly>();
                assemblyDescriptor.Name = assembly.FullName;
            }

            this.Value = DataObjectViewModel.Fetch(ViewModelFactory, DataContext, ViewModelFactory.GetWorkspace(DataContext), assemblyDescriptor);
        }
示例#2
0
        private DataObjectViewModelProxy GetProxy(IDataObject obj)
        {
            DataObjectViewModelProxy result;

            if (!_proxyCache.TryGetValue(obj, out result))
            {
                result = new DataObjectViewModelProxy()
                {
                    Object = DataObjectViewModel.Fetch(ViewModelFactory, DataContext, ViewModelFactory.GetWorkspace(DataContext), obj)
                };
                _proxyCache[obj] = result;
            }
            return(result);
        }
示例#3
0
        /// <summary>
        /// Show a foreign model by finding and creating the equivalent model on the local DataContext.
        /// </summary>
        /// <param name="dataObject"></param>
        /// <param name="requestedKind"></param>
        /// <returns></returns>
        public DataObjectViewModel ShowForeignModel(DataObjectViewModel dataObject, Zetbox.App.GUI.ControlKind requestedKind)
        {
            if (dataObject == null || dataObject.Object == null)
            {
                return(null);
            }

            var other = dataObject.Object;
            var here  = DataContext.Find(DataContext.GetInterfaceType(other), other.ID);
            var vm    = DataObjectViewModel.Fetch(ViewModelFactory, DataContext, this, here);

            SelectedItem     = vm;
            vm.RequestedKind = requestedKind;
            AddItem(vm);
            return(vm);
        }
示例#4
0
        private void CreateItem(ObjectClass dtType)
        {
            var isSimpleObject = dtType.IsSimpleObject;

            var newCtx = isSimpleObject ? DataContext : ctxFactory();
            var newObj = newCtx.Create(DataContext.GetInterfaceType(dtType.GetDataType()));

            OnObjectCreated(newObj);

            if (!isSimpleObject)
            {
                var newWorkspace = ViewModelFactory.CreateViewModel <ObjectEditorWorkspace.Factory>().Invoke(newCtx, null);
                newWorkspace.ShowForeignModel(DataObjectViewModel.Fetch(ViewModelFactory, newCtx, newWorkspace, newObj), RequestedEditorKind);
                ViewModelFactory.ShowModel(newWorkspace, RequestedWorkspaceKind, true);
            }
            else if (Listener != null)
            {
                Listener.Refresh();
            }
        }
示例#5
0
        public DataObjectViewModel GetDataObject(IZetboxContext ctx)
        {
            if (ctx == null)
            {
                throw new ArgumentNullException("ctx");
            }

            IDataObject obj;

            if (ID <= Helper.INVALIDID)
            {
                obj = ctx.Create(ZetboxContextManagerModule.IftFactory(Type.GetSystemType()));
                ID  = obj.ID;
            }
            else
            {
                obj = (IDataObject)ctx.Find(ZetboxContextManagerModule.IftFactory(Type.GetSystemType()), ID);
            }

            return(DataObjectViewModel.Fetch(ZetboxContextManagerModule.ViewModelFactory, ctx, null, obj));
        }
 public void Edit()
 {
     ViewModelFactory.ShowModel(DataObjectViewModel.Fetch(ViewModelFactory, DataContext, ViewModelFactory.GetWorkspace(DataContext), Action), true);
 }
示例#7
0
        public JavaScriptObjectMoniker(IZetboxContext ctx, IDataObject obj)
        {
            DataObjectViewModel m = DataObjectViewModel.Fetch(ZetboxContextManagerModule.ViewModelFactory, ctx, null, obj);

            Init(m);
        }
示例#8
0
        public static void AddPartyRole(Zetbox.Basic.Parties.Party obj, MethodReturnEventArgs <PartyRole> e)
        {
            var ctx        = obj.Context;
            var candidates = new List <RoleSelectionViewModel>();

            // Common first
            if (!obj.PartyRole.Any(r => r is Customer))
            {
                candidates.Add(_vmf.CreateViewModel <RoleSelectionViewModel.Factory>().Invoke(ctx, null, typeof(Customer).GetObjectClass(_frozenCtx)));
            }

            ObjectClass clsPartyRole;

            if (obj is Person)
            {
                clsPartyRole = (ObjectClass)typeof(PersonRole).GetObjectClass(_frozenCtx);

                if (!obj.PartyRole.Any(r => r is Employee))
                {
                    candidates.Add(_vmf.CreateViewModel <RoleSelectionViewModel.Factory>().Invoke(ctx, null, typeof(Employee).GetObjectClass(_frozenCtx)));
                }
            }
            else if (obj is Organization)
            {
                clsPartyRole = (ObjectClass)typeof(OrganizationRole).GetObjectClass(_frozenCtx);

                if (!obj.PartyRole.Any(r => r is Supplier))
                {
                    candidates.Add(_vmf.CreateViewModel <RoleSelectionViewModel.Factory>().Invoke(ctx, null, typeof(Supplier).GetObjectClass(_frozenCtx)));
                }
                if (!obj.PartyRole.Any(r => r is InternalOrganization))
                {
                    candidates.Add(_vmf.CreateViewModel <RoleSelectionViewModel.Factory>().Invoke(ctx, null, typeof(InternalOrganization).GetObjectClass(_frozenCtx)));
                }
            }
            else
            {
                throw new InvalidOperationException("Party is of an unknown type");
            }

            List <ObjectClass> subClasses = new List <ObjectClass>();

            clsPartyRole.CollectChildClasses(subClasses, includeAbstract: false);
            // all other
            foreach (var roleCls in subClasses.Except(candidates.Select(c => c.TargetPropClass))
                     .Except(obj.PartyRole.Select(c => c.GetObjectClass(_frozenCtx)))
                     .OrderBy(r => r.Name)
                     .ToList())
            {
                candidates.Add(_vmf.CreateViewModel <RoleSelectionViewModel.Factory>().Invoke(ctx, null, roleCls));
            }

            var selectClass = _vmf
                              .CreateViewModel <SimpleSelectionTaskViewModel.Factory>()
                              .Invoke(
                ctx,
                null,
                candidates,
                (chosenClass) =>
            {
                if (chosenClass != null && chosenClass.Count() == 1)
                {
                    var propCls = ((RoleSelectionViewModel)chosenClass.Single()).TargetPropClass;
                    var ifType  = propCls.GetDescribedInterfaceType();
                    var newRole = (PartyRole)ctx.Create(ifType);
                    obj.PartyRole.Add(newRole);
                    var partyVmdl = (PartyViewModel)DataObjectViewModel.Fetch(_vmf, ctx, null, obj);
                    partyVmdl.UpdateRoleTabs(newRole);
                    e.Result = newRole;         // show result, UpdateTabs cannot show the new tab yet
                }
            },
                null);

            selectClass.RequestedKind = NamedObjects.Gui.ControlKinds.Zetbox_App_GUI_DataObjectSelectionTaskSimpleKind.Find(_frozenCtx);
            _vmf.ShowDialog(selectClass);
        }