private void UpdateListViewColumns(ResourceListView2 listView, ColumnDescriptor[] columns, ResourceListDataProvider dataProvider, bool setGroupProviders) { foreach (JetListViewColumn col in listView.Columns) { ConversationStructureColumn convStructureColumn = col as ConversationStructureColumn; if (convStructureColumn != null) { convStructureColumn.DataProvider = dataProvider as ConversationDataProvider; } ResourcePropsColumn propsCol = col as ResourcePropsColumn; if (propsCol != null) { foreach (ColumnDescriptor colDesc in columns) { int[] propIds = PropNamesToIDs(colDesc.PropNames, true); if (propsCol.PropIdsEqual(propIds)) { UpdateGroupProvider(setGroupProviders, colDesc, propsCol); break; } } } ResourceListView2Column rlvCol = col as ResourceListView2Column; if (rlvCol != null) { rlvCol.OwnerList = dataProvider.ResourceList; } } }
private MultiLineColumnScheme BuildColumnScheme(IResource res) { MultiLineColumnScheme scheme = new MultiLineColumnScheme(); scheme.AlignTopLevelItems = _displayColumnManager.GetAlignTopLevelItems(res.Type); ArrayList allTypesColumnSchemes = _displayColumnManager.GetResourceColumnSchemes("?"); ArrayList resourceColumnSchemes = _displayColumnManager.GetResourceColumnSchemes(res.Type); ConversationStructureColumn structureColumn = FindConversationColumn(); if (structureColumn != null) { structureColumn.Indent = 8; scheme.AddColumn(structureColumn, 0, 0, 0, 0, ColumnAnchor.Left, SystemColors.ControlText, HorizontalAlignment.Left); } int allTypesIndent = 0; foreach (DisplayColumnManager.ResourceColumnScheme resScheme in allTypesColumnSchemes) { if (resScheme.StartX >= 0) { JetListViewColumn col = FindColumn(resScheme.PropIds); if (col != null) { scheme.AddColumn(col, resScheme.StartRow, resScheme.EndRow, resScheme.StartX, resScheme.Width, AnchorFromFlags(resScheme.Flags), resScheme.TextColor, resScheme.TextAlign); allTypesIndent = resScheme.StartX + resScheme.Width; } } } ArrayList hiddenColumns = null; int maxWidth = 0; foreach (DisplayColumnManager.ResourceColumnScheme resScheme in resourceColumnSchemes) { if (IsHiddenColumn(res, resScheme)) { if (hiddenColumns == null) { hiddenColumns = new ArrayList(); } hiddenColumns.Add(resScheme); } else { int width = resScheme.StartX + allTypesIndent + resScheme.Width; if (width > maxWidth) { maxWidth = width; } JetListViewColumn col = FindColumn(resScheme.PropIds); if (col != null) { scheme.AddColumn(col, resScheme.StartRow, resScheme.EndRow, resScheme.StartX + allTypesIndent, resScheme.Width, AnchorFromFlags(resScheme.Flags), resScheme.TextColor, resScheme.TextAlign); } } } if (hiddenColumns != null) { foreach (DisplayColumnManager.ResourceColumnScheme resScheme in hiddenColumns) { StretchColumnsToHidden(scheme, resScheme, allTypesIndent); } } foreach (DisplayColumnManager.ResourceColumnScheme resScheme in allTypesColumnSchemes) { if (resScheme.StartX < 0) { JetListViewColumn col = FindColumn(resScheme.PropIds); if (col != null) { scheme.AddColumn(col, resScheme.StartRow, resScheme.EndRow, maxWidth + resScheme.StartX, resScheme.Width, AnchorFromFlags(resScheme.Flags), resScheme.TextColor, resScheme.TextAlign); } } } return(scheme); }
private void RecreateListViewColumns(ResourceListView2 listView, ColumnDescriptor[] columns, ResourceListDataProvider dataProvider, bool setGroupProviders) { bool haveTreeColumn = false; listView.Columns.BeginUpdate(); try { listView.Columns.Clear(); foreach (ColumnDescriptor desc in columns) { int[] propIds = PropNamesToIDs(desc.PropNames, true); ResourcePropsColumn colHdr; if (dataProvider is ConversationDataProvider && !haveTreeColumn && ((propIds.Length == 1 && propIds [0] == ResourceProps.Type) || (desc.Flags & ColumnDescriptorFlags.FixedSize) == 0)) { haveTreeColumn = true; ConversationStructureColumn col = new ConversationStructureColumn(dataProvider as ConversationDataProvider); listView.Columns.Add(col); } if (propIds.Length == 1 && propIds [0] == ResourceProps.Type) { colHdr = listView.AddIconColumn(); if (dataProvider is ConversationDataProvider) { colHdr.ShowHeader = false; } } else { ICustomColumn[] customColumns = BuildCustomColumns(propIds); if (customColumns == null) { colHdr = listView.AddColumn(propIds); colHdr.Text = GetColumnText(propIds); SetPropertyToTextCallbacks(colHdr as ResourceListView2Column); (colHdr as ResourceListView2Column).OwnerList = dataProvider.ResourceList; } else { colHdr = listView.AddCustomColumn(propIds, customColumns); } FillSortMenuText(colHdr, desc, propIds); colHdr.CustomComparer = desc.CustomComparer; colHdr.Alignment = GetDefaultAlignment(propIds); } if ((desc.Flags & ColumnDescriptorFlags.AutoSize) != 0) { colHdr.AutoSize = true; colHdr.AutoSizeMinWidth = desc.Width; } else { colHdr.Width = desc.Width; if ((desc.Flags & ColumnDescriptorFlags.FixedSize) != 0) { colHdr.FixedSize = true; } } UpdateGroupProvider(setGroupProviders, desc, colHdr); } } finally { listView.Columns.EndUpdate(); } }