private void Settings_SwagItemChanged(object sender, SwagItemChangedEventArgs e) { if (!CommandManager.IsFrozen) { Boolean canUndo = true; switch (e.PropertyChangedArgs) { case PropertyChangedExtendedEventArgs exArgs: #region SwagSettingBoolean if (exArgs.Object is SwagSettingBoolean boolSetting) { switch (boolSetting.Path) { case "Window/Settings/IsOpen": case "Window/CommandHistory/IsOpen": canUndo = false; break; } } #endregion SwagSettingBoolean #region General if (canUndo) { switch (exArgs.Object) { case SwagSettingGroup swagSettingGroup: switch (exArgs.PropertyName) { case "Parent": case "ObjValue": case "ValueTypeString": canUndo = false; break; case "Sequence": if ((Int32)exArgs.OldValue == -1) { canUndo = false; } break; } break; case SwagSetting swagSetting: switch (exArgs.PropertyName) { case "Parent": case "ObjValue": case "ValueTypeString": canUndo = false; break; case "Sequence": if ((Int32)exArgs.OldValue == -1) { canUndo = false; } break; } break; } } #endregion General #region SwagPropertyChangedCommand if (canUndo) { SwagPropertyChangedCommand cmd = new SwagPropertyChangedCommand( exArgs.PropertyName, exArgs.Object, exArgs.OldValue, exArgs.NewValue); cmd.Display = e.Message; CommandManager.AddCommand(cmd); } #endregion SwagPropertyChangedCommand break; } } }
private void SwagDataSet_SwagItemChanged(object sender, SwagItemChangedEventArgs e) { if (!SwagWindow.CommandManager.IsFrozen) { Boolean canUndo = true; String message = e.Message; switch (e.PropertyChangedArgs) { case PropertyChangedExtendedEventArgs exArgs: switch (exArgs.Object) { #region SwagDataTable case SwagDataTable swagDataTable: switch (exArgs.PropertyName) { case "Parent": case "ColumnsVisibilityView": case "ColumnsFilterView": case "FilterCommand": case "ImportCommand": case "ExportCommand": case "ApplyColumnVisibilityFilterCommand": case "ApplyColumnFiltersFilterCommand": case "ResetColumnsCommand": case "Tabs": case "Settings": case "IsInitialized": canUndo = false; break; case "Sequence": if ((Int32)exArgs.OldValue == -1) { canUndo = false; } break; } break; #endregion SwagDataTable #region SwagDataColumn case SwagDataColumn swagDataColumn: switch (exArgs.PropertyName) { case "Parent": case "SwagDataTable": canUndo = false; break; case "ColSeq": case "Sequence": if ((Int32)exArgs.OldValue == -1) { canUndo = false; } break; case "IsColumnFilterOpen": //Popup StaysOpen="False" leads to wierd interactions canUndo = false; break; } break; #endregion SwagDataColumn #region SwagDataRow case SwagDataRow swagDataRow: switch (e.PropertyChangedArgs.PropertyName) { case "Parent": canUndo = false; break; case "ColSeq": case "Sequence": if ((Int32)exArgs.OldValue == -1) { canUndo = false; } break; case "Value": JObject dif = JsonHelper.FindDiff((JObject)exArgs.NewValue, (JObject)exArgs.OldValue); if (dif.Count > 0) { message = swagDataRow.Path; foreach (KeyValuePair <String, JToken> kvp in dif) { JObject difLine = (JObject)kvp.Value; message += $"\n\t[{kvp.Key}] {difLine["-"].ToString()} => {difLine["+"].ToString()}"; } } else { canUndo = false; } break; case "DataRow": if (exArgs.OldValue == null) { canUndo = false; } break; } break; #endregion SwagDataRow } #region SwagPropertyChangedCommand if (canUndo) { SwagPropertyChangedCommand cmd = new SwagPropertyChangedCommand( exArgs.PropertyName, exArgs.Object, exArgs.OldValue, exArgs.NewValue); cmd.Display = message; SwagWindow.CommandManager.AddCommand(cmd); } #endregion SwagPropertyChangedCommand break; case CollectionPropertyChangedEventArgs colArgs: if (colArgs.NewItems != null) { foreach (SwagData swagData in colArgs.NewItems) { if (swagData is SwagDataSet subSet) { InitSwagDataSet(subSet); } } } break; } } }
private static void OptionCollection_SwagItemChanged(object sender, SwagItemChangedEventArgs e) { if (!SwagWindow.CommandManager.IsFrozen) { Boolean canUndo = true; switch (e.PropertyChangedArgs) { case PropertyChangedExtendedEventArgs exArgs: #region General switch (exArgs.Object) { case SwagOption opt: switch (exArgs.PropertyName) { case "Parent": case "IsSelected": case "IsExpanded": canUndo = false; break; case "Sequence": if ((Int32)exArgs.OldValue == -1) { canUndo = false; } break; } break; } #endregion General #region SwagPropertyChangedCommand if (canUndo) { SwagPropertyChangedCommand cmd = new SwagPropertyChangedCommand( exArgs.PropertyName, exArgs.Object, exArgs.OldValue, exArgs.NewValue); cmd.Display = e.Message; SwagWindow.CommandManager.AddCommand(cmd); } #endregion SwagPropertyChangedCommand break; case CollectionPropertyChangedEventArgs colArgs: #region SwagCollectionPropertyChangedCommand if (canUndo) { SwagCollectionPropertyChangedCommand cmd = new SwagCollectionPropertyChangedCommand( colArgs.PropertyName, colArgs.Object, colArgs.OldItems, colArgs.NewItems); cmd.Display = e.Message; SwagWindow.CommandManager.AddCommand(cmd); } #endregion SwagCollectionPropertyChangedCommand break; } } }