/** * Adds a checklistbox item for the specified property resource. */ private PropertyTypeTag AddItemForPropType(ColumnDescriptor colDesc, int[] propIds, bool[] reverseLinks, bool isChecked) { PropertyTypeTag tag = new PropertyTypeTag(colDesc, propIds, reverseLinks, isChecked); AddPropTypeItem(tag, isChecked); return(tag); }
private void AddPropTypeItem(PropertyTypeTag tag, bool isChecked) { _propListView.Nodes.Add(tag); if (isChecked) { _checkColumn.SetItemCheckState(tag, CheckBoxState.Checked); } UpdateCheckboxColumns(tag, isChecked); }
private void SetFlagFromColumn(PropertyTypeTag tag, CheckBoxColumn column, ColumnDescriptorFlags flag) { if (column.GetItemCheckState(tag) == CheckBoxState.Checked) { tag.ColDesc.Flags |= flag; } else { tag.ColDesc.Flags &= ~flag; } }
private void SetColumnFromFlag(PropertyTypeTag tag, CheckBoxColumn column, ColumnDescriptorFlags flag, bool isChecked) { if (isChecked) { column.SetItemCheckState(tag, ((tag.ColDesc.Flags & flag) != 0) ? CheckBoxState.Checked : CheckBoxState.Unchecked); } else { column.SetItemCheckState(tag, CheckBoxState.Grayed); } }
private void UpdateCheckboxColumns(PropertyTypeTag tag, bool isChecked) { if ((tag.ColDesc.Flags & ColumnDescriptorFlags.FixedSize) != 0) { _autoSizeColumn.SetItemCheckState(tag, CheckBoxState.Grayed); } else { SetColumnFromFlag(tag, _autoSizeColumn, ColumnDescriptorFlags.AutoSize, isChecked); } SetColumnFromFlag(tag, _showIfNotEmptyColumn, ColumnDescriptorFlags.ShowIfNotEmpty, isChecked); SetColumnFromFlag(tag, _showIfDistinctColumn, ColumnDescriptorFlags.ShowIfDistinct, isChecked); }
/** * Applies the columns selected in the dialog to the resource list view. */ private void SaveColumnsToState(ResourceListState state) { ArrayList newColumnDescriptors = new ArrayList(); foreach (JetListViewNode node in _propListView.Nodes) { PropertyTypeTag tag = (PropertyTypeTag)node.Data; if (_checkColumn.GetItemCheckState(tag) == CheckBoxState.Checked) { SetFlagFromColumn(tag, _autoSizeColumn, ColumnDescriptorFlags.AutoSize); SetFlagFromColumn(tag, _showIfNotEmptyColumn, ColumnDescriptorFlags.ShowIfNotEmpty); SetFlagFromColumn(tag, _showIfDistinctColumn, ColumnDescriptorFlags.ShowIfDistinct); newColumnDescriptors.Add(tag.ColDesc); } } state.Columns = (ColumnDescriptor[])newColumnDescriptors.ToArray(typeof(ColumnDescriptor)); }
private void AddUncheckedColumns(ArrayList propTypeList, IResourceList resList, Hashtable nameToPropTagMap) { foreach (IPropType propType in propTypeList) { bool linksReverse = AreLinksReverse(resList, propType.Id); string displayName = linksReverse ? propType.ReverseDisplayName : propType.DisplayName; if (displayName == null) { displayName = propType.Name; } PropertyTypeTag propTypeTag = (PropertyTypeTag)nameToPropTagMap [displayName]; if (propTypeTag == null) { ColumnDescriptor colDesc = new ColumnDescriptor(propType.Name, 150); _displayColumnManager.FindColumnDescriptor(propType.Name, ref colDesc); propTypeTag = new PropertyTypeTag(colDesc, new int[] { propType.Id }, new bool[] { linksReverse }, false); nameToPropTagMap [displayName] = propTypeTag; } else if (!propTypeTag.InitialChecked) { propTypeTag.AppendPropType(propType); } } ArrayList tags = new ArrayList(nameToPropTagMap.Values); tags.Sort(); foreach (PropertyTypeTag tag in tags) { if (!tag.InitialChecked) { AddPropTypeItem(tag, false); } } }
private void HandleAfterCheck(object sender, CheckBoxEventArgs e) { PropertyTypeTag tag = (PropertyTypeTag)e.Item; UpdateCheckboxColumns(tag, (e.NewState == CheckBoxState.Checked)); }
/** * Fills the checklistbox with properties for the specified resource list. */ private void FillPropertyList() { IResourceList allPropList = Core.ResourceStore.GetAllResources("PropType"); allPropList.Sort(new SortSettings(ResourceProps.DisplayName, true)); ArrayList propTypeList = new ArrayList(); IntHashTable propTypeHash = new IntHashTable(); foreach (IResource res in allPropList) { int propId = res.GetIntProp("ID"); if (!Core.ResourceStore.PropTypes [propId].HasFlag(PropTypeFlags.Internal)) { if (StateHasProp(_state, propId) || _availableColumns.IndexOf(propId) >= 0 || _resourceList.HasProp(propId)) { IPropType propType = Core.ResourceStore.PropTypes [propId]; propTypeList.Add(propType); propTypeHash [propId] = propType; } } } if (StateHasProp(_state, ResourceProps.DisplayName) || IsDisplayNameColumnAvailable()) { IPropType displayNamePropType = Core.ResourceStore.PropTypes [ResourceProps.DisplayName]; propTypeList.Add(displayNamePropType); propTypeHash [ResourceProps.DisplayName] = displayNamePropType; } Hashtable nameToPropTagMap = new Hashtable(); // first, add the columns already in the list, in the list order foreach (ColumnDescriptor colDesc in _state.Columns) { int[] propIds = _displayColumnManager.PropNamesToIDs(colDesc.PropNames, true); if (propIds.Length == 1 && propIds [0] == ResourceProps.Type) { continue; } bool[] reverseLinks = new bool [propIds.Length]; for (int i = 0; i < propIds.Length; i++) { reverseLinks [i] = AreLinksReverse(_resourceList, propIds [i]); } for (int i = 0; i < propIds.Length; i++) { IPropType propType = (IPropType)propTypeHash [propIds [i]]; if (propType == null) { propType = (IPropType)propTypeHash [-propIds [i]]; } if (propType != null) { propTypeList.Remove(propType); } } PropertyTypeTag tag = AddItemForPropType(colDesc, propIds, reverseLinks, true); nameToPropTagMap [tag.ToString()] = tag; } AddUncheckedColumns(propTypeList, _resourceList, nameToPropTagMap); }