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); } } } }
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, 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; } }