/// <summary> /// Validate the key/value pair of the row /// </summary> protected override void Validate(DataGridViewKeyValueRow <ResXDataNode> row) { if (row == null) { throw new ArgumentNullException("row"); } string key = row.Key; string value = row.Value; string originalValue = (string)row.Cells[KeyColumnName].Tag; editorControl.conflictResolver.TryAdd(originalValue, key, row, editorControl.Editor.ProjectItem, null); if (originalValue == null) { row.Cells[KeyColumnName].Tag = key; } row.UpdateErrorSetDisplay(); }
/// <summary> /// Validates given row and updates its error messages /// </summary> protected override void Validate(DataGridViewKeyValueRow <CodeStringResultItem> row) { object dest = row.Cells[DestinationColumnName].Value; bool existsSameValue = false; if (dest == null) // no destination file was selected { row.ErrorMessages.Add(NoDestinationFileError); } else { row.ErrorMessages.Remove(NoDestinationFileError); ResXProjectItem resxItem = resxItemsCache[dest.ToString()]; if (!resxItem.IsLoaded) { resxItem.Load(); // load the ResX file VLDocumentViewsManager.SetFileReadonly(resxItem.InternalProjectItem.GetFullPath(), true); // lock it loadedItems.Add(resxItem); } string key = row.Key; string value = row.Value; CONTAINS_KEY_RESULT keyConflict = resxItem.GetKeyConflictType(key, value, true); // get conflict type switch (keyConflict) { case CONTAINS_KEY_RESULT.EXISTS_WITH_SAME_VALUE: row.ErrorMessages.Remove(DuplicateKeyError); existsSameValue = true; break; case CONTAINS_KEY_RESULT.EXISTS_WITH_DIFF_VALUE: row.ErrorMessages.Add(DuplicateKeyError); break; case CONTAINS_KEY_RESULT.DOESNT_EXIST: row.ErrorMessages.Remove(DuplicateKeyError); break; } string originalValue = (string)row.Cells[KeyColumnName].Tag; ((DestinationKeyValueConflictResolver)ConflictResolver).TryAdd(originalValue, key, row, resxItem, row.DataSourceItem.Language); if (originalValue == null) { row.Cells[KeyColumnName].Tag = key; } } row.UpdateErrorSetDisplay(); // update error messages if (row.ErrorMessages.Count == 0) { if (existsSameValue) // set background color according to conflict type { row.DefaultCellStyle.BackColor = ExistingKeySameValueColor; } else { row.DefaultCellStyle.BackColor = Color.White; } } }