Exemple #1
0
 public MediaViewItemAction(MediaViewActionExtension extension)
 {
     Caption     = extension.Caption;
     Sort        = extension.Sort;
     _action     = extension.Action;
     Restriction = _action as IUserRestriction;
     if (Restriction != null)
     {
         Restriction.RestrictionGroup = extension.RestrictionGroup;
     }
     Deferred = _action is IDeferredMediaViewAction;
 }
Exemple #2
0
        public void BuildExtensions()
        {
            if (_mediaActionPluginItemStateTracker != null)
            {
                return;
            }

            _mediaActionPluginItemStateTracker = new FixedItemStateTracker("MediaItemsActionModel - Extension registration");

            IPluginManager pluginManager = ServiceRegistration.Get <IPluginManager>();

            foreach (PluginItemMetadata itemMetadata in pluginManager.GetAllPluginItemMetadata(MediaItemActionBuilder.MEDIA_EXTENSION_PATH))
            {
                try
                {
                    MediaItemActionExtension mediaExtension = pluginManager.RequestPluginItem <MediaItemActionExtension>(
                        MediaItemActionBuilder.MEDIA_EXTENSION_PATH, itemMetadata.Id, _mediaActionPluginItemStateTracker);
                    if (mediaExtension == null)
                    {
                        ServiceRegistration.Get <ILogger>().Warn("Could not instantiate Media extension with id '{0}'", itemMetadata.Id);
                    }
                    else
                    {
                        Type extensionClass = mediaExtension.ExtensionClass;
                        if (extensionClass == null)
                        {
                            throw new PluginInvalidStateException("Could not find class type for extension {0}", mediaExtension.Caption);
                        }
                        IMediaItemAction action = Activator.CreateInstance(extensionClass) as IMediaItemAction;
                        if (action == null)
                        {
                            throw new PluginInvalidStateException("Could not create IMediaItemAction instance of class {0}", extensionClass);
                        }

                        mediaExtension.Action = action;
                        _actions.Add(new MediaListItemAction(mediaExtension));
                    }
                }
                catch (PluginInvalidStateException e)
                {
                    ServiceRegistration.Get <ILogger>().Warn("Cannot add Media extension with id '{0}'", e, itemMetadata.Id);
                }
            }
            foreach (PluginItemMetadata itemMetadata in pluginManager.GetAllPluginItemMetadata(MediaViewActionBuilder.MEDIA_EXTENSION_PATH))
            {
                try
                {
                    MediaViewActionExtension mediaExtension = pluginManager.RequestPluginItem <MediaViewActionExtension>(
                        MediaViewActionBuilder.MEDIA_EXTENSION_PATH, itemMetadata.Id, _mediaActionPluginItemStateTracker);
                    if (mediaExtension == null)
                    {
                        ServiceRegistration.Get <ILogger>().Warn("Could not instantiate MediaView extension with id '{0}'", itemMetadata.Id);
                    }
                    else
                    {
                        Type extensionClass = mediaExtension.ExtensionClass;
                        if (extensionClass == null)
                        {
                            throw new PluginInvalidStateException("Could not find class type for extension {0}", mediaExtension.Caption);
                        }
                        IMediaViewAction action = Activator.CreateInstance(extensionClass) as IMediaViewAction;
                        if (action == null)
                        {
                            throw new PluginInvalidStateException("Could not create IMediaViewAction instance of class {0}", extensionClass);
                        }

                        mediaExtension.Action = action;
                        _actions.Add(new MediaViewItemAction(mediaExtension));
                    }
                }
                catch (PluginInvalidStateException e)
                {
                    ServiceRegistration.Get <ILogger>().Warn("Cannot add MediaView extension with id '{0}'", e, itemMetadata.Id);
                }
            }
        }