//public string GetWidgetInstanceOwnerName(int widgetInstanceId)
        //{
        //    return this.widgetInstanceRepository.GetWidgetInstanceOwnerName(widgetInstanceId);
        //}

        public void CreateDefaultWidgetsOnTab(string userName, int pageId)
        {
            List<Widget> defaultWidgets = null;

            defaultWidgets = (System.Web.Security.Roles.Enabled && !string.IsNullOrEmpty(userName)) ?
                this.GetWidgetList(userName, Enumerations.WidgetType.PersonalTab).Where(w => w.IsDefault).ToList() :
                this.widgetRepository.GetWidgetByIsDefault(true);
            
            var widgetsPerColumn = (int)Math.Ceiling((float)defaultWidgets.Count / 3.0);

            var row = 0;
            var col = 0;

            var widgetZone = this.widgetZoneRepository.GetWidgetZoneByTabId_ColumnNo(pageId, col);
            List<WidgetInstance> wis = defaultWidgets.ConvertAll<WidgetInstance>(widget =>
                {
                    var instance = new WidgetInstance();

                    instance.WidgetZone = new WidgetZone { ID = widgetZone.ID };
                    instance.OrderNo = row;
                    instance.CreatedDate = DateTime.Now;
                    instance.Expanded = true;
                    instance.Title = widget.Name;
                    instance.VersionNo = 1;
                    instance.Widget = new Widget { ID = widget.ID };
                    instance.State = widget.DefaultState;

                    row++;
                    if (row >= widgetsPerColumn)
                    {
                        row = 0;
                        col++;
                    }

                    return instance;
                });
            this.widgetInstanceRepository.InsertList(wis);
        }
 private void Widget_Deleted(WidgetInstance wi, IWidgetHost host)
 {
     if (host is Control)
         this.WidgetHolderPanel.Controls.Remove(host as Control);
     this.RefreshZoneUpdatePanel();
 }
    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;
    }
        public WidgetInstance CloneWidgetInstance(int widgetZoneId, WidgetInstance wiToClone)
        {
            var newWidgetInstance = this.widgetInstanceRepository.Insert(new WidgetInstance
            {
                CreatedDate = wiToClone.CreatedDate,
                Expanded = wiToClone.Expanded,
                Height = wiToClone.Height,
                LastUpdate = wiToClone.LastUpdate,
                Maximized = wiToClone.Maximized,
                OrderNo = wiToClone.OrderNo,
                Resized = wiToClone.Resized,
                State = wiToClone.State,
                Title = wiToClone.Title,
                VersionNo = wiToClone.VersionNo,
                Widget = new Widget { ID = wiToClone.Widget.ID },
                WidgetZone = new WidgetZone { ID = widgetZoneId },
                Width = wiToClone.Width
            });           

            return newWidgetInstance;
        }
 public void AddNewWidget(WidgetInstance wi)
 {
     var widgetZoneControl = this.FindControl(GetWidgetZoneControlId(wi.WidgetZone.ID)) as WidgetInstanceZone;
     widgetZoneControl.AddNewWidget(_EventBroker, wi);       
 }
 public void NewWidgetAdded(WidgetInstance newWidget)
 {
     this.WidgetTabHost.AddNewWidget(newWidget);
 }