コード例 #1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            if (Context.ClientPage.IsEvent)
            {
                return;
            }

            var iconList = Factory.GetDatabase("master").GetItem("/sitecore/system/Modules/Custom Icons").Children.ToList();

            foreach (var iconItem in iconList)
            {
                var header = iconItem.Fields["Header"].Value;

                var controlId = header.Replace(" ", string.Empty).Trim();

                var filename = iconItem.Fields["Filename"].Value;

                var selectorItem = new ListItem
                {
                    Header = header,
                    Value  = controlId
                };

                Selector.Controls.Add(selectorItem);

                var customScrollbox = new Scrollbox
                {
                    ID      = $"{controlId}List",
                    Visible = false
                };

                RenderIcons(customScrollbox, filename);

                List.Controls.Add(customScrollbox);

                RecentList.InnerHtml = RenderRecentIcons();
            }
        }
コード例 #2
0
        private static void RenderIcons(Scrollbox scrollbox, string prefix)
        {
            Assert.ArgumentNotNull(scrollbox, nameof(scrollbox));
            Assert.ArgumentNotNullOrEmpty(prefix, nameof(prefix));

            var filename = GetFilename(prefix);

            var str = Path.ChangeExtension(filename, ".html");

            if (!File.Exists(filename) || !File.Exists(str))
            {
                DrawIcons(prefix, filename, str);
            }

            var output = new HtmlTextWriter(new StringWriter());

            output.Write(FileUtil.ReadFromFile(str));

            WriteImageTag(filename, prefix, output);

            scrollbox.InnerHtml = output.InnerWriter.ToString();
        }
