public void ReconfigureTreeColumns() { if (!DataLayer.IsConnected) { return; } tvWorkitems.HideEditor(); tvWorkitems.Columns.Clear(); tvWorkitems.NodeControls.Clear(); columnToAttributeMappings.Clear(); foreach (var column in configuration.GridSettings.Columns) { if (column.EffortTracking && !DataLayer.EffortTracking.TrackEffort) { continue; } var columnName = DataLayer.LocalizerResolve(column.Name); var dataPropertyName = columnName.Replace(" ", string.Empty); columnToAttributeMappings.Add(dataPropertyName, column.Attribute); var treeColumn = new TreeColumn(columnName, column.Width) { SortOrder = SortOrder.None, TooltipText = dataPropertyName }; switch(column.Type) { case "String": case "Effort": var textEditor = new CustomNodeTextBox(); ConfigureEditor(textEditor, dataPropertyName); textEditor.EditEnabled = !textEditor.IsReadOnly; textEditor.IsColumnReadOnly = column.ReadOnly; textEditor.ParentColumn = treeColumn; textEditor.IsEditEnabledValueNeeded += CheckCellEditability; tvWorkitems.NodeControls.Add(textEditor); textEditor.KeyTextBoxDown += tvWorkitems_PreviewKeyDown; break; case "List": var listEditor = new NodeComboBox(); ConfigureEditor(listEditor, dataPropertyName); listEditor.EditEnabled = !column.ReadOnly; listEditor.ParentColumn = treeColumn; listEditor.IsEditEnabledValueNeeded += CheckCellEditability; tvWorkitems.NodeControls.Add(listEditor); listEditor.KeyComboBoxDown += tvWorkitems_PreviewKeyDown; break; case "Multi": var listBoxEditor = new NodeListBox {ParentTree = tvWorkitems}; ConfigureEditor(listBoxEditor, dataPropertyName); listBoxEditor.EditEnabled = !column.ReadOnly; listBoxEditor.ParentColumn = treeColumn; listBoxEditor.IsEditEnabledValueNeeded += CheckCellEditability; tvWorkitems.NodeControls.Add(listBoxEditor); listBoxEditor.KeyListBoxDown += tvWorkitems_PreviewKeyDown; break; default: throw new NotSupportedException(); } tvWorkitems.Columns.Add(treeColumn); } AddStateIcon(); }
public void ReconfigureTreeColumns() { if (!DataLayer.IsConnected) { return; } tvWorkitems.HideEditor(); tvWorkitems.Columns.Clear(); tvWorkitems.NodeControls.Clear(); columnToAttributeMappings.Clear(); foreach (var column in configuration.GridSettings.Columns) { if (column.EffortTracking && !DataLayer.EffortTracking.TrackEffort) { continue; } var dataPropertyName = DataLayer.LocalizerResolve(column.Name); columnToAttributeMappings.Add(dataPropertyName, column.Attribute); var treeColumn = new TreeColumn(dataPropertyName, column.Width) { SortOrder = SortOrder.None, TooltipText = dataPropertyName }; switch (column.Type) { case "String": case "Effort": var textEditor = new CustomNodeTextBox(); ConfigureEditor(textEditor, dataPropertyName); textEditor.EditEnabled = !textEditor.IsReadOnly; textEditor.IsColumnReadOnly = column.ReadOnly; textEditor.ParentColumn = treeColumn; textEditor.IsEditEnabledValueNeeded += CheckCellEditability; tvWorkitems.NodeControls.Add(textEditor); break; case "List": var listEditor = new NodeComboBox(); ConfigureEditor(listEditor, dataPropertyName); listEditor.EditEnabled = !column.ReadOnly; listEditor.ParentColumn = treeColumn; listEditor.IsEditEnabledValueNeeded += CheckCellEditability; tvWorkitems.NodeControls.Add(listEditor); break; case "Multi": var listBoxEditor = new NodeListBox { ParentTree = tvWorkitems }; ConfigureEditor(listBoxEditor, dataPropertyName); listBoxEditor.EditEnabled = !column.ReadOnly; listBoxEditor.ParentColumn = treeColumn; listBoxEditor.IsEditEnabledValueNeeded += CheckCellEditability; tvWorkitems.NodeControls.Add(listBoxEditor); break; default: throw new NotSupportedException(); } tvWorkitems.Columns.Add(treeColumn); } AddStateIcon(); }