示例#1
0
        public void RunAction(TrustContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException(nameof(context));
            }

            Copy(context.Trust.Purse);
        }
示例#2
0
        public bool CheckCompatibility(TrustContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException(nameof(context));
            }

            return(true);
        }
示例#3
0
        public Form GetForm(TrustContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException(nameof(context));
            }

            return(TrustDisplayHelper.CreateForm(context, context.Trust));
        }
        public Form GetForm(TrustContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException(nameof(context));
            }

            return(GetForm(context, context.Trust.MasterIdentifier, true));
        }
示例#5
0
        public void IsTrusted(TrustContext context)
        {
            List<ITrustFilter> filters;
            if (!_trustFilters.TryGetValue(context.GetType(), out filters))
            {
                //no filters
                return;
            }

            bool failedTrust = filters
                .Where(trustFilter => trustFilter.CanHandle(context))
                .Any(trustFilter => !trustFilter.IsTrusted(context));

            if(failedTrust)
            {
                throw new FailedTrustException(context);
            }
        }
        public Control GetScreen(ScreenContainerContext context)
        {
            _context = context ?? throw new ArgumentNullException(nameof(context));

            var origin =
                new AccountListScreenOrigin(context, ExtensionCatalog.TrustsScreen)
            {
                MenuItemsTagName  = ExtensionCatalog.Tags.TrustExtension,
                CommandBarTagName = ExtensionCatalog.Tags.TrustsScreenExtension
            };

            var template = AccountDisplayHelper.LoadListScreenTemplate(origin);

            _screen = new ListScreen
            {
                Dock = DockStyle.Fill
            };

            ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, _screen);

            EventBroker.TrustChanged += EventBrokerOnTrustChanged;

            _screen.Disposed += (sender, args) =>
            {
                EventBroker.TrustChanged -= EventBrokerOnTrustChanged;
            };

            _screen.ApplyTemplate(template);

            // Команда Refresh
            _screen.RefreshCallback += () => SelectTrusts(true);

            _screen.MenuItemResolver = (entity, command) =>
            {
                var trust = _screen.CurrentEntity as ITrust;

                if (null == trust)
                {
                    return(false);
                }

                var trustContext = new TrustContext(context, trust);

                if (command.Equals(ExtensionCatalog.CopyPurseNumber))
                {
                    return(true);
                }

                var formProvider = context.ExtensionManager.TryGetTrustFormProvider(command);
                return(formProvider?.CheckCompatibility(trustContext) ?? false);
            };

            // Обработка событий.
            _screen.ServiceCommand += (sender, args) =>
            {
                string command = args.Command;

                if (null == command)
                {
                    throw new InvalidOperationException("null == command");
                }

                switch (command)
                {
                case "BeginRefresh":
                    context.ScreenContainer.OnStartProgress();
                    break;

                case "EndRefresh":
                    context.ScreenContainer.OnStopProgress();
                    break;

                default:
                {
                    var trust = args.Argument as ITrust;

                    // Кнопки
                    if (null == trust)
                    {
                        var formProvider =
                            context.ExtensionManager.TryGetTopFormProvider(command);
                        formProvider?.GetForm(context).Show(context.ScreenContainer);
                    }
                    else
                    {
                        if (command.Equals(TunableList.CellMouseDoubleClickCommandName))
                        {
                            command = ExtensionCatalog.UpdateTrust;
                        }

                        var trustContext = new TrustContext(context, trust);

                        // Системная
                        if (command.Equals(ExtensionCatalog.CopyPurseNumber))
                        {
                            var actionProvider = context.ExtensionManager.TryGetTrustActionProvider(command);
                            actionProvider?.RunAction(trustContext);
                        }
                        else
                        {
                            var formProvider = context.ExtensionManager.TryGetTrustFormProvider(command);
                            formProvider?.GetForm(trustContext).Show(context.ScreenContainer);
                        }
                    }
                }
                break;
                }
            };

            _screen.DisplayContent(SelectTrusts(false));

            return(_screen);
        }
 public FailedTrustException(TrustContext context)
 {
     Context = context;
 }