コード例 #3
0
        /// <summary>
        /// Raises the load event.
        ///
        /// </summary>
        /// <param name="args">The arguments.</param><contract><requires name="args" condition="not null"/></contract>
        protected override void OnLoad(EventArgs args)
        {
            var loggingService = ObjectFactory.Instance.Resolve <ILoggingService>();
            var stopwatch      = new Stopwatch();

            loggingService.Log <CategoriesTreelist>("Starting CategoriesTreelist.OnLoad() ...");

            stopwatch.Start();

            Assert.ArgumentNotNull(args, "args");
            if (!ScContext.ClientPage.IsEvent)
            {
                SetProperties();
                var border1 = new Border();
                Controls.Add(border1);
                GetControlAttributes();
                foreach (string key in Attributes.Keys)
                {
                    border1.Attributes.Add(key, Attributes[key]);
                }
                border1.Attributes["id"] = ID;
                var border2 = new Border {
                    Class = "scTreeListHalfPart"
                };
                var border3 = border2;
                border1.Controls.Add(border3);
                var border4 = new Border();
                border3.Controls.Add(border4);
                SetViewStateString("ID", ID);
                var controls1 = border4.Controls;
                var literal1  = new Literal("All")
                {
                    Class = "scContentControlMultilistCaption"
                };
                var literal2 = literal1;
                controls1.Add(literal2);
                var scrollbox1 = new Scrollbox
                {
                    ID    = GetUniqueID("S"),
                    Class = "scScrollbox scContentControlTree"
                };
                var scrollbox2 = scrollbox1;
                border4.Controls.Add(scrollbox2);
                var treeviewEx = new TreeviewEx {
                    ID = ID + "_all", DblClick = ID + ".Add", AllowDragging = false
                };
                scrollbox2.Controls.Add(treeviewEx);
                var border5 = new Border {
                    Class = "scContentControlNavigation"
                };
                var border6 = border5;
                border3.Controls.Add(border6);
                var literalControl1 = new LiteralControl(new ImageBuilder
                {
                    Src     = "Applications/16x16/nav_right_blue.png",
                    ID      = (ID + "_right"),
                    OnClick = ScContext.ClientPage.GetClientEvent(ID + ".Add")
                }.ToString() + new ImageBuilder
                {
                    Src     = "Applications/16x16/nav_left_blue.png",
                    ID      = (ID + "_left"),
                    OnClick = ScContext.ClientPage.GetClientEvent(ID + ".Remove")
                });
                border6.Controls.Add(literalControl1);
                var border7 = new Border {
                    Class = "scTreeListHalfPart"
                };
                var border8 = border7;
                border1.Controls.Add(border8);
                var border9 = new Border {
                    Class = "scFlexColumnContainerWithoutFlexie"
                };
                var border10 = border9;
                border8.Controls.Add(border10);
                var controls2 = border10.Controls;
                var literal3  = new Literal("Selected")
                {
                    Class = "scContentControlMultilistCaption"
                };
                var literal4 = literal3;
                controls2.Add(literal4);
                var border11 = new Border {
                    Class = "scContentControlSelectedList"
                };
                var border12 = border11;
                border10.Controls.Add(border12);
                var listbox = new Listbox();
                border12.Controls.Add(listbox);
                _listBox                       = listbox;
                listbox.ID                     = ID + "_selected";
                listbox.DblClick               = ID + ".Remove";
                listbox.Style["width"]         = "100%";
                listbox.Size                   = "10";
                listbox.Attributes["onchange"] = "javascript:document.getElementById('" + ID +
                                                 "_help').innerHTML=this.selectedIndex>=0?this.options[this.selectedIndex].innerHTML:''";
                listbox.Attributes["class"] = "scContentControlMultilistBox scFlexContentWithoutFlexie";
                _listBox.TrackModified      = false;
                treeviewEx.Enabled          = !ReadOnly;
                listbox.Disabled            = ReadOnly;
                border10.Controls.Add(
                    new LiteralControl("<div class='scContentControlTreeListHelp' id=\"" + ID + "_help\"></div>"));
                var border13 = new Border {
                    Class = "scContentControlNavigation"
                };
                var border14 = border13;
                border8.Controls.Add(border14);
                var literalControl2 = new LiteralControl(new ImageBuilder
                {
                    Src     = "Applications/16x16/nav_up_blue.png",
                    ID      = (ID + "_up"),
                    OnClick = ScContext.ClientPage.GetClientEvent(ID + ".Up")
                }.ToString() + new ImageBuilder
                {
                    Src     = "Applications/16x16/nav_down_blue.png",
                    ID      = (ID + "_down"),
                    OnClick = ScContext.ClientPage.GetClientEvent(ID + ".Down")
                });
                border14.Controls.Add(literalControl2);
                var dataContext = new DataContext();
                border1.Controls.Add(dataContext);
                dataContext.ID              = GetUniqueID("D");
                dataContext.Filter          = FormTemplateFilterForDisplay();
                treeviewEx.DataContext      = dataContext.ID;
                treeviewEx.DisplayFieldName = DisplayFieldName;
                dataContext.DataViewName    = "Master";
                if (!string.IsNullOrEmpty(DatabaseName))
                {
                    dataContext.Parameters = "databasename=" + DatabaseName;
                }
                dataContext.Root     = DataSource;
                dataContext.Language = Language.Parse(ItemLanguage);
                treeviewEx.ShowRoot  = true;
                RestoreState();
            }
            base.OnLoad(args);

            stopwatch.Stop();
            loggingService.Log <CategoriesTreelist>(string.Format("CategoriesTreelist.OnLoad() took {0} ms", stopwatch.ElapsedMilliseconds));
        }
