Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,19 @@ public override bool Evaluate(object item)
return this.Evaluate(castItem);
}

/// <summary>
/// Creates a clone of the ComparableValueFilterRule instance.
/// </summary>
/// <returns>
/// Returns a clone of the ComparableValueFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
ComparableValueFilterRule<T> rule = (ComparableValueFilterRule<T>)Activator.CreateInstance(this.GetType());
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if item matches a derived classes criteria.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ public DoesNotEqualFilterRule()
this.DefaultNullValueEvaluation = true;
}

/// <summary>
/// Creates a clone of the DoesNotEqualFilterRule instance.
/// </summary>
/// <returns>
/// A clone of the DoesNotEqualFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
DoesNotEqualFilterRule<T> rule = new DoesNotEqualFilterRule<T>();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if item is not equal to Value.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ public EqualsFilterRule()
this.DisplayName = UICultureResources.FilterRule_Equals;
}

/// <summary>
/// Creates a new EqualsFilterRule that is a clone of the current instance.
/// </summary>
/// <returns>
/// A new EqualsFilterRule that is a clone of the current instance.
/// </returns>
public override FilterRule Clone()
{
EqualsFilterRule<T> rule = new EqualsFilterRule<T>();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if item is equal to Value.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ protected FilterRule()
/// <returns>Returns true if the item meets the criteria. False otherwise.</returns>
public abstract bool Evaluate(object item);

/// <summary>
/// Creates a clone of this FilterRule.
/// </summary>
/// <returns>Returns a clone of this FilterRule.</returns>
public abstract FilterRule Clone();

#region EvaluationResultInvalidated

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public static class FilterRuleExtensions
/// </returns>
public static FilterRule DeepCopy(this FilterRule rule)
{
throw new NotSupportedException();
return rule.Clone();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,21 @@ public ValidatingValue<T> EndValue
protected set;
}

/// <summary>
/// Creates a clone of the FilterRule.
/// </summary>
/// <returns>
/// A clone of the FilterRule.
/// </returns>
public override FilterRule Clone()
{
IsBetweenFilterRule<T> clone = new IsBetweenFilterRule<T>();
clone.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
clone.StartValue = this.StartValue;
clone.EndValue = this.EndValue;
return clone;
}

#endregion Properties

#region Ctor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,18 @@ public IsEmptyFilterRule()
this.DisplayName = UICultureResources.FilterRule_IsEmpty;
}

/// <summary>
/// Creates a clone of the IsEmptyFilterRule instance.
/// </summary>
/// <returns>
/// A clone of IsEmptyFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
IsEmptyFilterRule rule = new IsEmptyFilterRule();
return rule;
}

/// <summary>
/// Gets a values indicating whether the supplied item is empty.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ public IsGreaterThanFilterRule()
this.DisplayName = UICultureResources.FilterRule_GreaterThanOrEqual;
}

/// <summary>
/// Creates a new IsGreaterThanFilterRule that is a clone of the current instance.
/// </summary>
/// <returns>
/// A new IsGreaterThanFilterRule that is a clone of the current instance.
/// </returns>
public override FilterRule Clone()
{
IsGreaterThanFilterRule<T> rule = new IsGreaterThanFilterRule<T>();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if item is greater than Value.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ public IsLessThanFilterRule()
this.DisplayName = UICultureResources.FilterRule_LessThanOrEqual;
}

/// <summary>
/// Creates a new IsLessThanFilterRule that is a clone of the current instance.
/// </summary>
/// <returns>
/// A new IsLessThanFilterRule that is a clone of the current instance.
/// </returns>
public override FilterRule Clone()
{
IsLessThanFilterRule<T> rule = new IsLessThanFilterRule<T>();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if item is less than Value.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,18 @@ public IsNotEmptyFilterRule()
this.DisplayName = UICultureResources.FilterRule_IsNotEmpty;
}

/// <summary>
/// Creates a clone of the IsNotEmptyFilterRule.
/// </summary>
/// <returns>
/// A clone of the IsNotEmptyFilterRule.
/// </returns>
public override FilterRule Clone()
{
IsNotEmptyFilterRule rule = new IsNotEmptyFilterRule();
return rule;
}

/// <summary>
/// Gets a values indicating whether the supplied item is not empty.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,20 @@ public ICollection<string> PropertyNames
private set;
}

