public ColumnHeaderRenderer(NlmTreeListView listView) { ListView = listView; // Add Event. ListView.DrawColumnHeader += new DrawListViewColumnHeaderEventHandler(HandleDrawColumnHeader); }
public MaxSystemEvents(NlmTreeListView listView, NodeController nodeControl) { // Set properties. ListView = listView; NodeControl = nodeControl; // Create Events FilePreSave = new SystemNotificationObjectHandler(SystemNotificationCode.FilePreSave); FilePreSave.NotificationRaised += new EventHandler <SystemNotificationObjectEventArgs>(onFilePreSave); SystemPreReset = new SystemNotificationObjectHandler(SystemNotificationCode.SystemPreReset); SystemPreReset.NotificationRaised += new EventHandler <SystemNotificationObjectEventArgs>(onSystemPreReset); SystemPostReset = new SystemNotificationObjectHandler(SystemNotificationCode.SystemPostReset); SystemPostReset.NotificationRaised += new EventHandler <SystemNotificationObjectEventArgs>(onSystemPostReset); SystemPreNew = new SystemNotificationObjectHandler(SystemNotificationCode.SystemPreNew); SystemPreNew.NotificationRaised += new EventHandler <SystemNotificationObjectEventArgs>(onSystemPreReset); SystemPostNew = new SystemNotificationObjectHandler(SystemNotificationCode.SystemPostNew); SystemPostNew.NotificationRaised += new EventHandler <SystemNotificationObjectEventArgs>(onSystemPostReset); SystemPreLoad = new SystemNotificationObjectHandler(SystemNotificationCode.FilePreOpen); SystemPreLoad.NotificationRaised += new EventHandler <SystemNotificationObjectEventArgs>(onSystemPreReset); SystemPostLoad = new SystemNotificationObjectHandler(SystemNotificationCode.FilePostOpen); SystemPostLoad.NotificationRaised += new EventHandler <SystemNotificationObjectEventArgs>(onSystemPostReset); SystemPostMerge = new SystemNotificationObjectHandler(SystemNotificationCode.FilePostMerge); SystemPostMerge.NotificationRaised += new EventHandler <SystemNotificationObjectEventArgs>(onSystemPostMerge); // import, dunno if we need that one // xref }
public MaxNodeEvents(NlmTreeListView listView, NodeController nodeControl) : base(listView, nodeControl) { ListView = listView; NodeControl = nodeControl; NodeCreated = new SystemNotificationAnimHandler(SystemNotificationCode.NodeCreated); NodeCreated.NotificationRaised += new EventHandler <SystemNotificationAnimEventArgs>(onNodeCreated); }
public static void onCreateFolder(Object sender, ClickEventArgs e) { NlmTreeListView listView = e.ListView; // Calculate unique name in current level. IEnumerable <FolderTreeNode> folderNodes = listView.NodeControl.Query.FolderNodes; String folderName = "Folder"; Int32 index = 1; while (folderNodes.Any(x => x.Name == folderName + index.ToString("000"))) { index += 1; } folderName += index.ToString("000"); // Create folder node. FolderTreeNode folderTreeNode = new FolderTreeNode(folderName); // Get parent node. BaseTreeNode parentTreeNode = null; if (listView.SelectedObjects.Count > 0) { BaseTreeNode treeNode = listView.SelectedObjects[0] as BaseTreeNode; if (treeNode is FolderTreeNode) { parentTreeNode = treeNode; } if (treeNode is LayerTreeNode) { parentTreeNode = treeNode.Parent; } } // Add folder to listview, ensure is visible by expanding parents. listView.AddObject(folderTreeNode, parentTreeNode); if (parentTreeNode != null) { listView.Expand(parentTreeNode); } // Scroll to new item. Int32 parentIndex = listView.IndexOf(folderTreeNode); if (parentIndex != -1) { listView.EnsureVisible(parentIndex); } // Sort, select, and begin edit. listView.Sort(listView.NlmColumns.NameColumn, SortOrder.Ascending); listView.SelectedObjects = new List <Object> { folderTreeNode }; listView.EditModel(folderTreeNode); }
public static void LoadNlmData(NlmTreeListView listView) { NlmData nlmData = GetAppData(MaxNodes.RootNode, DataAddress.NlmData) as NlmData; if (nlmData != null) { NlmDataIO.RestoreNlmData(listView, nlmData); } }
public DisabledNodeStyle(NlmTreeListView listView) { Color disableForeColor = Color.FromArgb( (listView.ForeColor.R / 2) + (listView.BackColor.R / 2), (listView.ForeColor.G / 2) + (listView.BackColor.G / 2), (listView.ForeColor.B / 2) + (listView.BackColor.B / 2) ); ForeColor = disableForeColor; }
public static void onSelectObjectsFromHighlight(Object sender, ClickEventArgs e) { NlmTreeListView listView = e.ListView; MaxNodes.ClearNodeSelection(); IEnumerable <UIntPtr> handles = listView.NodeControl.Query.SelectionAndAllChildObjectHandles; MaxNodes.SelectNodes(handles); }
public ColorColumn(NlmTreeListView listView) { Text = "Color"; Width = 40; TextAlign = HorizontalAlignment.Center; AspectEngine = new ColorAspectEngine(listView, this); Renderer = new ColorRenderer(); }
public NodeDragDropEngine(NlmTreeListView listView, NodeParentEngine nodeParentEngine, MaxEventEngine maxEvents) { ListView = listView; NodeParentEngine = nodeParentEngine; MaxEvents = maxEvents; // Add Events. ListView.ModelCanDrop += new EventHandler <ModelDropEventArgs>(CanDrop); ListView.ModelDropped += new EventHandler <ModelDropEventArgs>(Dropped); }
private static void onCreateLayer(Object sender, ClickEventArgs e, Boolean addSelection) { NlmTreeListView listView = e.ListView; listView.NodeControl.MaxEvents.LayerEvents.LayerCreated.UnregisterNotification(); IILayer layer = MaxLayers.CreateLayer(true, addSelection); UIntPtr handle = MaxAnimatable.GetHandleByAnim(layer); LayerTreeNode layerTreeNode = new LayerTreeNode(handle, listView.NodeControl.HandleMap); // Get parent node. BaseTreeNode parentTreeNode = null; if (listView.SelectedObjects.Count > 0) { BaseTreeNode treeNode = listView.SelectedObjects[0] as BaseTreeNode; if (treeNode is FolderTreeNode) { parentTreeNode = treeNode; } if (treeNode is LayerTreeNode) { parentTreeNode = treeNode.Parent; } } // Add folder to listview, ensure is visible by expanding parents. listView.AddObject(layerTreeNode, parentTreeNode); if (parentTreeNode != null) { listView.Expand(parentTreeNode); } // Scroll to new item. Int32 parentIndex = listView.IndexOf(layerTreeNode); if (parentIndex != -1) { listView.EnsureVisible(parentIndex); } // Sort, select listView.Sort(listView.NlmColumns.NameColumn, SortOrder.Ascending); listView.SelectedObjects = new List <Object> { layerTreeNode }; // Focus on the listview to ensure text entry goes to the edit box, and begin edit. listView.Focus(); listView.EditModel(layerTreeNode); // Register notification. listView.NodeControl.MaxEvents.LayerEvents.LayerCreated.RegisterNotification(); }
public NodeController(NlmTreeListView listView) { MaxEvents = new MaxEventEngine(listView, this); HandleMap = new HandleMap(); Query = new NodeQueryEngine(listView); Create = new NodeCreateEngine(listView, HandleMap); Destroy = new NodeDeleteEngine(listView, Query, HandleMap); CollapseExpand = new NodeCollapseExpandEngine(listView, Query); Parent = new NodeParentEngine(listView); DragDrop = new NodeDragDropEngine(listView, Parent, MaxEvents); }
public static void SaveFolderData(IEnumerable <FolderTreeNode> treeNodes, NlmTreeListView owner) { List <FolderData> folderData = new List <FolderData>(); foreach (FolderTreeNode treeNode in treeNodes) { folderData.Add(new FolderData(treeNode, owner)); } IAnimatable rootNode = GlobalInterface.Instance.COREInterface.RootNode as IAnimatable; SetAppData(rootNode, DataAddress.FolderData, folderData); }
// The main work is done here. // Find out if smart folder mode is being used // If false, return active image based on aspectValue. // If true, calculate correct icon to show depending on aspectValue and all parent values. // If a parent is true, the icon will be active and based on aspectValue. // If a parent is false, the icon will be inactive and based on aspectValue. public override void Render(Graphics g, Rectangle r) { this.DrawBackground(g, r); r = this.ApplyCellPadding(r); Image image = null; bool? aspectValue = this.Aspect as bool?; // Is the listItem enabled? If so, we need to calculate the correct active/inactive icon. if (ListItem.Enabled) { NlmTreeListView ListView = this.ListView as NlmTreeListView; if (ListView.SmartFolderMode) { BaseTreeNode baseTreeNode = this.RowObject as BaseTreeNode; bool parentValue = true; while (baseTreeNode.Parent != null) { INLMColumn nlmColumn = this.Column as INLMColumn; if ((Boolean?)nlmColumn.AspectEngine.GetAspect(baseTreeNode.Parent) == false) { parentValue = false; break; } baseTreeNode = baseTreeNode.Parent; } if (parentValue) { image = GetActiveImage(aspectValue); } else { image = GetInactiveImage(aspectValue); } } // Dumb folder mode is a lot simpler :) else { image = GetActiveImage(aspectValue); } } // If the item is disabled we want it to have 50% opacity, so we always use the inactive image. else { image = GetInactiveImage(aspectValue); } // Finally, after all that work, let's draw the image. if (image != null) { this.DrawAlignedImage(g, r, image); } }
public static void ApplyLook(NlmTreeListView listView) { using (CuiUpdater cuiUpdater = CuiUpdater.GetInstance()) { listView.BackColor = cuiUpdater.GetMaxColor(7); listView.ForeColor = cuiUpdater.GetMaxColor(1); listView.AlternateRowBackColor = Color.FromArgb(listView.BackColor.R + 5, listView.BackColor.G + 5, listView.BackColor.B + 5); listView.HighlightBackgroundColor = cuiUpdater.GetMaxColor(13); listView.UnfocusedHighlightBackgroundColor = cuiUpdater.GetMaxColor(13); listView.HighlightForegroundColor = cuiUpdater.GetMaxColor(11); listView.UnfocusedHighlightForegroundColor = cuiUpdater.GetMaxColor(11); } }
public static void SaveData(NlmTreeListView listView, NodeController nodeControl) { // Create folder and layer treeNode arrays. IEnumerable <FolderTreeNode> folderNodes = nodeControl.Query.FolderNodes; IEnumerable <LayerTreeNode> layerNodes = nodeControl.Query.LayerNodes; // Save layer and folder data. SaveFolderData(folderNodes, listView); SaveLayerData(layerNodes, listView, nodeControl.HandleMap); // Save TreeListView data SaveNlmData(listView); }
public static void RestoreNlmData(NlmTreeListView listView, NlmData nlmData) { listView.SmartFolderMode = nlmData.SmartFolderNode; NlmTreeNodeFilterEngine FilterEngine = listView.ModelFilter as NlmTreeNodeFilterEngine; if (nlmData.BonesFiltered) { FilterEngine.AddFilter(TreeNodeFilter.Bone); } if (nlmData.CameraFiltered) { FilterEngine.AddFilter(TreeNodeFilter.Camera); } if (nlmData.HelperFiltered) { FilterEngine.AddFilter(TreeNodeFilter.Helper); } if (nlmData.LightFiltered) { FilterEngine.AddFilter(TreeNodeFilter.Light); } if (nlmData.ObjectFiltered) { FilterEngine.AddFilter(TreeNodeFilter.Object); } if (nlmData.ShapeFiltered) { FilterEngine.AddFilter(TreeNodeFilter.Shape); } if (nlmData.SpaceWarpFiltered) { FilterEngine.AddFilter(TreeNodeFilter.SpaceWarp); } if (nlmData.LayerHiddenFiltered) { FilterEngine.AddFilter(TreeNodeFilter.LayerHidden); } if (nlmData.LayerFrozenFiltered) { FilterEngine.AddFilter(TreeNodeFilter.LayerFrozen); } }
public NodeCollapseExpandEngine(NlmTreeListView listView, NodeQueryEngine nodeQuery) { ListView = listView; NodeQuery = nodeQuery; ListView.CanExpandGetter = delegate(Object treeNode) { return((treeNode as BaseTreeNode).Children.Count > 0); }; ListView.ChildrenGetter = delegate(Object treeNode) { return((treeNode as BaseTreeNode).Children); }; }
public CurrentColumn(NlmTreeListView listView) { Text = "Current"; Width = 40; TriStateCheckBoxes = true; TextAlign = HorizontalAlignment.Center; AspectEngine = new CurrentAspectEngine(this, listView); Renderer = new MappedImageRenderer(new Object[] { true, new Bitmap(GetType().Module.Assembly.GetManifestResourceStream("NestedLayerManager.Resources.Icons.CheckState.CurrentChecked.png")), false, null, null, new Bitmap(GetType().Module.Assembly.GetManifestResourceStream("NestedLayerManager.Resources.Icons.CheckState.CurrentIndeterminate.png")), }); }
public NlmData(NlmTreeListView listView) { SmartFolderNode = listView.SmartFolderMode; NlmTreeNodeFilterEngine FilterEngine = listView.ModelFilter as NlmTreeNodeFilterEngine; BonesFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.Bone); CameraFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.Camera); HelperFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.Helper); LightFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.Light); ObjectFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.Object); ShapeFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.Shape); SpaceWarpFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.SpaceWarp); LayerHiddenFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.LayerHidden); LayerFrozenFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.LayerFrozen); }
public static void onAddSelectedObjectsToLayer(Object sender, ClickEventArgs e) { // TODO: // This is quite slow compared to the NodeEventCallback LayerChanged. Look at that for tips. // Do we really need BeginUpdate and EndUpdate? Calculate which objects to refresh. // Also fix crappy bug where adding children to an expanded layer does not redraw properly. NlmTreeListView listView = e.ListView; try { listView.BeginUpdate(); IList selection = listView.SelectedObjects; if (selection.Count == 1) { LayerTreeNode layerTreeNode = selection[0] as LayerTreeNode; if (layerTreeNode != null) { List <BaseTreeNode> moveTreeNodes = new List <BaseTreeNode>(); IAnimatable layerAnim = MaxAnimatable.GetAnimByHandle(layerTreeNode.Handle); foreach (IINode maxNode in MaxNodes.SelectedNodes) { UIntPtr maxNodeHandle = MaxAnimatable.GetHandleByAnim(maxNode as IAnimatable); List <BaseTreeNode> treeNodes = listView.NodeControl.HandleMap.GetTreeNodesByHandle(maxNodeHandle); foreach (BaseTreeNode treeNode in treeNodes) { moveTreeNodes.Add(treeNode); } MaxNodes.MoveNodeToLayer(maxNode, layerAnim as IILayer); } listView.NodeControl.Parent.MoveTreeNodes(moveTreeNodes, layerTreeNode); } } listView.Sort(listView.NlmColumns.NameColumn, SortOrder.Ascending); } catch { throw new Exception(); } finally { e.ListView.EndUpdate(); } }
public static void onInstanceSelectedLayers(Object sender, ClickEventArgs e) { NlmTreeListView listView = e.ListView; // Multiple items are being added, so let's use BeginUpdate. try { listView.BeginUpdate(); foreach (BaseTreeNode treeNode in listView.SelectedObjects) { LayerTreeNode layerTreeNode = treeNode as LayerTreeNode; if (layerTreeNode != null) { LayerTreeNode newLayerTreeNode = new LayerTreeNode(layerTreeNode.Handle, listView.NodeControl.HandleMap); foreach (ObjectTreeNode objectTreeNode in treeNode.Children) { ObjectTreeNode newObjectTreeNode = new ObjectTreeNode(objectTreeNode.Class, objectTreeNode.Handle, listView.NodeControl.HandleMap); newObjectTreeNode.Parent = newLayerTreeNode; newLayerTreeNode.Children.Add(newObjectTreeNode); } //foreach (LayerTreeNode instanceNode in layerTreeNode.Instances) //{ // instanceNode.Instances.Add(newLayerTreeNode); // newLayerTreeNode.Instances.Add(instanceNode); //} //layerTreeNode.Instances.Add(newLayerTreeNode); //newLayerTreeNode.Instances.Add(layerTreeNode); listView.AddObject(newLayerTreeNode, treeNode.Parent); } } listView.Sort(listView.NlmColumns.NameColumn, SortOrder.Ascending); } catch { throw new Exception(); } finally { listView.EndUpdate(); } }
public static void SaveLayerData(IEnumerable <LayerTreeNode> treeNodes, NlmTreeListView owner, HandleMap handleMap) { foreach (LayerTreeNode treeNode in treeNodes) { // Saving layer data is comprised of two sections. IAnimatable layerAnim = MaxAnimatable.GetAnimByHandle(treeNode.Handle); if (layerAnim != null) { // 1. Saving the layer data itself LayerData layerData = new LayerData(treeNode, owner, handleMap); SetAppData(layerAnim, DataAddress.LayerData, layerData); // 2. Saving all folder parents of the layer, in case it is merged and the data is needed. SaveParentFolderData(treeNode, layerAnim, owner); } } }
public NestedLayerManager() { System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); ListView = new NlmTreeListView(); SearchBar = new NlmSearchBar(ListView); ButtonPanelLeft = new NlmButtonPanelLeft(ListView); ButtonPanelRight = new NlmButtonPanelRight(ListView); ButtonPanelSide = new NlmButtonPanelSide(ListView); MaxLook.ApplyLook(this); ColumnCount = 3; RowCount = 3; Padding = new Padding(3); Dock = DockStyle.Fill; Controls.Add(ButtonPanelLeft, 1, 0); SetColumnSpan(ButtonPanelLeft, 1); Controls.Add(ButtonPanelRight, 2, 0); Controls.Add(SearchBar, 1, 1); SetColumnSpan(SearchBar, 2); Controls.Add(ButtonPanelSide, 0, 2); Controls.Add(ListView, 1, 2); SetColumnSpan(ListView, 2); RowStyles.Add(new RowStyle(SizeType.Absolute, ButtonPanelLeft.Controls[0].Height + 2)); RowStyles.Add(new RowStyle(SizeType.Absolute, SearchBar.Height + 2)); RowStyles.Add(new RowStyle(SizeType.AutoSize)); ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, ButtonPanelSide.Controls[0].Width + 2)); ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, ButtonPanelLeft.Controls.Count * ButtonPanelLeft.Controls[0].Width)); ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, ButtonPanelRight.Controls.Count * ButtonPanelRight.Controls[0].Width)); ListView.NodeControl.Create.BuildSceneTree(); stopwatch.Stop(); string listenerMessage = "Loaded in " + stopwatch.ElapsedMilliseconds + " milliseconds."; MaxListener.PrintToListener(listenerMessage); }
public FolderData(FolderTreeNode treeNode, NlmTreeListView owner) { // Node Properties ID = treeNode.ID; if (treeNode.Parent != null) { ParentID = treeNode.Parent.ID; } Expanded = owner.IsExpanded(treeNode); // Column Properties Name = treeNode.Name; Visible = treeNode.Visible; Freeze = treeNode.Freeze; Render = treeNode.Render; Color = treeNode.Color; Box = treeNode.Box; }
public VisibleColumn(NlmTreeListView listView) { Text = "Visible"; Width = 40; TriStateCheckBoxes = true; TextAlign = HorizontalAlignment.Center; AspectEngine = new VisibleAspectEngine(listView, this); Bitmap visibleCheckedBitmap = new Bitmap(GetType().Module.Assembly.GetManifestResourceStream("NestedLayerManager.Resources.Icons.CheckState.VisibleChecked.png")); Bitmap visibleUncheckedBitmap = new Bitmap(GetType().Module.Assembly.GetManifestResourceStream("NestedLayerManager.Resources.Icons.CheckState.VisibleUnchecked.png")); Bitmap visibleIndeterminateBitmap = new Bitmap(GetType().Module.Assembly.GetManifestResourceStream("NestedLayerManager.Resources.Icons.CheckState.VisibleIndeterminate.png")); Renderer = new MappedActiveImageRenderer( visibleCheckedBitmap, visibleUncheckedBitmap, visibleIndeterminateBitmap ); }
public RenderColumn(NlmTreeListView listView) { Text = "Render"; Width = 40; TriStateCheckBoxes = true; TextAlign = System.Windows.Forms.HorizontalAlignment.Center; AspectEngine = new RenderAspectEngine(listView, this); Bitmap renderCheckedBitmap = new Bitmap(GetType().Module.Assembly.GetManifestResourceStream("NestedLayerManager.Resources.Icons.CheckState.RenderChecked.png")); Bitmap renderUncheckedBitmap = new Bitmap(GetType().Module.Assembly.GetManifestResourceStream("NestedLayerManager.Resources.Icons.CheckState.Unchecked.png")); Bitmap renderIndeterminateBitmap = new Bitmap(GetType().Module.Assembly.GetManifestResourceStream("NestedLayerManager.Resources.Icons.CheckState.RenderIndeterminate.png")); Renderer = new MappedActiveImageRenderer( renderCheckedBitmap, renderUncheckedBitmap, renderIndeterminateBitmap ); }
public static void SearchBarEnterPressed(Object sender, SearchBarEventArgs e) { // Using filtered objects will include parents which are not string matched. // It is necessary to remove them from the array first. NlmTreeListView listView = e.ListView; String searchString = e.Text; IList filteredNodes = new List <BaseTreeNode>(); foreach (BaseTreeNode treeNode in listView.FilteredObjects) { String name = listView.NlmColumns.NameColumn.AspectEngine.GetAspect(treeNode) as String; if (name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0) { filteredNodes.Add(treeNode); } } listView.SelectObjects(filteredNodes); }
public NlmSearchBar(NlmTreeListView listView) { ListView = listView; MaxLook.ApplyLook(this); Margin = new Padding(0); Dock = DockStyle.Fill; this.BorderStyle = BorderStyle.FixedSingle; this.Height = 20; this.DispatchTimer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(400) }; this.TextChanged += new EventHandler(OnTextChanged); this.KeyDown += new KeyEventHandler(OnKeyDown); this.KeyPress += new KeyPressEventHandler(StopThatDing); this.DispatchTimer.Tick += new EventHandler(OnTimerTick); this.GotFocus += new EventHandler(onGotFocus); this.LostFocus += new EventHandler(onLostFocus); DelayedTextChanged += new EventHandler <SearchBarEventArgs>(KeyEvents.SearchBarTextChanged); EnterKeyDown += new EventHandler <SearchBarEventArgs>(KeyEvents.SearchBarEnterPressed); }
public static void onSelectLayersFromSelectedObjects(Object sender, ClickEventArgs e) { NlmTreeListView listView = e.ListView; List <BaseTreeNode> newSelection = new List <BaseTreeNode>(); foreach (IINode maxNode in MaxNodes.SelectedNodes) { UIntPtr maxNodeHandle = MaxAnimatable.GetHandleByAnim(maxNode as IAnimatable); List <BaseTreeNode> objectTreeNodes = listView.NodeControl.HandleMap.GetTreeNodesByHandle(maxNodeHandle); foreach (BaseTreeNode objectTreeNode in objectTreeNodes) { BaseTreeNode layerTreeNode = objectTreeNode.Parent; if (!newSelection.Contains(layerTreeNode)) { newSelection.Add(layerTreeNode); } listView.NodeControl.CollapseExpand.ExpandAllParents(layerTreeNode); } } listView.SelectedObjects = newSelection; }
public NlmColumnCollection(NlmTreeListView listView) { // Instance columns NameColumn = new NameColumn(listView); CurrentColumn = new CurrentColumn(listView); VisibleColumn = new VisibleColumn(listView); FreezeColumn = new FreezeColumn(listView); RenderColumn = new RenderColumn(listView); ColorColumn = new ColorColumn(listView); BoxColumn = new BoxColumn(listView); // Add columns to owner listView.AllColumns.Add(NameColumn); listView.AllColumns.Add(CurrentColumn); listView.AllColumns.Add(VisibleColumn); listView.AllColumns.Add(FreezeColumn); listView.AllColumns.Add(RenderColumn); listView.AllColumns.Add(ColorColumn); listView.AllColumns.Add(BoxColumn); listView.RebuildColumns(); }