コード例 #4
0
        protected override void OnLoad(EventArgs args)
        {
            if (!Sitecore.Context.ClientPage.IsEvent)
             {
            SetProperties();
            GridPanel gridPanel = new GridPanel();
            Controls.Add(gridPanel);
            gridPanel.Columns = 4;
            GetControlAttributes();

            foreach (string text2 in base.Attributes.Keys)
            {
               gridPanel.Attributes.Add(text2, base.Attributes[text2]);
            }

            gridPanel.Style["margin"] = "0px 0px 4px 0px";
            SetViewStateString("ID", ID);
            Sitecore.Web.UI.HtmlControls.Literal literal = new Sitecore.Web.UI.HtmlControls.Literal("All");
            literal.Class = ("scContentControlMultilistCaption");

            gridPanel.Controls.Add(literal);
            gridPanel.SetExtensibleProperty(literal, "Width", "50%");
            gridPanel.SetExtensibleProperty(literal, "Row.Height", "20px");

            LiteralControl spacer = new LiteralControl(Images.GetSpacer(24, 1));
            gridPanel.Controls.Add(spacer);
            gridPanel.SetExtensibleProperty(spacer, "Width", "24px");

            literal = new Sitecore.Web.UI.HtmlControls.Literal("Selected");
            literal.Class = "scContentControlMultilistCaption";

            gridPanel.Controls.Add(literal);
            gridPanel.SetExtensibleProperty(literal, "Width", "50%");

            spacer = new LiteralControl(Images.GetSpacer(24, 1));
            gridPanel.Controls.Add(spacer);
            gridPanel.SetExtensibleProperty(spacer, "Width", "24px");

            Scrollbox scrollbox = new Scrollbox();
            scrollbox.ID = GetUniqueID("S");

            gridPanel.Controls.Add(scrollbox);
            scrollbox.Style["border"] = "3px window-inset";
            gridPanel.SetExtensibleProperty(scrollbox, "rowspan", "2");

            DataTreeview dataTreeView = new DataTreeview();
            dataTreeView.ID = ID + "_all";
            scrollbox.Controls.Add(dataTreeView);
            dataTreeView.DblClick = ID + ".Add";

            ImageBuilder builderRight = new ImageBuilder();
            builderRight.Src = "Applications/16x16/nav_right_blue.png";
            builderRight.ID = ID + "_right";
            builderRight.Width = 0x10;
            builderRight.Height = 0x10;
            builderRight.Margin = "2";
            builderRight.OnClick = Sitecore.Context.ClientPage.GetClientEvent(ID + ".Add");

            ImageBuilder builderLeft = new ImageBuilder();
            builderLeft.Src = "Applications/16x16/nav_left_blue.png";
            builderLeft.ID = ID + "_left";
            builderLeft.Width = 0x10;
            builderLeft.Height = 0x10;
            builderLeft.Margin = "2";
            builderLeft.OnClick = Sitecore.Context.ClientPage.GetClientEvent(ID + ".Remove");

            LiteralControl literalControl = new LiteralControl(builderRight.ToString() + "<br/>" + builderLeft.ToString());
            gridPanel.Controls.Add(literalControl);
            gridPanel.SetExtensibleProperty(literalControl, "Width", "30");
            gridPanel.SetExtensibleProperty(literalControl, "Align", "center");
            gridPanel.SetExtensibleProperty(literalControl, "VAlign", "top");
            gridPanel.SetExtensibleProperty(literalControl, "rowspan", "2");

            Sitecore.Web.UI.HtmlControls.Listbox listbox = new Listbox();
                listBox = listbox;
            gridPanel.SetExtensibleProperty(listbox, "VAlign", "top");
            gridPanel.SetExtensibleProperty(listbox, "Height", "100%");

            gridPanel.Controls.Add(listbox);
            listbox.ID = ID + "_selected";
            listbox.DblClick = ID + ".Remove";
            listbox.Style["width"] = "100%";
            listbox.Size = "10";
            listbox.Attributes["onchange"] = "javascript:document.getElementById('" + this.ID + "_help').innerHTML=this.selectedIndex>=0?this.options[this.selectedIndex].innerHTML:''";
            listbox.Attributes["class"] = "scContentControlMultilistBox";

            dataTreeView.Disabled = ReadOnly;
            listbox.Disabled = ReadOnly;

            ImageBuilder builderUp = new ImageBuilder();
            builderUp.Src = "Applications/16x16/nav_up_blue.png";
            builderUp.ID = ID + "_up";
            builderUp.Width = 0x10;
            builderUp.Height = 0x10;
            builderUp.Margin = "2px";
            builderUp.OnClick = Sitecore.Context.ClientPage.GetClientEvent(ID + ".Up");

            ImageBuilder builderDown = new ImageBuilder();
            builderDown.Src = "Applications/16x16/nav_down_blue.png";
            builderDown.ID = ID + "_down";
            builderDown.Width = 0x10;
            builderDown.Height = 0x10;
            builderDown.Margin = "2";
            builderDown.OnClick = Sitecore.Context.ClientPage.GetClientEvent(ID + ".Down");

            literalControl = new LiteralControl(builderUp.ToString() + "<br/>" + builderDown.ToString());
            gridPanel.Controls.Add(literalControl);
            gridPanel.SetExtensibleProperty(literalControl, "Width", "30");
            gridPanel.SetExtensibleProperty(literalControl, "Align", "center");
            gridPanel.SetExtensibleProperty(literalControl, "VAlign", "top");
            gridPanel.SetExtensibleProperty(literalControl, "rowspan", "2");
            gridPanel.Controls.Add(new LiteralControl("<div style=\"border:1px solid #999999;font:8pt tahoma;padding:2px;margin:4px 0px 4px 0px;height:14px\" id=\"" + this.ID + "_help\"></div>"));

            DataContext treeContext = new DataContext();
            gridPanel.Controls.Add(treeContext);
            treeContext.ID = GetUniqueID("D");
            treeContext.Filter = FormTemplateFilterForDisplay();
            dataTreeView.DataContext = treeContext.ID;
            treeContext.DataViewName = "Master";
            if (!string.IsNullOrEmpty(this.SourceDatabaseName))
            {
               treeContext.Parameters = "databasename=" + this.SourceDatabaseName;
            }
            treeContext.Root = DataSource;
            dataTreeView.EnableEvents();

            listbox.Size = "10";
            gridPanel.Fixed = true;
            dataTreeView.AutoUpdateDataContext = true;
            dataTreeView.ShowRoot = true;
            listbox.Attributes["class"] = "scContentControlMultilistBox";

            gridPanel.SetExtensibleProperty(scrollbox, "Height", "100%");
            RestoreState();
             }
             base.OnLoad(args);
        }
