public List<IWidgetHost> LoadWidgets(EventBrokerService eventBroker) { this.WidgetHolderPanel.Attributes.Add(ZONE_ID_ATTR, this.WidgetZoneId.ToString()); //this.WidgetHolderPanelTrigger.CssClass = "WidgetZoneUpdatePanel_" + this.WidgetZoneId.ToString(); var facade = Services.Get<Facade>(); { this.WidgetInstances = facade.GetWidgetInstancesInZoneWithWidget(WidgetZoneId); } var controlsToDelete = new List<Control>(); foreach (Control control in this.WidgetHolderPanel.Controls) if (control is IWidgetHost) controlsToDelete.Add(control); controlsToDelete.ForEach((c) => this.WidgetHolderPanel.Controls.Remove(c)); List<IWidgetHost> widgetHosts = new List<IWidgetHost>(); this.WidgetInstances.Each(instance => { var widgetHost = CreateWidgetContainerFromWidgetInstance(eventBroker, instance); widgetHosts.Add(widgetHost); this.WidgetHolderPanel.Controls.Add(widgetHost as Control); }); return widgetHosts; }
public void AddNewWidget(EventBrokerService eventBroker, WidgetInstance instance) { var widgetHost = CreateWidgetContainerFromWidgetInstance(eventBroker, instance); var widgetContainer = widgetHost as Control; var existingControls = this.WidgetHolderPanel.Controls; if (existingControls == null || existingControls.Count == 0) { this.WidgetHolderPanel.Controls.Add(widgetContainer); } else { var position = 0; foreach (Control existingControl in existingControls) { if (existingControl is IWidgetHost) { var existingHost = existingControl as IWidgetHost; if (existingHost.WidgetInstance.OrderNo >= instance.OrderNo) { break; } } } existingControls.AddAt(position, widgetContainer); } this.Refresh(); }
private IWidgetHost CreateWidgetContainerFromWidgetInstance(EventBrokerService eventBroker, WidgetInstance instance) { var widget = LoadControl(this.WidgetContainerPath) as Control; widget.ID = "WidgetContainer" + instance.Id.ToString(); var widgetHost = widget as IWidgetHost; widgetHost.WidgetInstance = instance; widgetHost.IsLocked = this.IsLocked; widgetHost.EventBroker = eventBroker; widgetHost.Deleted += new Action<WidgetInstance, IWidgetHost>(Widget_Deleted); return widgetHost; }