/// <summary>
/// Creates a clone of this <see cref="PropertiesTextContainsFilterRule"/>.
/// </summary>
/// <returns>
/// A clone of this <see cref="PropertiesTextContainsFilterRule"/>.
/// </returns>
public override FilterRule Clone()
{
PropertiesTextContainsFilterRule clone = new PropertiesTextContainsFilterRule();
clone.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
clone.PropertyNames = new List<string>(this.PropertyNames);
return clone;
}

/// <summary>
/// Evaluates whether the specified properties on <paramref name="item"/> contain the current value.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,17 @@ public override bool Evaluate(object item)
return this.AvailableRules.SelectedValue.Evaluate(propertyValue);
}

/// <summary>
/// Creates a clone of the PropertyValueSelectorFilterRule instance.
/// </summary>
/// <returns>
/// Returns a clone of the PropertyValueSelectorFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
return new PropertyValueSelectorFilterRule<T>(this.PropertyName, this.DisplayName, this.AvailableRules.AvailableValues);
}

#endregion Public Methods

#region Private Methods
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,23 @@ public override bool Evaluate(object item)
return this.AvailableRules.SelectedValue.Evaluate(item);
}

/// <summary>
/// Creates a clone of the SelectorFilterRule instance.
/// </summary>
/// <returns>
/// Returns a clone of the SelectorFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
SelectorFilterRule clone = new SelectorFilterRule();
clone.DisplayName = this.DisplayName;
clone.AvailableRules = this.AvailableRules;
clone.AvailableRules.SelectedValueChanged += clone.AvailableRules_SelectedValueChanged;
clone.AvailableRules.SelectedValue.EvaluationResultInvalidated += clone.SelectedValue_EvaluationResultInvalidated;

return clone;
}

/// <summary>
/// Called when the SelectedValue within AvailableRules changes.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,15 @@ protected SingleValueComparableValueFilterRule()

#endregion Ctor

/// <summary>
/// Creates a clone of the FilterRule.
/// </summary>
/// <returns>A clone of the FilterRule.</returns>
public override FilterRule Clone()
{
return base.Clone();
}

private void Value_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "Value")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ public TextContainsFilterRule()
this.DisplayName = UICultureResources.FilterRule_Contains;
}

/// <summary>
/// Creates a clone of the TextContainsFilterRule instance.
/// </summary>
/// <returns>
/// Returns a clone of the TextContainsFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
TextContainsFilterRule rule = new TextContainsFilterRule();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if Value is contained within data.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,20 @@ public TextDoesNotContainFilterRule()
this.DefaultNullValueEvaluation = true;
}

/// <summary>
/// Creates a clone of the TextDoesNotContainFilterRule instance.
/// </summary>
/// <returns>
/// A clone of the TextDoesNotContainFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
TextDoesNotContainFilterRule rule = new TextDoesNotContainFilterRule();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if Value is not contained within data.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,20 @@ public TextDoesNotEqualFilterRule()
this.DefaultNullValueEvaluation = true;
}

/// <summary>
/// Creates a clone of the TextDoesNotEqualFilterRule instance.
/// </summary>
/// <returns>
/// Returns a clone of the TextDoesNotEqualFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
TextDoesNotEqualFilterRule rule = new TextDoesNotEqualFilterRule();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if data is not equal to Value.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ public TextEndsWithFilterRule()
this.DisplayName = UICultureResources.FilterRule_TextEndsWith;
}

/// <summary>
/// Creates a clone of the TextEndsWithFilterRule instance.
/// </summary>
/// <returns>
/// Returns a clone of the TextEndsWithFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
TextEndsWithFilterRule rule = new TextEndsWithFilterRule();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if data ends with Value.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,20 @@ public TextEqualsFilterRule()
this.DisplayName = UICultureResources.FilterRule_Equals;
}

/// <summary>
/// Creates a clone of the TextEqualsFilterRule instance.
/// </summary>
/// <returns>
/// Returns a clone of the TextEqualsFilterRule instance.
/// </returns>
public override FilterRule Clone()
{
TextEqualsFilterRule rule = new TextEqualsFilterRule();
rule.Value = this.Value;
rule.DefaultNullValueEvaluation = this.DefaultNullValueEvaluation;
return rule;
}

/// <summary>
/// Determines if data is equal to Value.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,17 @@ public bool CultureInvariant
}
}

/// <summary>
/// Creates a clone of the FilterRule.
/// </summary>
/// <returns>
/// Returns a clone of the FilterRule.
/// </returns>
public override FilterRule Clone()
{
return base.Clone();
}

/// <summary>
/// Initializes a new instance of the TextFilterRule class.
/// </summary>
Expand Down
Loading