using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Remoting.Metadata.W3cXsd2001; using System.Text; using System.Threading.Tasks; using Composite.C1Console.Elements; using Composite.C1Console.Elements.Plugins.ElementProvider; using Composite.C1Console.Security; using Composite.Core.ResourceSystem; using Composite.Core.ResourceSystem.Icons; using Composite.Data; namespace Composite.Samples.CustomTreeControl.ElementProvider { public class SampleElementProvider : IHooklessElementProvider { private static ResourceHandle FolderIcon { get { return CommonElementIcons.Folder; } } private static ResourceHandle OpenFolderIcon { get { return CommonElementIcons.FolderOpen; } } public ElementProviderContext Context { get; set; } public IEnumerable GetChildren(EntityToken entityToken, SearchToken seachToken) { if (entityToken.Type == "Root") { foreach (var i in new []{1,2,3}) { var element = new Element(Context.CreateElementHandle(new SampleEntityToken( i.ToString(), "Folder"))) { VisualData = new ElementVisualizedData() { Label = string.Format("Folder {0}", i), ToolTip = string.Format("Folder {0}", i), HasChildren = true, Icon = FolderIcon, OpenedIcon = OpenFolderIcon } }; yield return element; } yield return new Element(Context.CreateElementHandle(new SampleEntityToken("PageFolders", "Pages"))) { VisualData = new ElementVisualizedData() { Label = "Pages", ToolTip = "Pages", HasChildren = true, Icon = FolderIcon, OpenedIcon = OpenFolderIcon } }; } else if (entityToken.Type == "Folder") { foreach (var i in new[] { 1, 2, 3 }) { var folderid = entityToken.Id; var element = new Element(Context.CreateElementHandle(new SampleEntityToken("Item", i.ToString(), entityToken.Id))) { VisualData = new ElementVisualizedData() { Label = string.Format("Item {0}", i), ToolTip = string.Format("Item {0}", i), HasChildren = false, Icon = new ResourceHandle(BuildInIconProviderName.ProviderName,"data") } }; //Value of element in tree element.PropertyBag.Add("DataId", string.Format("{0},{1}", folderid, i) ); yield return element; } } else if (entityToken.Type == "Pages") { foreach (var pageId in PageManager.GetChildrenIDs(Guid.Empty)) { var page = PageManager.GetPageById(pageId); var element = new Element(Context.CreateElementHandle(page.GetDataEntityToken())) { VisualData = new ElementVisualizedData() { Label = page.GetLabel(), ToolTip = page.Description, HasChildren = false, Icon = new ResourceHandle(BuildInIconProviderName.ProviderName,"page") } }; element.PropertyBag.Add("DataId", pageId.ToString()); yield return element; } } yield break; } public IEnumerable GetRoots(SearchToken seachToken) { var element = new Element(Context.CreateElementHandle(new SampleEntityToken("RootId", "Root"))) { VisualData = new ElementVisualizedData() { Label = "Root", ToolTip = "Root", HasChildren = true, Icon = FolderIcon, OpenedIcon = OpenFolderIcon } }; yield return element; } } }