#3136
[heuristiclab.git] / HeuristicLab.Core / 3.3 / Item.cs
blob2bf43e1b5f9ce174647d174dea36bf3be6f646f7
1 #region License Information
2 /* HeuristicLab
3 * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
5 * This file is part of HeuristicLab.
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
20 #endregion
22 using System;
23 using System.Drawing;
24 using HeuristicLab.Common;
25 using HEAL.Attic;
27 namespace HeuristicLab.Core {
28 /// <summary>
29 /// Represents the base class for all basic item types.
30 /// </summary>
31 [StorableType("E7F13DE4-F9A2-4ADC-AB92-5BBA0588CD2D")]
32 [Item("Item", "Base class for all HeuristicLab items.")]
33 public abstract class Item : IItem {
34 public virtual string ItemName {
35 get { return ItemAttribute.GetName(this.GetType()); }
37 public virtual string ItemDescription {
38 get { return ItemAttribute.GetDescription(this.GetType()); }
40 public Version ItemVersion {
41 get { return ItemAttribute.GetVersion(this.GetType()); }
43 public static Image StaticItemImage {
44 get { return HeuristicLab.Common.Resources.VSImageLibrary.Class; }
46 public virtual Image ItemImage {
47 get { return ItemAttribute.GetImage(this.GetType()); }
50 [StorableConstructor]
51 protected Item(StorableConstructorFlag _) { }
52 protected Item(Item original, Cloner cloner) {
53 cloner.RegisterClonedObject(original, this);
55 protected Item() { }
57 public object Clone() {
58 return Clone(new Cloner());
60 public abstract IDeepCloneable Clone(Cloner cloner);
62 /// <summary>
63 /// Gets the string representation of the current instance.
64 /// </summary>
65 /// <returns>The type name of the current instance.</returns>
66 public override string ToString() {
67 return ItemName;
70 public event EventHandler ItemImageChanged;
71 protected virtual void OnItemImageChanged() {
72 EventHandler handler = ItemImageChanged;
73 if (handler != null) handler(this, EventArgs.Empty);
75 public event EventHandler ToStringChanged;
76 protected virtual void OnToStringChanged() {
77 EventHandler handler = ToStringChanged;
78 if (handler != null) handler(this, EventArgs.Empty);