using System; using System.ComponentModel; using System.Drawing; using System.Runtime.CompilerServices; using HeuristicLab.Common; using HeuristicLab.Core; using HeuristicLab.Problems.DataAnalysis.Annotations; using HEAL.Attic; namespace HeuristicLab.Problems.DataAnalysis { [StorableType("8109BE58-CCFB-4462-A2F4-EEE5DFADAFF7")] [Item("Interval Constraint", "Constraint on intervals.")] public class IntervalConstraint : NamedItem { public string Expression { get; set; } public string Definition { get; set; } public Interval Interval { get; set; } public bool InclusiveLowerBound { get; set; } public bool InclusiveUpperBound { get; set; } public bool IsDerivation { get; set; } private string variable; public string Variable { get => variable; set { if (value != variable) { variable = value; OnChanged(EventArgs.Empty); } } } public int NumberOfDerivation { get; set; } public IntervalConstraint() {} public IntervalConstraint(string name) { base.name = name; } public IntervalConstraint(string expression, string definition, Interval interval, bool inclusiveLowerBound, bool inclusiveUpperBound, bool isDerivation, string variable, int numberOfDerivation) { base.name = expression; Expression = expression; Definition = definition; Interval = interval; InclusiveLowerBound = inclusiveLowerBound; InclusiveUpperBound = inclusiveUpperBound; IsDerivation = isDerivation; Variable = variable; NumberOfDerivation = numberOfDerivation; } public override IDeepCloneable Clone(Cloner cloner) { return new IntervalConstraint(this, cloner); } protected IntervalConstraint(IntervalConstraint original, Cloner cloner) : base(original, cloner) { this.Expression = original.Expression; this.Definition = original.Definition; this.Interval = original.Interval; this.InclusiveLowerBound = original.InclusiveLowerBound; this.InclusiveUpperBound = original.InclusiveUpperBound; this.IsDerivation = original.IsDerivation; this.Variable = original.Variable; this.NumberOfDerivation = original.NumberOfDerivation; } public event EventHandler Changed; protected virtual void OnChanged(EventArgs e) { EventHandler handlers = Changed; if (handlers != null) handlers(this, e); } } }