예제 #1
0
        public static ComponentControlWrapper CreateFolder(
            ComponentControlWrapper parent,
            GetOrCreateFolderData getOrCreateFolder)
        {
            if (parent == null)
            {
                throw new ArgumentNullException("parent");
            }
            if (getOrCreateFolder == null)
            {
                throw new ArgumentNullException("getOrCreateFolder");
            }

            var folderType = parent.Client.GetFolderComponentTypeControl();
            var getOrCreateComponentData = new GetOrCreateComponentData(getOrCreateFolder.SystemName, folderType)
            {
                DisplayName = getOrCreateFolder.DisplayName,
                Version     = null
            };


            var controlData = new GetOrCreateComponentControlData(parent, getOrCreateComponentData);

            var wrapper = new ComponentControlWrapper(
                controlData.Parent.ClientInternal,
                controlData.Data.ComponentTypeControl);

            wrapper.GetOrCreateComponentData = controlData;

            wrapper.ControlActivator = new ControlActivator <IComponentControl>(
                wrapper.CreateFolderOnline,
                wrapper.CreateFolderOffline);

            return(wrapper);
        }
예제 #2
0
        public IComponentControl GetComponentControl(Guid id)
        {
            var wrapper = ComponentControlWrapper.GetById(this, id);

            //todo не понятно как вести кэш по ИД
            //return ComponentCache.Add(wrapper);
            return(wrapper);
        }
예제 #3
0
        public static ComponentControlWrapper GetById(Client client, Guid id)
        {
            var type = new ComponentTypeControlOffline(client, "fake");

            var wrapper = new ComponentControlWrapper(client, type);

            wrapper.ControlActivator = new ControlActivator <IComponentControl>(
                () => wrapper.GetByIdOnline(id),
                () => wrapper.GetByIdOffline(id));

            return(wrapper);
        }
예제 #4
0
        public static ComponentControlWrapper GetDefault(Client client)
        {
            var type = new ComponentTypeControlOffline(client, "fake");

            var wrapper = new ComponentControlWrapper(client, type);

            wrapper.ControlActivator = new ControlActivator <IComponentControl>(
                wrapper.GetDefaultControlOnline,
                () => wrapper.GetByIdOffline(Guid.Empty));

            return(wrapper);
        }
예제 #5
0
        public static ComponentControlWrapper CreateRoot(Client client)
        {
            var getTypeData = new GetOrCreateComponentTypeData(SystemComponentType.Root.SystemName);
            var type        = client.GetOrCreateComponentTypeControl(getTypeData);

            var wrapper = new ComponentControlWrapper(client, type);

            wrapper.ControlActivator = new ControlActivator <IComponentControl>(
                wrapper.CreateRootOnline,
                wrapper.CreateRootOffline);

            return(wrapper);
        }
예제 #6
0
 public GetOrCreateComponentControlData(ComponentControlWrapper parent, GetOrCreateComponentData data)
 {
     if (parent == null)
     {
         throw new ArgumentNullException("parent");
     }
     if (data == null)
     {
         throw new ArgumentNullException("data");
     }
     Parent = parent;
     Data   = data;
 }
예제 #7
0
 public IComponentControl GetDefaultComponentControl()
 {
     if (_defaultComponentControl == null)
     {
         lock (typeof(Client))
         {
             if (_defaultComponentControl == null)
             {
                 _defaultComponentControl = ComponentControlWrapper.GetDefault(this);
             }
         }
     }
     return(_defaultComponentControl);
 }
예제 #8
0
 public IComponentControl GetRootComponentControl()
 {
     if (_rootComponentControl == null)
     {
         lock (typeof(Client))
         {
             if (_rootComponentControl == null)
             {
                 _rootComponentControl = ComponentControlWrapper.CreateRoot(this);
             }
         }
     }
     return(_rootComponentControl);
 }
예제 #9
0
 internal UnitTestControlWrapper(
     ComponentControlWrapper component,
     IUnitTestTypeControl type,
     string systemName,
     GetOrCreateUnitTestControlData createData)
     : base(component, type, systemName)
 {
     if (createData == null)
     {
         throw new ArgumentNullException("createData");
     }
     CreateData       = createData;
     ControlActivator = new ControlActivator <IUnitTestControl>(CreateOnlineControlOrNull, CreateOfflineControl);
 }
 internal GetOrCreateUnitTestControlData(
     ComponentControlWrapper component,
     GetOrCreateUnitTestData data)
 {
     if (component == null)
     {
         throw new ArgumentNullException("component");
     }
     if (data == null)
     {
         throw new ArgumentNullException("data");
     }
     Component = component;
     Data      = data;
 }
예제 #11
0
        internal override IComponentControl GetOrCreateChildComponentControl(GetOrCreateComponentControlData data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            lock (this)
            {
                var wrapper = new ComponentControlWrapper(data.Parent.ClientInternal, data.Data.ComponentTypeControl);
                wrapper.GetOrCreateComponentData = data;

                wrapper.ControlActivator = new ControlActivator <IComponentControl>(
                    wrapper.CreateComponentOnline,
                    wrapper.CreateComponentOffline);

                return(wrapper);
            }
        }