コード例 #5
0
		// This method is the only method that differs from Sitecore's
		// TreeList class
		protected override void OnLoad(EventArgs args)
		{
			Assert.ArgumentNotNull(args, "args");
			if (!Sitecore.Context.ClientPage.IsEvent)
			{
				Database contentDatabase = Sitecore.Context.ContentDatabase;
				if (!string.IsNullOrEmpty(this.DatabaseName))
				{
					contentDatabase = Factory.GetDatabase(this.DatabaseName);
				}

				this.SetProperties();
				GridPanel child = new GridPanel();
				this.Controls.Add(child);
				child.Columns = 4;
				this.GetControlAttributes();
				foreach (string str in base.Attributes.Keys)
				{
					child.Attributes.Add(str, base.Attributes[str]);
				}
				child.Style["margin"] = "0px 0px 4px 0px";
				base.SetViewStateString("ID", this.ID);
				Literal literal = new Literal("All");
				literal.Class = "scContentControlMultilistCaption";
				child.Controls.Add(literal);
				child.SetExtensibleProperty(literal, "Width", "50%");
				child.SetExtensibleProperty(literal, "Row.Height", "20px");
				LiteralControl control = new LiteralControl(Images.GetSpacer(0x18, 1));
				child.Controls.Add(control);
				child.SetExtensibleProperty(control, "Width", "24px");
				literal = new Literal("Selected");
				literal.Class = "scContentControlMultilistCaption";
				child.Controls.Add(literal);
				child.SetExtensibleProperty(literal, "Width", "50%");
				control = new LiteralControl(Images.GetSpacer(0x18, 1));
				child.Controls.Add(control);
				child.SetExtensibleProperty(control, "Width", "24px");
				Scrollbox scrollbox = new Scrollbox();
				scrollbox.ID = Sitecore.Web.UI.HtmlControls.Control.GetUniqueID("S");
				child.Controls.Add(scrollbox);
				if (!UIUtil.IsIE())
				{
					scrollbox.Padding = "0px";
				}
				scrollbox.Style["border"] = "3px window-inset";
				child.SetExtensibleProperty(scrollbox, "rowspan", "2");
				child.SetExtensibleProperty(scrollbox, "VAlign", "top");
				// Instantiate the MultiTreeview rather than TreeviewEx
				MultiRootTreeview ex = new MultiRootTreeview();
				// Set the ParentItem of the treeview to the current item
				// This allows the treeview to have a 'context' of where 
				// we currently are in the content tree
				Item parentItem = contentDatabase.GetItem(ItemID);
				ex.ParentItem = parentItem;
				ex.ID = this.ID + "_all";
				if (!string.IsNullOrEmpty(AncestorTemplateDatasource))
				{
					Item parent = parentItem;
					while (parent != null && String.Compare(parent.TemplateID.ToString(), AncestorTemplateDatasource, StringComparison.OrdinalIgnoreCase) != 0)
					{
						parent = parent.Parent;
					}
					ex.MultiTrees.Add(2, parent);
				}
				else if (DataSources.Count > 0)
				{
					foreach (KeyValuePair<int, string> kvp in DataSources)
					{
						if (!string.IsNullOrEmpty(kvp.Value))
						{
							if (kvp.Value == ".")
							{
								ex.MultiTrees.Add(kvp.Key, parentItem);
							}
							else if (kvp.Value.StartsWith("."))
							{
								string path = kvp.Value.Replace(".", parentItem.Paths.FullPath);
								ex.MultiTrees.Add(kvp.Key, contentDatabase.GetItem(path));
							}
							else
							{
								ex.MultiTrees.Add(kvp.Key, contentDatabase.GetItem(kvp.Value));
							}
						}
					}
				}
				scrollbox.Controls.Add(ex);
				ex.DblClick = this.ID + ".Add";
				ex.AllowDragging = false;
				ImageBuilder builder = new ImageBuilder();
				builder.Src = "Applications/16x16/nav_right_blue.png";
				builder.ID = this.ID + "_right";
				builder.Width = 0x10;
				builder.Height = 0x10;
				builder.Margin = UIUtil.IsIE() ? "2px" : "2px 0px 2px 2px";
				builder.OnClick = Sitecore.Context.ClientPage.GetClientEvent(this.ID + ".Add");
				ImageBuilder builder2 = new ImageBuilder();
				builder2.Src = "Applications/16x16/nav_left_blue.png";
				builder2.ID = this.ID + "_left";
				builder2.Width = 0x10;
				builder2.Height = 0x10;
				builder2.Margin = UIUtil.IsIE() ? "2px" : "2px 0px 2px 2px";
				builder2.OnClick = Sitecore.Context.ClientPage.GetClientEvent(this.ID + ".Remove");
				LiteralControl control2 = new LiteralControl(builder + "<br/>" + builder2);
				child.Controls.Add(control2);
				child.SetExtensibleProperty(control2, "Width", "30");
				child.SetExtensibleProperty(control2, "Align", "center");
				child.SetExtensibleProperty(control2, "VAlign", "top");
				child.SetExtensibleProperty(control2, "rowspan", "2");
				Listbox listbox = new Listbox();
				child.Controls.Add(listbox);
				child.SetExtensibleProperty(listbox, "VAlign", "top");
				child.SetExtensibleProperty(listbox, "Height", "100%");
				this._listBox = listbox;
				listbox.ID = this.ID + "_selected";
				listbox.DblClick = this.ID + ".Remove";
				listbox.Style["width"] = "100%";
				listbox.Size = "10";
				listbox.Attributes["onchange"] = "javascript:document.getElementById('" + this.ID + "_help').innerHTML=this.selectedIndex>=0?this.options[this.selectedIndex].innerHTML:''";
				listbox.Attributes["class"] = "scContentControlMultilistBox";
				ex.Enabled = !this.ReadOnly;
				listbox.Disabled = this.ReadOnly;
				ImageBuilder builder3 = new ImageBuilder();
				builder3.Src = "Applications/16x16/nav_up_blue.png";
				builder3.ID = this.ID + "_up";
				builder3.Width = 0x10;
				builder3.Height = 0x10;
				builder3.Margin = "2px";
				builder3.OnClick = Sitecore.Context.ClientPage.GetClientEvent(this.ID + ".Up");
				ImageBuilder builder4 = new ImageBuilder();
				builder4.Src = "Applications/16x16/nav_down_blue.png";
				builder4.ID = this.ID + "_down";
				builder4.Width = 0x10;
				builder4.Height = 0x10;
				builder4.Margin = "2px";
				builder4.OnClick = Sitecore.Context.ClientPage.GetClientEvent(this.ID + ".Down");
				control2 = new LiteralControl(builder3 + "<br/>" + builder4);
				child.Controls.Add(control2);
				child.SetExtensibleProperty(control2, "Width", "30");
				child.SetExtensibleProperty(control2, "Align", "center");
				child.SetExtensibleProperty(control2, "VAlign", "top");
				child.SetExtensibleProperty(control2, "rowspan", "2");
				child.Controls.Add(new LiteralControl("<div style=\"border:1px solid #999999;font:8pt tahoma;padding:2px;margin:4px 0px 4px 0px;height:14px\" id=\"" + this.ID + "_help\"></div>"));
				DataContext context = new DataContext();
				child.Controls.Add(context);
				context.ID = Sitecore.Web.UI.HtmlControls.Control.GetUniqueID("D");
				context.Filter = this.FormTemplateFilterForDisplay();
				ex.DataContext = context.ID;
				context.DataViewName = "Master";
				if (!string.IsNullOrEmpty(this.DatabaseName))
				{
					context.Parameters = "databasename=" + this.DatabaseName;
				}
				context.Root = this.DataSource;
				child.Fixed = true;
				ex.ShowRoot = true;
				child.SetExtensibleProperty(scrollbox, "Height", "100%");
				this.RestoreState();
			}
			base.OnLoad(args);
		}
