public void RunAction(TrustContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } Copy(context.Trust.Purse); }
public bool CheckCompatibility(TrustContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } return(true); }
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)); }
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; }