示例#1
0
 public override void ExecuteRule(LogicRuleInfo <IAdditionalViewControlsRule> info, ExecutionContext executionContext)
 {
     if (Frame != null)
     {
         var viewSiteTemplate = Frame.Template as IViewSiteTemplate;
         if (viewSiteTemplate == null)
         {
             return;
         }
         object viewSiteControl = GetContainerControl(viewSiteTemplate, info.Rule);
         if (viewSiteControl != null)
         {
             IAdditionalViewControlsRule additionalViewControlsRule = info.Rule;
             var                    calculator            = new AdditionalViewControlsProviderCalculator(additionalViewControlsRule, info.View.ObjectTypeInfo.Type);
             Type                   controlType           = calculator.ControlsRule.ControlType;
             ICollection            controls              = GetControls(viewSiteControl);
             IAdditionalViewControl additionalViewControl = FindControl(info.Rule, controls);
             if (info.Active && ViewContextIsCorrect(info.Rule))
             {
                 var control = GetControl(controlType, additionalViewControl, info);
                 control.Rule = info.Rule;
                 ReflectionHelper.CreateObject(calculator.ControlsRule.DecoratorType, new[] { info.View, (object)control, info.Rule });
                 if (additionalViewControl == null)
                 {
                     AddControl(control, controls, info);
                     InitializeControl(control, info, calculator, executionContext);
                 }
             }
             else if (additionalViewControl != null)
             {
                 controls.GetType().GetMethod("Remove").Invoke(controls, new[] { additionalViewControl });
             }
         }
     }
 }
        void OnLogicRuleExecute(object sender, LogicRuleExecuteEventArgs logicRuleExecuteEventArgs) {
            var info = logicRuleExecuteEventArgs.LogicRuleInfo;
            var additionalViewControlsRule = info.Rule as IAdditionalViewControlsRule;
            if (Frame != null && additionalViewControlsRule!=null) {
                var viewSiteTemplate = Frame.Template as IViewSiteTemplate;
                if (viewSiteTemplate == null)
                    return;
                
                object viewSiteControl = GetContainerControl(viewSiteTemplate, additionalViewControlsRule);
                if (viewSiteControl != null) {
                    var calculator = new AdditionalViewControlsProviderCalculator(additionalViewControlsRule, info.View.ObjectTypeInfo.Type);
                    Type controlType = calculator.ControlsRule.ControlType;
                    ICollection controls = GetControls(viewSiteControl);
                    IAdditionalViewControl additionalViewControl = FindControl(additionalViewControlsRule, controls);
                    if (info.Active && ViewContextIsCorrect(additionalViewControlsRule)) {

                        var control = GetControl(controlType, additionalViewControl, additionalViewControlsRule);
                        if (control != null) {
                            control.Rule = additionalViewControlsRule;
                            calculator.ControlsRule.DecoratorType.CreateInstance(new[] { info.View, (object)control, additionalViewControlsRule });
                            if (additionalViewControl == null) {
                                InitializeControl(control, additionalViewControlsRule, calculator, logicRuleExecuteEventArgs.ExecutionContext);
                                AddControl(control, controls, info);
                            }
                        }
                    } else if (additionalViewControl != null) {
                        controls.CallMethod("Remove", new object[]{additionalViewControl});
                    }
                }
            }

        }
 protected override object AddControl(object viewSiteControl, object control, LogicRuleInfo<IAdditionalViewControlsRule> info, AdditionalViewControlsProviderCalculator calculator, ExecutionContext context) {
     var value = (Control)control;
     value.Dock = info.Rule.AdditionalViewControlsProviderPosition == AdditionalViewControlsProviderPosition.Bottom ? DockStyle.Bottom : DockStyle.Top;
     Control.ControlCollection collection = ((Control)viewSiteControl).Controls;
     var getControl = (Control) GetControl(collection, control, calculator, info);
     collection.Add(getControl);
     return getControl;
 }
 private object createControl(IAdditionalViewControlsProvider controlProvider, AdditionalViewControlsProviderCalculator calculator)
 {
     object control = null;
     if (calculator.AdditionalViewControlsRuleWrapper.ControlType != null)
         control=Activator.CreateInstance(calculator.AdditionalViewControlsRuleWrapper.ControlType);
     if (control== null)
         control = controlProvider.CreateControl();
     return control;
 }
 protected override object AddControl(object viewSiteControl, object control, LogicRuleInfo<IAdditionalViewControlsRule> additionalViewControlsRule, AdditionalViewControlsProviderCalculator calculator, ExecutionContext context) {
     ControlCollection collection = ((Control)viewSiteControl).Controls;
     object o = GetControl(collection, control, calculator, additionalViewControlsRule);
     ((Control) o).Visible = true;
     if (additionalViewControlsRule.Rule.AdditionalViewControlsProviderPosition == AdditionalViewControlsProviderPosition.Top)
         collection.AddAt(0, (Control)o);
     else
         collection.Add((Control)o);
     return o;
 }
 protected override void InitializeControl(object control, IAdditionalViewControlsRule rule,
                                      AdditionalViewControlsProviderCalculator additionalViewControlsProviderCalculator,
                                      ExecutionContext executionContext) {
     base.InitializeControl(control, rule, additionalViewControlsProviderCalculator, executionContext);
     var value = (Control)control;
     if (rule.Position != Position.DetailViewItem) {
         if (rule.Position == Position.Bottom)
             value.Dock = DockStyle.Bottom;
         else if (rule.Position == Position.Top)
             value.Dock = DockStyle.Top;
     } else {
         value.Dock = DockStyle.Fill;
     }
 }
 public void AddControls(object viewSiteControl)
 {
     foreach (IAdditionalViewControlsProvider controlProvider in controlProviders.Keys){
         var calculator =
             new AdditionalViewControlsProviderCalculator(new AdditionalViewControlsRuleWrapper(controlProvider.View));
         object control = createControl(controlProvider, calculator);
         AdditionalViewControlsProviderPosition position = decorateControl(controlProvider, calculator, control);
         if (control != null){
             DisposeControl(controlProvider);
             AddControlOnTemplate(viewSiteControl, control, position);
             controlProviders[controlProvider] = control;
         }
     }
 }
 private AdditionalViewControlsProviderPosition decorateControl(IAdditionalViewControlsProvider controlProvider,
                                                                AdditionalViewControlsProviderCalculator
                                                                    calculator, object control)
 {
     AdditionalViewControlsProviderPosition position;
     if (calculator.AdditionalViewControlsRuleWrapper.DecoratorType != null)
     {
         var decorator =
             (AdditionalViewControlsProviderDecorator)
             Activator.CreateInstance(calculator.AdditionalViewControlsRuleWrapper.DecoratorType,
                                      new[] {controlProvider.View, control});
         position = decorator.Calculator.AdditionalViewControlsRuleWrapper.AdditionalViewControlsProviderPosition;
     }
     else
         position = controlProvider.DecorateControl(control).Calculator.AdditionalViewControlsRuleWrapper.AdditionalViewControlsProviderPosition;
     return position;
 }
        void OnLogicRuleExecute(object sender, LogicRuleExecuteEventArgs logicRuleExecuteEventArgs)
        {
            var info = logicRuleExecuteEventArgs.LogicRuleInfo;
            var additionalViewControlsRule = info.Rule as IAdditionalViewControlsRule;

            if (Frame != null && additionalViewControlsRule != null)
            {
                var viewSiteTemplate = Frame.Template as IViewSiteTemplate;
                if (viewSiteTemplate == null)
                {
                    return;
                }

                object viewSiteControl = GetContainerControl(viewSiteTemplate, additionalViewControlsRule);
                if (viewSiteControl != null)
                {
                    var                    calculator            = new AdditionalViewControlsProviderCalculator(additionalViewControlsRule, info.View.ObjectTypeInfo.Type);
                    Type                   controlType           = calculator.ControlsRule.ControlType;
                    ICollection            controls              = GetControls(viewSiteControl);
                    IAdditionalViewControl additionalViewControl = FindControl(additionalViewControlsRule, controls);
                    if (info.Active && ViewContextIsCorrect(additionalViewControlsRule))
                    {
                        var control = GetControl(controlType, additionalViewControl, additionalViewControlsRule);
                        if (control != null)
                        {
                            control.Rule = additionalViewControlsRule;
                            calculator.ControlsRule.DecoratorType.CreateInstance(info.View, (object)control, additionalViewControlsRule);
                            if (additionalViewControl == null)
                            {
                                InitializeControl(control, additionalViewControlsRule, calculator, logicRuleExecuteEventArgs.ExecutionContext);
                                AddControl(control, controls, info);
                            }
                        }
                    }
                    else if (additionalViewControl != null)
                    {
                        controls.CallMethod("Remove", new[] { GetControlType() }, additionalViewControl);
                    }
                }
            }
        }