コード例 #6
0
        /// <summary>
        /// Raises the load event.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            Assert.ArgumentNotNull(e, "e");

            base.OnLoad(e);

            if (Context.ClientPage.IsEvent)
            {
                return;
            }
            IsOpenPropertiesChecked = Registry.GetBool("/Current_User/SelectRendering/IsOpenPropertiesChecked");
            var renderingOptions = SelectItemOptions.Parse <SelectRenderingOptions>();

            if (renderingOptions.ShowOpenProperties)
            {
                OpenPropertiesBorder.Visible = true;
                OpenProperties.Checked       = this.IsOpenPropertiesChecked;
            }
            if (renderingOptions.ShowPlaceholderName)
            {
                PlaceholderNameBorder.Visible = true;
                PlaceholderName.Value         = renderingOptions.PlaceholderName;
            }
            if (!renderingOptions.ShowTree)
            {
                TreeviewContainer.Class   = string.Empty;
                TreeviewContainer.Visible = false;
                TreeSplitter.Visible      = false;
                var gridPanel = TreeviewContainer.Parent as GridPanel;
                if (gridPanel != null)
                {
                    gridPanel.SetExtensibleProperty(TreeviewContainer, "class", "scDisplayNone");
                }

                var groupedRenderings = renderingOptions.Items.GroupBy(i => i.Parent.Name).ToArray();
                if (groupedRenderings.Length <= 1)
                {
                    Renderings.InnerHtml = RenderPreviews(renderingOptions.Items);

                    gridPanel = Tabs.Parent as GridPanel;
                    if (gridPanel != null)
                    {
                        gridPanel.SetExtensibleProperty(Tabs, "class", "scDisplayNone");
                    }
                }
                else
                {
                    foreach (var renderingGroup in groupedRenderings)
                    {
                        var newTab = new Tab
                        {
                            Header   = renderingGroup.Key,
                            CssClass = "scScrollbox scFixSize scFixSize4",
                            Height   = new Unit(100, UnitType.Percentage),
                            Width    = new Unit(100, UnitType.Percentage)
                        };
                        var newScrollbox = new Scrollbox
                        {
                            Class      = "scScrollbox scFixSize scFixSize4",
                            Background = "white",
                            Padding    = "0px",
                            Width      = new Unit(100, UnitType.Percentage),
                            Height     = new Unit(100, UnitType.Percentage),
                            InnerHtml  = RenderPreviews(renderingGroup)
                        };
                        newTab.Controls.Add(newScrollbox);
                        Tabs.Controls.Add(newTab);
                    }

                    gridPanel = Renderings.Parent as GridPanel;
                    if (gridPanel != null)
                    {
                        gridPanel.SetExtensibleProperty(Renderings, "class", "scDisplayNone");
                    }
                }
            }
            else
            {
                var gridPanel = Renderings.Parent as GridPanel;
                if (gridPanel != null)
                {
                    gridPanel.SetExtensibleProperty(Tabs, "class", "scDisplayNone");
                }
            }
            SetOpenPropertiesState(renderingOptions.SelectedItem);
        }
