Example #1
0
        public IRulePresenter Create(IRulePresenter parent)
        {
            IRulePresenter rule = null;

            if (parent == null)
            {
                rule      = containerGetter.Get <GeneratorRulePresenter>();
                rule.Name = "Fake Data Generator";
            }
            else if (parent.RuleType == RulePresenterType.Operation)
            {
                rule      = containerGetter.Get <OperationRulePresenter>();
                rule.Name = "New sub-operation";
            }
            else if (parent.RuleType == RulePresenterType.Attribute)
            {
                rule      = containerGetter.Get <OperationRulePresenter>();
                rule.Name = "New operation";
            }
            else if (parent.RuleType == RulePresenterType.Entity)
            {
                rule      = containerGetter.Get <AttributeRulePresenter>();
                rule.Name = "New attribute rule";
            }
            else if (parent.RuleType == RulePresenterType.Root)
            {
                rule      = containerGetter.Get <EntityRulePresenter>();
                rule.Name = "Entity rule";
            }

            if (rule != null)
            {
                var ruleNode     = containerGetter.Get <ITreeNodeView>();
                var ruleEditView = containerGetter.Get <IRuleEditView>();
                rule.Init(ruleNode, this, eventAggregator, ruleEditView, ruleExecutorFactory, rulePReviewView);
                return(rule);
            }

            throw new ArgumentException("Not supported parent type", nameof(parent));
        }