Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/21/11 03:53:10 (13 years ago)
Author:
swagner
Message:

Worked on OKB (#1174)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/OKBProblem.cs

    r5338 r5344  
    2424using System.Drawing;
    2525using System.IO;
    26 using System.Linq;
    2726using HeuristicLab.Common;
    2827using HeuristicLab.Core;
     
    3231
    3332namespace HeuristicLab.Clients.OKB {
    34   [Item("OKB Problem", "Represents a problem which is stored in the OKB.")]
     33  [Item("OKB Problem", "A base class for problems which are stored in the OKB.")]
    3534  [StorableClass]
    36   public class OKBProblem : Item, IProblem, IStorableContent {
    37     public string Filename { get; set; }
    38 
    39     public override Image ItemImage {
    40       get { return Problem == null ? HeuristicLab.Common.Resources.VSImageLibrary.Type : Problem.ItemImage; }
    41     }
    42 
    43     public string Name {
    44       get { return Problem == null ? ItemName : Problem.Name; }
    45       set { throw new NotSupportedException("Name cannot be changed."); }
    46     }
    47     public string Description {
    48       get { return Problem == null ? ItemDescription : Problem.Description; }
    49       set { throw new NotSupportedException("Description cannot be changed."); }
    50     }
    51     public bool CanChangeName {
    52       get { return false; }
    53     }
    54     public bool CanChangeDescription {
    55       get { return false; }
    56     }
    57 
    58     public IKeyedItemCollection<string, IParameter> Parameters {
    59       get { return Problem == null ? null : Problem.Parameters; }
    60     }
    61 
     35  public abstract class OKBProblem : Item, IProblem {
    6236    public virtual Type ProblemType {
    6337      get { return typeof(IProblem); }
     
    7145      get { return problem; }
    7246      private set {
    73         if (value == null) throw new ArgumentNullException("Problem");
     47        if (value == null) throw new ArgumentNullException("Problem", "Problem cannot be null.");
    7448        if (value != problem) {
    7549          CancelEventArgs<string> e = new CancelEventArgs<string>(value.Name);
     
    9468    }
    9569
     70    public override Image ItemImage {
     71      get { return Problem.ItemImage; }
     72    }
     73
     74    public string Name {
     75      get { return Problem.Name; }
     76      set { throw new NotSupportedException("Name cannot be changed."); }
     77    }
     78    public string Description {
     79      get { return Problem.Description; }
     80      set { throw new NotSupportedException("Description cannot be changed."); }
     81    }
     82    public bool CanChangeName {
     83      get { return false; }
     84    }
     85    public bool CanChangeDescription {
     86      get { return false; }
     87    }
     88
     89    public IKeyedItemCollection<string, IParameter> Parameters {
     90      get { return Problem.Parameters; }
     91    }
     92
    9693    public IParameter SolutionCreatorParameter {
    97       get { return Problem == null ? null : Problem.SolutionCreatorParameter; }
     94      get { return Problem.SolutionCreatorParameter; }
    9895    }
    9996    public ISolutionCreator SolutionCreator {
    100       get { return Problem == null ? null : Problem.SolutionCreator; }
     97      get { return Problem.SolutionCreator; }
    10198    }
    10299    public IParameter EvaluatorParameter {
    103       get { return Problem == null ? null : Problem.EvaluatorParameter; }
     100      get { return Problem.EvaluatorParameter; }
    104101    }
    105102    public IEvaluator Evaluator {
    106       get { return Problem == null ? null : Problem.Evaluator; }
     103      get { return Problem.Evaluator; }
    107104    }
    108105    public IEnumerable<IOperator> Operators {
    109       get { return Problem == null ? Enumerable.Empty<IOperator>() : Problem.Operators; }
     106      get { return Problem.Operators; }
    110107    }
    111108
     
    118115    [Storable(Name = "Problem")]
    119116    private IProblem StorableProblem {
    120       get { return Problem; }
    121       set { Problem = value; }
     117      get { return problem; }
     118      set {
     119        problem = value;
     120        RegisterProblemEvents();
     121      }
    122122    }
    123123    #endregion
     
    129129      problemId = original.problemId;
    130130      problem = cloner.Clone(original.problem);
    131     }
    132     protected OKBProblem()
     131      RegisterProblemEvents();
     132    }
     133    protected OKBProblem(IProblem initialProblem)
    133134      : base() {
     135      if (initialProblem == null) throw new ArgumentNullException("initialProblem", "Initial problem cannot be null.");
    134136      problemId = -1;
    135     }
    136 
    137     public override IDeepCloneable Clone(Cloner cloner) {
    138       return new OKBProblem(this, cloner);
     137      problem = initialProblem;
     138      RegisterProblemEvents();
    139139    }
    140140
     
    154154
    155155    public void CollectParameterValues(IDictionary<string, IItem> values) {
    156       if (Problem != null) Problem.CollectParameterValues(values);
     156      Problem.CollectParameterValues(values);
    157157    }
    158158
    159159    #region Events
     160    public event EventHandler ProblemChanged;
     161    protected virtual void OnProblemChanged() {
     162      EventHandler handler = ProblemChanged;
     163      if (handler != null) handler(this, EventArgs.Empty);
     164    }
    160165    public event EventHandler<CancelEventArgs<string>> NameChanging;
    161166    protected virtual void OnNameChanging(CancelEventArgs<string> e) {
     
    171176    protected virtual void OnDescriptionChanged() {
    172177      var handler = DescriptionChanged;
    173       if (handler != null) handler(this, EventArgs.Empty);
    174     }
    175     public event EventHandler ProblemChanged;
    176     protected virtual void OnProblemChanged() {
    177       EventHandler handler = ProblemChanged;
    178178      if (handler != null) handler(this, EventArgs.Empty);
    179179    }
Note: See TracChangeset for help on using the changeset viewer.