コード例 #7
0
        protected override void OnLoad(EventArgs e)
        {
            Assert.ArgumentNotNull((object)e, "e");
            base.OnLoad(e);
            if (Context.ClientPage.IsEvent)
            {
                return;
            }
            IsOpenPropertiesChecked = Registry.GetBool("/Current_User/SelectRendering/IsOpenPropertiesChecked");
            SelectRenderingOptions renderingOptions = SelectItemOptions.Parse <SelectRenderingOptions>();

            if (renderingOptions.ShowOpenProperties)
            {
                OpenPropertiesBorder.Visible = true;
                OpenProperties.Checked       = IsOpenPropertiesChecked;
            }
            if (renderingOptions.ShowPlaceholderName)
            {
                PlaceholderNameBorder.Visible = true;
                PlaceholderName.Value         = renderingOptions.PlaceholderName;
            }
            if (!renderingOptions.ShowTree)
            {
                TreeviewContainer.Class   = string.Empty;
                TreeviewContainer.Visible = false;
                TreeSplitter.Visible      = false;
                GridPanel gridPanel = TreeviewContainer.Parent as GridPanel;
                if (gridPanel != null)
                {
                    gridPanel.SetExtensibleProperty(TreeviewContainer, "class",
                                                    "scDisplayNone");
                }

                //Line of Code that does grouping
                var gruppedSublayouts = renderingOptions.Items.GroupBy(i => i.Parent.Name);

                //Add new tab for each folder
                foreach (IGrouping <string, Item> gruppedSublayout in gruppedSublayouts)
                {
                    var newTab = new Tab();
                    newTab.Header = gruppedSublayout.Key;
                    var newScrollbox = new Scrollbox();
                    newScrollbox.Class      = "scScrollbox scFixSize scFixSize4";
                    newScrollbox.Background = "white";
                    newScrollbox.Padding    = "0px";
                    newScrollbox.Width      = new Unit(100, UnitType.Percentage);
                    newScrollbox.Height     = new Unit(100, UnitType.Percentage);
                    newScrollbox.InnerHtml  = RenderPreviews(gruppedSublayout);
                    newTab.Controls.Add(newScrollbox);
                    Tabs.Controls.Add(newTab);
                }

                gridPanel = Renderings.Parent as GridPanel;
                if (gridPanel != null)
                {
                    gridPanel.SetExtensibleProperty(Renderings, "class",
                                                    "scDisplayNone");
                }
            }
            else
            {
                var gridPanel = Renderings.Parent as GridPanel;
                if (gridPanel != null)
                {
                    gridPanel.SetExtensibleProperty(Tabs, "class",
                                                    "scDisplayNone");
                }
            }
            //end of new code
            SetOpenPropertiesState(renderingOptions.SelectedItem);
        }
        /// <summary>
        /// Raises the load event.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            Assert.ArgumentNotNull((object)e, "e");
            base.OnLoad(e);
            if (Context.ClientPage.IsEvent)
            {
                return;
            }
            this.IsOpenPropertiesChecked = Registry.GetBool("/Current_User/SelectRendering/IsOpenPropertiesChecked");
            SelectRenderingOptions renderingOptions = SelectItemOptions.Parse <SelectRenderingOptions>();

            if (renderingOptions.ShowOpenProperties)
            {
                this.OpenPropertiesBorder.Visible = true;
                this.OpenProperties.Checked       = this.IsOpenPropertiesChecked;
            }
            if (renderingOptions.ShowPlaceholderName)
            {
                this.PlaceholderNameBorder.Visible = true;
                this.PlaceholderName.Value         = renderingOptions.PlaceholderName;
            }
            if (!renderingOptions.ShowTree)
            {
                this.TreeviewContainer.Class   = string.Empty;
                this.TreeviewContainer.Visible = false;
                this.TreeSplitter.Visible      = false;
                GridPanel gridPanel = this.TreeviewContainer.Parent as GridPanel;
                if (gridPanel != null)
                {
                    gridPanel.SetExtensibleProperty((System.Web.UI.Control) this.TreeviewContainer, "class", "scDisplayNone");
                }
                this.Renderings.InnerHtml = this.RenderPreviews((IEnumerable <Item>)renderingOptions.Items);

                // Start custom code
                this.TabbedGridPanel.Visible  = true;
                this.DefaultGridPanel.Visible = false;
                var renderingGroups = renderingOptions.Items.GroupBy(i => i.Parent.Name);

                foreach (IGrouping <string, Item> rendering in renderingGroups)
                {
                    var newTab = new Tab();
                    newTab.Header = rendering.Key;
                    var newScrollbox = new Scrollbox();
                    newScrollbox.Class      = "scScrollbox scFixSize scFixSize4";
                    newScrollbox.Background = "white";
                    newScrollbox.Padding    = "0px";
                    newScrollbox.Width      = new Unit(100, UnitType.Percentage);
                    newScrollbox.Height     = new Unit(100, UnitType.Percentage);
                    newScrollbox.InnerHtml  = RenderPreviews(rendering);
                    newTab.Controls.Add(newScrollbox);
                    Tabs.Controls.Add(newTab);
                }
                gridPanel = Renderings.Parent as GridPanel;
                if (gridPanel != null)
                {
                    gridPanel.SetExtensibleProperty(Renderings, "class",
                                                    "scDisplayNone");
                }
                // End custom code
            }
            else
            {
                this.MainGridPanel.Controls.RemoveAt(0);
                this.DefaultGridPanel.Visible = true;
                this.TabbedGridPanel.Visible  = false;
            }
            this.SetOpenPropertiesState(renderingOptions.SelectedItem);
        }