void SetBackOrTextColor(DataGridView gridView, int rowIndex, int columnIndex) { dlgColor.Color = ConditionalFormattingHelper.GetColorFromDisplayText((gridView.Rows[rowIndex].Cells[columnIndex]).Value.ToString()); if (dlgColor.ShowDialog() == DialogResult.Cancel) { return; } (gridView.Rows[rowIndex].Cells[columnIndex]).Value = ConditionalFormattingHelper.GetDisplayTextFromColor(dlgColor.Color); }
void btnSetDefaultSysDif_Click(object sender, EventArgs e) { for (int index = 0; index < dgvBaseSystemFormatting.Rows.Count; ++index) { dgvBaseSystemFormatting.Rows[index].Cells[colBackColorBaseSystemFormatting.Name].Value = ConditionalFormattingHelper.GetDisplayTextFromColor(_defaultColorSystemDifferences); dgvBaseSystemFormatting.Rows[index].Cells[colForeColorBaseSystemFormatting.Name].Value = ConditionalFormattingHelper._noSpecialColor; } }
internal override bool Execute(TreeListNode senderNode) { if (!senderNode.Visible || !_column.Visible) //do not take into account cells which are hidden due to row-hiding or columns moved to the hidden-system-box { return(false); //(not visible cells cannot be focused and thus are a e.g. a problem with search next) } if (_mustBeExpanded && !IsFullyExpanded(senderNode)) { return(false); } if (_mustBeWithinNodes != null && !_mustBeWithinNodes.Contains(senderNode)) { return(false); } object cellValue = senderNode.GetValue(_column); if (cellValue == null) { return(false); } foreach (string pattern in ConditionalFormattingHelper.GetFormatConditionPatterns(_patterns)) { if (EM_Helpers.DoesValueMatchPattern(pattern, cellValue.ToString(), _matchCase, _matchWord)) { return(true); } if (_includePrivateComments && TreeListManagement.TreeListBuilder.IsCommentColumn(_column)) { TreeListTags.BaseTreeListTag tag = senderNode.Tag as TreeListTags.BaseTreeListTag; if (tag != null && EM_Helpers.DoesValueMatchPattern(pattern, tag.GetPrivateComment(), _matchCase, _matchWord)) { return(true); } } } return(false); }
internal ConditionalFormattingForm(string countryShortName, CountryConfigFacade countryConfigFacade) { InitializeComponent(); _countryConfigFacade = countryConfigFacade; lblCountry.Text = countryShortName; //put all systems in a list for easier access List <string> allSystemNames = new List <string>(); foreach (CountryConfig.SystemRow systemRow in countryConfigFacade.GetSystemRows()) { allSystemNames.Add(systemRow.Name); } //grid for format settings of base-derived-system differences: //add a row for each system (to be completed by base-system and format settings below, if there are any) //fill combo for selecting base system (with all available systems) foreach (string systemName in allSystemNames) { int index = dgvBaseSystemFormatting.Rows.Add(systemName, string.Empty, ConditionalFormattingHelper._noSpecialColor, ConditionalFormattingHelper._noSpecialColor); dgvBaseSystemFormatting.Rows[index].Cells[colBackColorBaseSystemFormatting.Name].Value = ConditionalFormattingHelper.GetDisplayTextFromColor(_defaultColorSystemDifferences); dgvBaseSystemFormatting.Rows[index].Tag = null; } foreach (CountryConfig.ConditionalFormatRow conditionalFormatRow in countryConfigFacade.GetConditionalFormatRows()) { //fill grid for format settings of conditional formatting if (conditionalFormatRow.Condition != null && conditionalFormatRow.Condition != string.Empty) { string applySystemNames = string.Empty; foreach (CountryConfig.ConditionalFormat_SystemsRow conditionalFormat_SystemsRow in conditionalFormatRow.GetConditionalFormat_SystemsRows()) { applySystemNames += conditionalFormat_SystemsRow.SystemName + _separator; } if (applySystemNames != string.Empty) { applySystemNames = applySystemNames.Substring(0, applySystemNames.Length - 1); } int index = dgvConditionalFormatting.Rows.Add(conditionalFormatRow.Condition, applySystemNames, conditionalFormatRow.BackColor == string.Empty ? ConditionalFormattingHelper._noSpecialColor : conditionalFormatRow.BackColor, conditionalFormatRow.ForeColor == string.Empty ? ConditionalFormattingHelper._noSpecialColor : conditionalFormatRow.ForeColor); dgvConditionalFormatting.Rows[index].Tag = conditionalFormatRow; } //complete grid for format settings of base-derived-system differences if (conditionalFormatRow.BaseSystemName != null && conditionalFormatRow.BaseSystemName != string.Empty) { if (countryConfigFacade.GetSystemRowByName(conditionalFormatRow.BaseSystemName) == null) { continue; //base system may have been deleted meanwhile } if (conditionalFormatRow.GetConditionalFormat_SystemsRows().Count() == 0) { continue; //should not happen, there ought to be either no or exactely one base-derived-differences setting (and if there is a setting there must be a respective system-format-link) } CountryConfig.ConditionalFormat_SystemsRow conditionalFormat_SystemsRow = conditionalFormatRow.GetConditionalFormat_SystemsRows().ElementAt(0); int index = allSystemNames.IndexOf(conditionalFormat_SystemsRow.SystemName); if (index < 0) { continue; //should not happen (would mean incomplete delete of a system or a similar error) } dgvBaseSystemFormatting.Rows[index].Cells[colBaseSystem.Name].Value = conditionalFormatRow.BaseSystemName; dgvBaseSystemFormatting.Rows[index].Cells[colBackColorBaseSystemFormatting.Name].Value = conditionalFormatRow.BackColor == string.Empty ? ConditionalFormattingHelper._noSpecialColor : conditionalFormatRow.BackColor; dgvBaseSystemFormatting.Rows[index].Cells[colForeColorBaseSystemFormatting.Name].Value = conditionalFormatRow.ForeColor == string.Empty ? ConditionalFormattingHelper._noSpecialColor : conditionalFormatRow.ForeColor; dgvBaseSystemFormatting.Rows[index].Tag = conditionalFormatRow; } } }
internal void SetSystemFormats() {//set backcolor and foreColor of systems' cells according to the conditional formatting settings defined by the user //first clear all current formats foreach (TreeListColumn formatColumn in _mainForm._specialFormatCells.Keys) { _mainForm._specialFormatCells[formatColumn].Clear(); } _mainForm._specialFormatCells.Clear(); foreach (TreeListColumn column in _mainForm.treeList.Columns) { if (IsFixedColumnLeft(column) || IsFixedColumnRight(column)) { continue; //no conditional formatting for policy-, group- and comment-column } SystemTreeListTag systemTag = column.Tag as SystemTreeListTag; foreach (CountryConfig.ConditionalFormatRow conditionalFormatRow in _countryConfigFacade.GetConditionalFormatRowsOfSystem(systemTag.GetSystemRow())) { //first define condition ... IsSpecificBase condition = null; //'standard' conditional formatting: does cell value correspond to specific patterns if (conditionalFormatRow.BaseSystemName == null || conditionalFormatRow.BaseSystemName == string.Empty) { condition = new DoesNodeMatchPatterns(conditionalFormatRow.Condition, column); } //special conditional formatting: show differences between the system and its base-system else { TreeListColumn columnBaseSystem = _mainForm.treeList.Columns.ColumnByName(conditionalFormatRow.BaseSystemName); if (columnBaseSystem == null) { continue; //base system does for whatever reason not exist (was e.g. deleted) } condition = new IsNodeValueDifferent(column, columnBaseSystem); } //... then find all cells which match condition ... TreatSpecificNodes treater = new TreatSpecificNodes(condition, null, false); _mainForm.treeList.NodesIterator.DoOperation(treater); //... finally add to list of cells to be formatted: formatting is accomplished in MainForm's treeList_NodeCellStyle-callback (based on the list) Color backColor = conditionalFormatRow.BackColor == ConditionalFormattingHelper._noSpecialColor ? Color.Empty : ConditionalFormattingHelper.GetColorFromDisplayText(conditionalFormatRow.BackColor); Color foreColor = conditionalFormatRow.ForeColor == ConditionalFormattingHelper._noSpecialColor ? Color.Empty : ConditionalFormattingHelper.GetColorFromDisplayText(conditionalFormatRow.ForeColor); AddToSpecialFormatCells(column, treater.GetSpecificNodes(), backColor, foreColor); } } }