using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using FirstPlugin; using Toolbox.Library.Forms; using LayoutBXLYT.Cafe; namespace LayoutBXLYT { public partial class LayoutHierarchy : LayoutDocked { public LayoutHierarchy() { InitializeComponent(); treeView1.BackColor = FormThemes.BaseTheme.FormBackColor; treeView1.ForeColor = FormThemes.BaseTheme.FormForeColor; var imgList = new ImageList(); imgList.Images.Add("folder", Toolbox.Library.Properties.Resources.Folder); imgList.Images.Add("AlignmentPane", FirstPlugin.Properties.Resources.AlignmentPane); imgList.Images.Add("WindowPane", FirstPlugin.Properties.Resources.WindowPane); imgList.Images.Add("ScissorPane", FirstPlugin.Properties.Resources.ScissorPane); imgList.Images.Add("BoundryPane", FirstPlugin.Properties.Resources.BoundryPane); imgList.Images.Add("NullPane", FirstPlugin.Properties.Resources.NullPane); imgList.Images.Add("PicturePane", FirstPlugin.Properties.Resources.PicturePane); imgList.Images.Add("QuickAcess", FirstPlugin.Properties.Resources.QuickAccess); imgList.ImageSize = new Size(22,22); treeView1.ImageList = imgList; } private bool isLoaded = false; private EventHandler OnProperySelected; public void LoadLayout(BxlytHeader bxlyt, EventHandler onPropertySelected) { isLoaded = false; OnProperySelected = onPropertySelected; treeView1.BeginUpdate(); treeView1.Nodes.Clear(); CreateQuickAccess(bxlyt); LoadPane(bxlyt.RootGroup); LoadPane(bxlyt.RootPane); treeView1.EndUpdate(); isLoaded = true; } public void Reset() { treeView1.Nodes.Clear(); isLoaded = false; } private void CreateQuickAccess(BxlytHeader bxlyt) { var panes = new List(); var groupPanes = new List(); GetPanes(bxlyt.RootPane,ref panes); GetGroupPanes(bxlyt.RootGroup,ref groupPanes); TreeNode node = new TreeNode("Quick Access"); node.ImageKey = "QuickAcess"; node.SelectedImageKey = "QuickAcess"; treeView1.Nodes.Add(node); TreeNode nullFolder = new TreeNode("Null Panes"); TreeNode windowFolder = new TreeNode("Window Panes"); TreeNode pictureFolder = new TreeNode("Picture Panes"); TreeNode boundryFolder = new TreeNode("Boundry Panes"); TreeNode partsFolder = new TreeNode("Part Panes"); TreeNode groupFolder = new TreeNode("Groups"); node.Nodes.Add(nullFolder); node.Nodes.Add(windowFolder); node.Nodes.Add(pictureFolder); node.Nodes.Add(boundryFolder); node.Nodes.Add(partsFolder); node.Nodes.Add(groupFolder); for (int i = 0; i < panes.Count; i++) { var paneNode = CreatePaneWrapper(panes[i]); if (panes[i] is BFLYT.WND1) windowFolder.Nodes.Add(paneNode); else if (panes[i] is BCLYT.WND1) windowFolder.Nodes.Add(paneNode); else if (panes[i] is BRLYT.WND1) windowFolder.Nodes.Add(paneNode); else if (panes[i] is BFLYT.PIC1) pictureFolder.Nodes.Add(paneNode); else if (panes[i] is BCLYT.PIC1) pictureFolder.Nodes.Add(paneNode); else if (panes[i] is BRLYT.PIC1) pictureFolder.Nodes.Add(paneNode); else if (panes[i] is BFLYT.BND1) boundryFolder.Nodes.Add(paneNode); else if (panes[i] is BCLYT.BND1) boundryFolder.Nodes.Add(paneNode); else if (panes[i] is BRLYT.BND1) boundryFolder.Nodes.Add(paneNode); else if (panes[i] is BCLYT.PRT1) partsFolder.Nodes.Add(paneNode); else if (panes[i] is BFLYT.PRT1) partsFolder.Nodes.Add(paneNode); else if (panes[i] is BRLYT.PRT1) partsFolder.Nodes.Add(paneNode); else nullFolder.Nodes.Add(paneNode); } for (int i = 0; i < groupPanes.Count; i++) { var paneNode = CreatePaneWrapper(groupPanes[i]); groupFolder.Nodes.Add(paneNode); } } private void GetPanes(BasePane pane, ref List panes) { panes.Add(pane); foreach (var childPane in pane.Childern) GetPanes(childPane,ref panes); } private void GetGroupPanes(BasePane pane, ref List panes) { panes.Add(pane); foreach (var childPane in pane.Childern) GetPanes(childPane,ref panes); } private PaneTreeWrapper CreatePaneWrapper(BasePane pane) { PaneTreeWrapper paneNode = new PaneTreeWrapper(); paneNode.Checked = true; paneNode.Text = pane.Name; paneNode.Tag = pane; string imageKey = ""; if (pane is BFLYT.WND1) imageKey = "WindowPane"; else if (pane is BCLYT.WND1) imageKey = "WindowPane"; else if (pane is BRLYT.WND1) imageKey = "WindowPane"; else if (pane is BFLYT.PIC1) imageKey = "PicturePane"; else if (pane is BCLYT.PIC1) imageKey = "PicturePane"; else if (pane is BRLYT.PIC1) imageKey = "PicturePane"; else if (pane is BFLYT.BND1) imageKey = "BoundryPane"; else if (pane is BCLYT.BND1) imageKey = "BoundryPane"; else if (pane is BRLYT.BND1) imageKey = "BoundryPane"; else imageKey = "NullPane"; paneNode.ImageKey = imageKey; paneNode.SelectedImageKey = imageKey; return paneNode; } private void LoadPane(BasePane pane, TreeNode parent = null) { var paneNode = CreatePaneWrapper(pane); if (parent == null) treeView1.Nodes.Add(paneNode); else parent.Nodes.Add(paneNode); foreach (var childPane in pane.Childern) LoadPane(childPane, paneNode); } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (isLoaded) OnProperySelected.Invoke("Select", e); } private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) { if (isLoaded) OnProperySelected.Invoke("Checked", e); } } }