示例#10
0
        protected override void InitializeControl(object control, LogicRuleInfo <IAdditionalViewControlsRule> logicRuleInfo,
                                                  AdditionalViewControlsProviderCalculator additionalViewControlsProviderCalculator,
                                                  ExecutionContext executionContext)
        {
            base.InitializeControl(control, logicRuleInfo, additionalViewControlsProviderCalculator, executionContext);
            var value = (Control)control;

            if (logicRuleInfo.Rule.Position != Position.DetailViewItem)
            {
                if (logicRuleInfo.Rule.Position == Position.Bottom)
                {
                    value.Dock = DockStyle.Bottom;
                }
                else if (logicRuleInfo.Rule.Position == Position.Top)
                {
                    value.Dock = DockStyle.Top;
                }
            }
            else
            {
                value.Dock = DockStyle.Fill;
            }
        }
 protected virtual void InitializeControl(object control, IAdditionalViewControlsRule additionalViewControlsRule, AdditionalViewControlsProviderCalculator calculator, ExecutionContext context) {
     var appeareance = control as ISupportAppeareance;
     if (appeareance != null) {
         var supportAppeareance = appeareance;
         supportAppeareance.BackColor = additionalViewControlsRule.BackColor;
         supportAppeareance.Height = additionalViewControlsRule.Height;
         supportAppeareance.ForeColor = additionalViewControlsRule.ForeColor;
         supportAppeareance.FontStyle = additionalViewControlsRule.FontStyle;
         supportAppeareance.FontSize = additionalViewControlsRule.FontSize;
         supportAppeareance.ImageName = additionalViewControlsRule.ImageName;
     }
 }
        protected virtual void InitializeControl(object control, IAdditionalViewControlsRule additionalViewControlsRule, AdditionalViewControlsProviderCalculator calculator, ExecutionContext context)
        {
            var appeareance = control as ISupportAppeareance;

            if (appeareance != null)
            {
                var supportAppeareance = appeareance;
                supportAppeareance.BackColor = additionalViewControlsRule.BackColor;
                supportAppeareance.Height    = additionalViewControlsRule.Height;
                supportAppeareance.ForeColor = additionalViewControlsRule.ForeColor;
                supportAppeareance.FontStyle = additionalViewControlsRule.FontStyle;
                supportAppeareance.FontSize  = additionalViewControlsRule.FontSize;
                supportAppeareance.ImageName = additionalViewControlsRule.ImageName;
            }
        }
示例#13
0
 protected virtual void InitializeControl(object control, LogicRuleInfo <IAdditionalViewControlsRule> additionalViewControlsRule, AdditionalViewControlsProviderCalculator calculator, ExecutionContext context)
 {
     if (control is ISupportAppeareance)
     {
         var supportAppeareance = ((ISupportAppeareance)control);
         supportAppeareance.BackColor = additionalViewControlsRule.Rule.BackColor;
         supportAppeareance.Height    = additionalViewControlsRule.Rule.Height;
         supportAppeareance.ForeColor = additionalViewControlsRule.Rule.ForeColor;
         supportAppeareance.FontStyle = additionalViewControlsRule.Rule.FontStyle;
         supportAppeareance.FontSize  = additionalViewControlsRule.Rule.FontSize;
     }
 }