Free cookie consent management tool by TermsFeed Policy Generator

Changeset 2677


Ignore:
Timestamp:
01/25/10 05:46:44 (15 years ago)
Author:
swagner
Message:

Operator architecture refactoring (#95)

  • continued work on adapting and refactoring HeuristicLab.Data according to the changes in HeuristicLab.Core
Location:
trunk/sources
Files:
2 added
14 deleted
6 edited
3 moved

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj

    r2669 r2677  
    5757      <DependentUpon>BoolDataView.cs</DependentUpon>
    5858    </Compile>
    59     <Compile Include="StringConvertibleArrayDataView.cs">
    60       <SubType>UserControl</SubType>
    61     </Compile>
    62     <Compile Include="StringConvertibleArrayDataView.Designer.cs">
    63       <DependentUpon>StringConvertibleArrayDataView.cs</DependentUpon>
    64     </Compile>
    6559    <Compile Include="StringConvertibleDataView.cs">
    6660      <SubType>UserControl</SubType>
     
    7165    <Compile Include="HeuristicLabDataViewsPlugin.cs" />
    7266    <Compile Include="Properties\AssemblyInfo.cs" />
     67    <Compile Include="StringConvertibleMatrixDataView.cs">
     68      <SubType>UserControl</SubType>
     69    </Compile>
     70    <Compile Include="StringConvertibleMatrixDataView.Designer.cs">
     71      <DependentUpon>StringConvertibleMatrixDataView.cs</DependentUpon>
     72    </Compile>
    7373  </ItemGroup>
    7474  <ItemGroup>
  • trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixDataView.Designer.cs

    r2676 r2677  
    2121
    2222namespace HeuristicLab.Data.Views {
    23   partial class StringConvertibleArrayDataView {
     23  partial class StringConvertibleMatrixDataView {
    2424    /// <summary>
    2525    /// Required designer variable.
     
    4646    private void InitializeComponent() {
    4747      this.components = new System.ComponentModel.Container();
    48       this.sizeLabel = new System.Windows.Forms.Label();
    49       this.sizeTextBox = new System.Windows.Forms.TextBox();
     48      this.rowsLabel = new System.Windows.Forms.Label();
     49      this.rowsTextBox = new System.Windows.Forms.TextBox();
    5050      this.dataGridView = new System.Windows.Forms.DataGridView();
    5151      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
     52      this.columnsTextBox = new System.Windows.Forms.TextBox();
     53      this.columnsLabel = new System.Windows.Forms.Label();
    5254      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
    5355      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
    5456      this.SuspendLayout();
    5557      //
    56       // sizeLabel
     58      // rowsLabel
    5759      //
    58       this.sizeLabel.AutoSize = true;
    59       this.sizeLabel.Location = new System.Drawing.Point(3, 3);
    60       this.sizeLabel.Name = "sizeLabel";
    61       this.sizeLabel.Size = new System.Drawing.Size(30, 13);
    62       this.sizeLabel.TabIndex = 0;
    63       this.sizeLabel.Text = "&Size:";
     60      this.rowsLabel.AutoSize = true;
     61      this.rowsLabel.Location = new System.Drawing.Point(3, 3);
     62      this.rowsLabel.Name = "rowsLabel";
     63      this.rowsLabel.Size = new System.Drawing.Size(37, 13);
     64      this.rowsLabel.TabIndex = 0;
     65      this.rowsLabel.Text = "&Rows:";
    6466      //
    65       // sizeTextBox
     67      // rowsTextBox
    6668      //
    67       this.sizeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
     69      this.rowsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    6870                  | System.Windows.Forms.AnchorStyles.Right)));
    69       this.sizeTextBox.Location = new System.Drawing.Point(50, 0);
    70       this.sizeTextBox.Name = "sizeTextBox";
    71       this.sizeTextBox.Size = new System.Drawing.Size(374, 20);
    72       this.sizeTextBox.TabIndex = 1;
    73       this.sizeTextBox.Validated += new System.EventHandler(this.sizeTextBox_Validated);
    74       this.sizeTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.sizeTextBox_KeyDown);
    75       this.sizeTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.sizeTextBox_Validating);
     71      this.rowsTextBox.Location = new System.Drawing.Point(69, 0);
     72      this.rowsTextBox.Name = "rowsTextBox";
     73      this.rowsTextBox.Size = new System.Drawing.Size(355, 20);
     74      this.rowsTextBox.TabIndex = 1;
     75      this.rowsTextBox.Validated += new System.EventHandler(this.rowsTextBox_Validated);
     76      this.rowsTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.rowsTextBox_KeyDown);
     77      this.rowsTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.rowsTextBox_Validating);
    7678      //
    7779      // dataGridView
     
    8587      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    8688      this.dataGridView.ColumnHeadersVisible = false;
    87       this.dataGridView.Location = new System.Drawing.Point(0, 26);
     89      this.dataGridView.Location = new System.Drawing.Point(0, 52);
    8890      this.dataGridView.Name = "dataGridView";
    89       this.dataGridView.Size = new System.Drawing.Size(424, 378);
    90       this.dataGridView.TabIndex = 2;
     91      this.dataGridView.Size = new System.Drawing.Size(424, 352);
     92      this.dataGridView.TabIndex = 4;
    9193      this.dataGridView.CellParsing += new System.Windows.Forms.DataGridViewCellParsingEventHandler(this.dataGridView_CellParsing);
    9294      this.dataGridView.CellValidating += new System.Windows.Forms.DataGridViewCellValidatingEventHandler(this.dataGridView_CellValidating);
     
    98100      this.errorProvider.ContainerControl = this;
    99101      //
    100       // StringConvertibleArrayDataView
     102      // columnsTextBox
     103      //
     104      this.columnsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
     105                  | System.Windows.Forms.AnchorStyles.Right)));
     106      this.columnsTextBox.Location = new System.Drawing.Point(69, 26);
     107      this.columnsTextBox.Name = "columnsTextBox";
     108      this.columnsTextBox.Size = new System.Drawing.Size(355, 20);
     109      this.columnsTextBox.TabIndex = 3;
     110      this.columnsTextBox.Validated += new System.EventHandler(this.columnsTextBox_Validated);
     111      this.columnsTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.columnsTextBox_KeyDown);
     112      this.columnsTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.columnsTextBox_Validating);
     113      //
     114      // columnsLabel
     115      //
     116      this.columnsLabel.AutoSize = true;
     117      this.columnsLabel.Location = new System.Drawing.Point(3, 29);
     118      this.columnsLabel.Name = "columnsLabel";
     119      this.columnsLabel.Size = new System.Drawing.Size(50, 13);
     120      this.columnsLabel.TabIndex = 2;
     121      this.columnsLabel.Text = "&Columns:";
     122      //
     123      // StringConvertibleMatrixDataView
    101124      //
    102125      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    103126      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    104127      this.Controls.Add(this.dataGridView);
    105       this.Controls.Add(this.sizeTextBox);
    106       this.Controls.Add(this.sizeLabel);
    107       this.Name = "StringConvertibleArrayDataView";
     128      this.Controls.Add(this.columnsTextBox);
     129      this.Controls.Add(this.rowsTextBox);
     130      this.Controls.Add(this.columnsLabel);
     131      this.Controls.Add(this.rowsLabel);
     132      this.Name = "StringConvertibleMatrixDataView";
    108133      this.Size = new System.Drawing.Size(424, 404);
    109134      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
     
    116141    #endregion
    117142
    118     private System.Windows.Forms.Label sizeLabel;
    119     private System.Windows.Forms.TextBox sizeTextBox;
     143    private System.Windows.Forms.Label rowsLabel;
     144    private System.Windows.Forms.TextBox rowsTextBox;
    120145    private System.Windows.Forms.DataGridView dataGridView;
    121146    private System.Windows.Forms.ErrorProvider errorProvider;
     147    private System.Windows.Forms.TextBox columnsTextBox;
     148    private System.Windows.Forms.Label columnsLabel;
    122149
    123150  }
  • trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixDataView.cs

    r2676 r2677  
    3333
    3434namespace HeuristicLab.Data.Views {
    35   [Content(typeof(IStringConvertibleArrayData), true)]
    36   public partial class StringConvertibleArrayDataView : ObjectView {
    37     public IStringConvertibleArrayData StringConvertibleArrayData {
    38       get { return (IStringConvertibleArrayData)Object; }
     35  [Content(typeof(IStringConvertibleMatrixData), true)]
     36  public partial class StringConvertibleMatrixDataView : ObjectView {
     37    public IStringConvertibleMatrixData StringConvertibleMatrixData {
     38      get { return (IStringConvertibleMatrixData)Object; }
    3939      set { base.Object = value; }
    4040    }
    4141
    42     public StringConvertibleArrayDataView() {
     42    public StringConvertibleMatrixDataView() {
    4343      InitializeComponent();
    44       Caption = "StringConvertibleArrayDataView View";
    45       errorProvider.SetIconAlignment(sizeTextBox, ErrorIconAlignment.MiddleLeft);
    46       errorProvider.SetIconPadding(sizeTextBox, 2);
     44      Caption = "StringConvertibleMatrixDataView View";
     45      errorProvider.SetIconAlignment(rowsTextBox, ErrorIconAlignment.MiddleLeft);
     46      errorProvider.SetIconPadding(rowsTextBox, 2);
     47      errorProvider.SetIconAlignment(columnsTextBox, ErrorIconAlignment.MiddleLeft);
     48      errorProvider.SetIconPadding(columnsTextBox, 2);
    4749    }
    48     public StringConvertibleArrayDataView(IStringConvertibleArrayData stringConvertibleArrayData)
     50    public StringConvertibleMatrixDataView(IStringConvertibleMatrixData stringConvertibleArrayData)
    4951      : this() {
    50       StringConvertibleArrayData = stringConvertibleArrayData;
     52      StringConvertibleMatrixData = stringConvertibleArrayData;
    5153    }
    5254
    5355    protected override void DeregisterObjectEvents() {
    54       StringConvertibleArrayData.ItemChanged -= new EventHandler<EventArgs<int>>(StringConvertibleArrayData_ItemChanged);
    55       StringConvertibleArrayData.Reset -= new EventHandler(StringConvertibleArrayData_Reset);
     56      StringConvertibleMatrixData.ItemChanged -= new EventHandler<EventArgs<int, int>>(StringConvertibleMatrixData_ItemChanged);
     57      StringConvertibleMatrixData.Reset -= new EventHandler(StringConvertibleMatrixData_Reset);
    5658      base.DeregisterObjectEvents();
    5759    }
     
    6062    protected override void RegisterObjectEvents() {
    6163      base.RegisterObjectEvents();
    62       StringConvertibleArrayData.ItemChanged += new EventHandler<EventArgs<int>>(StringConvertibleArrayData_ItemChanged);
    63       StringConvertibleArrayData.Reset += new EventHandler(StringConvertibleArrayData_Reset);
     64      StringConvertibleMatrixData.ItemChanged += new EventHandler<EventArgs<int, int>>(StringConvertibleMatrixData_ItemChanged);
     65      StringConvertibleMatrixData.Reset += new EventHandler(StringConvertibleMatrixData_Reset);
    6466    }
    6567
    6668    protected override void OnObjectChanged() {
    6769      base.OnObjectChanged();
    68       if (StringConvertibleArrayData == null) {
    69         Caption = "StringConvertibleData View";
    70         sizeTextBox.Text = "";
    71         sizeTextBox.Enabled = false;
     70      if (StringConvertibleMatrixData == null) {
     71        Caption = "StringConvertibleMatrixData View";
     72        rowsTextBox.Text = "";
     73        rowsTextBox.Enabled = false;
     74        columnsTextBox.Text = "";
     75        columnsTextBox.Enabled = false;
    7276        dataGridView.Rows.Clear();
     77        dataGridView.Columns.Clear();
    7378        dataGridView.Enabled = false;
    7479      } else {
    75         Caption = "StringConvertibleArrayData (" + StringConvertibleArrayData.GetType().Name + ")";
     80        Caption = "StringConvertibleMatrixData (" + StringConvertibleMatrixData.GetType().Name + ")";
    7681        UpdateContent();
    7782      }
     
    7984
    8085    private void UpdateContent() {
    81       sizeTextBox.Text = StringConvertibleArrayData.Length.ToString();
    82       sizeTextBox.Enabled = true;
     86      rowsTextBox.Text = StringConvertibleMatrixData.Rows.ToString();
     87      rowsTextBox.Enabled = (StringConvertibleMatrixData.Dimensions & StringConvertibleArrayDataDimensions.Rows) == StringConvertibleArrayDataDimensions.Rows;
     88      columnsTextBox.Text = StringConvertibleMatrixData.Columns.ToString();
     89      columnsTextBox.Enabled = (StringConvertibleMatrixData.Dimensions & StringConvertibleArrayDataDimensions.Columns) == StringConvertibleArrayDataDimensions.Columns;
    8390      dataGridView.Rows.Clear();
    84       dataGridView.ColumnCount = 1;
    85       dataGridView.RowCount = StringConvertibleArrayData.Length;
    86       for (int i = 0; i < StringConvertibleArrayData.Length; i++)
    87         dataGridView.Rows[i].Cells[0].Value = StringConvertibleArrayData.GetValue(i);
     91      dataGridView.Columns.Clear();
     92      if ((StringConvertibleMatrixData.Rows > 0) && (StringConvertibleMatrixData.Columns > 0)) {
     93        for (int i = 0; i < StringConvertibleMatrixData.Columns; i++) {
     94          dataGridView.ColumnCount++;
     95          dataGridView.Columns[dataGridView.ColumnCount - 1].FillWeight = float.Epsilon;  // sum of all fill weights must not be larger than 65535
     96        }
     97        dataGridView.RowCount = StringConvertibleMatrixData.Rows;
     98        for (int i = 0; i < StringConvertibleMatrixData.Rows; i++) {
     99          for (int j = 0; j < StringConvertibleMatrixData.Columns; j++)
     100            dataGridView.Rows[i].Cells[j].Value = StringConvertibleMatrixData.GetValue(i, j);
     101        }
     102        for (int i = 0; i < StringConvertibleMatrixData.Columns; i++)
     103          dataGridView.Columns[i].Width = dataGridView.Columns[i].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);
     104      }
    88105      dataGridView.Enabled = true;
    89106    }
    90107
    91     private void StringConvertibleArrayData_ItemChanged(object sender, EventArgs<int> e) {
     108    private void StringConvertibleMatrixData_ItemChanged(object sender, EventArgs<int, int> e) {
    92109      if (InvokeRequired)
    93         Invoke(new EventHandler<EventArgs<int>>(StringConvertibleArrayData_ItemChanged), sender, e);
    94       else
    95         dataGridView.Rows[e.Value].Cells[0].Value = StringConvertibleArrayData.GetValue(e.Value);
     110        Invoke(new EventHandler<EventArgs<int, int>>(StringConvertibleMatrixData_ItemChanged), sender, e);
     111      else {
     112        dataGridView.Rows[e.Value].Cells[e.Value2].Value = StringConvertibleMatrixData.GetValue(e.Value, e.Value2);
     113        Size size = dataGridView.Rows[e.Value].Cells[e.Value2].PreferredSize;
     114        dataGridView.Columns[e.Value2].Width = Math.Max(dataGridView.Columns[e.Value2].Width, size.Width);
     115      }
    96116    }
    97     private void StringConvertibleArrayData_Reset(object sender, EventArgs e) {
     117    private void StringConvertibleMatrixData_Reset(object sender, EventArgs e) {
    98118      if (InvokeRequired)
    99         Invoke(new EventHandler(StringConvertibleArrayData_Reset), sender, e);
     119        Invoke(new EventHandler(StringConvertibleMatrixData_Reset), sender, e);
    100120      else
    101121        UpdateContent();
    102122    }
    103123
    104     private void sizeTextBox_Validating(object sender, CancelEventArgs e) {
     124    #region TextBox Events
     125    private void rowsTextBox_Validating(object sender, CancelEventArgs e) {
    105126      int i = 0;
    106       if (!int.TryParse(sizeTextBox.Text, out i) || (i < 0)) {
     127      if (!int.TryParse(rowsTextBox.Text, out i) || (i < 0)) {
    107128        e.Cancel = true;
    108         errorProvider.SetError(sizeTextBox, "Invalid Array Length");
    109         sizeTextBox.SelectAll();
     129        errorProvider.SetError(rowsTextBox, "Invalid Number of Rows");
     130        rowsTextBox.SelectAll();
    110131      }
    111132    }
    112     private void sizeTextBox_Validated(object sender, EventArgs e) {
    113       StringConvertibleArrayData.Length = int.Parse(sizeTextBox.Text);
    114       errorProvider.SetError(sizeTextBox, string.Empty);
     133    private void rowsTextBox_Validated(object sender, EventArgs e) {
     134      StringConvertibleMatrixData.Rows = int.Parse(rowsTextBox.Text);
     135      errorProvider.SetError(rowsTextBox, string.Empty);
    115136    }
    116     private void sizeTextBox_KeyDown(object sender, KeyEventArgs e) {
     137    private void rowsTextBox_KeyDown(object sender, KeyEventArgs e) {
    117138      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
    118         sizeLabel.Focus();  // set focus on label to validate data
     139        rowsLabel.Focus();  // set focus on label to validate data
    119140      if (e.KeyCode == Keys.Escape) {
    120         sizeTextBox.Text = StringConvertibleArrayData.Length.ToString();
    121         sizeLabel.Focus();  // set focus on label to validate data
     141        rowsTextBox.Text = StringConvertibleMatrixData.Columns.ToString();
     142        rowsLabel.Focus();  // set focus on label to validate data
    122143      }
    123144    }
     145    private void columnsTextBox_Validating(object sender, CancelEventArgs e) {
     146      int i = 0;
     147      if (!int.TryParse(columnsTextBox.Text, out i) || (i < 0)) {
     148        e.Cancel = true;
     149        errorProvider.SetError(columnsTextBox, "Invalid Number of Columns");
     150        columnsTextBox.SelectAll();
     151      }
     152    }
     153    private void columnsTextBox_Validated(object sender, EventArgs e) {
     154      StringConvertibleMatrixData.Columns = int.Parse(columnsTextBox.Text);
     155      errorProvider.SetError(columnsTextBox, string.Empty);
     156    }
     157    private void columnsTextBox_KeyDown(object sender, KeyEventArgs e) {
     158      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
     159        columnsLabel.Focus();  // set focus on label to validate data
     160      if (e.KeyCode == Keys.Escape) {
     161        columnsTextBox.Text = StringConvertibleMatrixData.Columns.ToString();
     162        columnsLabel.Focus();  // set focus on label to validate data
     163      }
     164    }
     165    #endregion
     166
     167    #region DataGridView Events
    124168    private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
    125       if (!StringConvertibleArrayData.Validate(e.FormattedValue.ToString())) {
     169      if (!StringConvertibleMatrixData.Validate(e.FormattedValue.ToString())) {
    126170        e.Cancel = true;
    127171        dataGridView.Rows[e.RowIndex].ErrorText = "Invalid Value";
     
    130174    private void dataGridView_CellParsing(object sender, DataGridViewCellParsingEventArgs e) {
    131175      string value = e.Value.ToString();
    132       e.ParsingApplied = StringConvertibleArrayData.SetValue(value, e.RowIndex);
    133       if (e.ParsingApplied) e.Value = StringConvertibleArrayData.GetValue(e.RowIndex);
     176      e.ParsingApplied = StringConvertibleMatrixData.SetValue(value, e.RowIndex, e.ColumnIndex);
     177      if (e.ParsingApplied) e.Value = StringConvertibleMatrixData.GetValue(e.RowIndex, e.ColumnIndex);
    134178    }
    135179    private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
    136180      dataGridView.Rows[e.RowIndex].ErrorText = string.Empty;
    137181    }
     182    #endregion
    138183  }
    139184}
  • trunk/sources/HeuristicLab.Data/3.3/BoolArrayData.cs

    r2676 r2677  
    3232  [Item("BoolArrayData", "Represents an array of boolean values.")]
    3333  [Creatable("Test")]
    34   public sealed class BoolArrayData : ValueTypeArrayData<bool>, IStringConvertibleArrayData {
     34  public sealed class BoolArrayData : ValueTypeArrayData<bool>, IStringConvertibleMatrixData {
    3535    public BoolArrayData() : base() { }
    3636    public BoolArrayData(int length) : base(length) { }
    3737    public BoolArrayData(bool[] elements) : base(elements) { }
    38     protected BoolArrayData(BoolArrayData elements) : base(elements) { }
     38    private BoolArrayData(BoolArrayData elements) : base(elements) { }
    3939
    4040    public override IDeepCloneable Clone(Cloner cloner) {
     
    4444    }
    4545
    46     #region IStringConvertibleArrayData Members
    47     int IStringConvertibleArrayData.Length {
     46    #region IStringConvertibleMatrixData Members
     47    StringConvertibleArrayDataDimensions IStringConvertibleMatrixData.Dimensions {
     48      get { return StringConvertibleArrayDataDimensions.Rows; }
     49    }
     50    int IStringConvertibleMatrixData.Rows {
    4851      get { return Length; }
    4952      set { Length = value; }
    5053    }
    51     bool IStringConvertibleArrayData.Validate(string value) {
    52       bool b;
    53       return bool.TryParse(value, out b);
     54    int IStringConvertibleMatrixData.Columns {
     55      get { return 1; }
     56      set { throw new NotSupportedException("Columns cannot be changed."); }
    5457    }
    55     string IStringConvertibleArrayData.GetValue(int index) {
    56       return this[index].ToString();
     58
     59    bool IStringConvertibleMatrixData.Validate(string value) {
     60      int i;
     61      return int.TryParse(value, out i);
    5762    }
    58     bool IStringConvertibleArrayData.SetValue(string value, int index) {
     63    string IStringConvertibleMatrixData.GetValue(int rowIndex, int columIndex) {
     64      return this[rowIndex].ToString();
     65    }
     66    bool IStringConvertibleMatrixData.SetValue(string value, int rowIndex, int columnIndex) {
    5967      bool b;
    6068      if (bool.TryParse(value, out b)) {
    61         this[index] = b;
     69        this[rowIndex] = b;
    6270        return true;
    6371      } else {
     
    6573      }
    6674    }
    67     event EventHandler<EventArgs<int>> IStringConvertibleArrayData.ItemChanged {
     75    event EventHandler<EventArgs<int, int>> IStringConvertibleMatrixData.ItemChanged {
    6876      add { base.ItemChanged += value; }
    6977      remove { base.ItemChanged -= value; }
    7078    }
    71     event EventHandler IStringConvertibleArrayData.Reset {
     79    event EventHandler IStringConvertibleMatrixData.Reset {
    7280      add { base.Reset += value; }
    7381      remove { base.Reset -= value; }
  • trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj

    r2676 r2677  
    104104    </Compile>
    105105    <Compile Include="BoolArrayData.cs" />
    106     <Compile Include="IStringConvertibleArrayData.cs" />
     106    <Compile Include="IntMatrixData.cs" />
     107    <Compile Include="ValueTypeMatrixData.cs" />
     108    <Compile Include="StringConvertibleMatrixDataDimensions.cs" />
     109    <Compile Include="IStringConvertibleMatrixData.cs" />
    107110    <Compile Include="ValueTypeArrayData.cs" />
    108111    <Compile Include="IntArrayData.cs" />
  • trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleMatrixData.cs

    r2676 r2677  
    2828
    2929namespace HeuristicLab.Data {
    30   public interface IStringConvertibleArrayData {
    31     int Length { get; set; }
     30  public interface IStringConvertibleMatrixData {
     31    StringConvertibleArrayDataDimensions Dimensions { get; }
     32    int Rows { get; set; }
     33    int Columns { get; set; }
    3234
    3335    bool Validate(string value);
    34     string GetValue(int index);
    35     bool SetValue(string value, int index);
     36    string GetValue(int rowIndex, int columnIndex);
     37    bool SetValue(string value, int rowIndex, int columnIndex);
    3638
    37     event EventHandler<EventArgs<int>> ItemChanged;
     39    event EventHandler<EventArgs<int, int>> ItemChanged;
    3840    event EventHandler Reset;
    3941  }
  • trunk/sources/HeuristicLab.Data/3.3/IntArrayData.cs

    r2676 r2677  
    3232  [Item("IntArrayData", "Represents an array of integer values.")]
    3333  [Creatable("Test")]
    34   public sealed class IntArrayData : ValueTypeArrayData<int>, IStringConvertibleArrayData {
     34  public sealed class IntArrayData : ValueTypeArrayData<int>, IStringConvertibleMatrixData {
    3535    public IntArrayData() : base() { }
    3636    public IntArrayData(int length) : base(length) { }
    3737    public IntArrayData(int[] elements) : base(elements) { }
    38     protected IntArrayData(IntArrayData elements) : base(elements) { }
     38    private IntArrayData(IntArrayData elements) : base(elements) { }
    3939
    4040    public override IDeepCloneable Clone(Cloner cloner) {
     
    4444    }
    4545
    46     #region IStringConvertibleArrayData Members
    47     int IStringConvertibleArrayData.Length {
     46    #region IStringConvertibleMatrixData Members
     47    StringConvertibleArrayDataDimensions IStringConvertibleMatrixData.Dimensions {
     48      get { return StringConvertibleArrayDataDimensions.Rows; }
     49    }
     50    int IStringConvertibleMatrixData.Rows {
    4851      get { return Length; }
    4952      set { Length = value; }
    5053    }
    51     bool IStringConvertibleArrayData.Validate(string value) {
     54    int IStringConvertibleMatrixData.Columns {
     55      get { return 1; }
     56      set { throw new NotSupportedException("Columns cannot be changed."); }
     57    }
     58
     59    bool IStringConvertibleMatrixData.Validate(string value) {
    5260      int i;
    5361      return int.TryParse(value, out i);
    5462    }
    55     string IStringConvertibleArrayData.GetValue(int index) {
    56       return this[index].ToString();
     63    string IStringConvertibleMatrixData.GetValue(int rowIndex, int columIndex) {
     64      return this[rowIndex].ToString();
    5765    }
    58     bool IStringConvertibleArrayData.SetValue(string value, int index) {
     66    bool IStringConvertibleMatrixData.SetValue(string value, int rowIndex, int columnIndex) {
    5967      int i;
    6068      if (int.TryParse(value, out i)) {
    61         this[index] = i;
     69        this[rowIndex] = i;
    6270        return true;
    6371      } else {
     
    6573      }
    6674    }
    67     event EventHandler<EventArgs<int>> IStringConvertibleArrayData.ItemChanged {
     75    event EventHandler<EventArgs<int, int>> IStringConvertibleMatrixData.ItemChanged {
    6876      add { base.ItemChanged += value; }
    6977      remove { base.ItemChanged -= value; }
    7078    }
    71     event EventHandler IStringConvertibleArrayData.Reset {
     79    event EventHandler IStringConvertibleMatrixData.Reset {
    7280      add { base.Reset += value; }
    7381      remove { base.Reset -= value; }
  • trunk/sources/HeuristicLab.Data/3.3/IntMatrixData.cs

    r2520 r2677  
    2424using System.Text;
    2525using System.Xml;
     26using HeuristicLab.Common;
    2627using HeuristicLab.Core;
    27 using System.Globalization;
    2828using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2929
    3030namespace HeuristicLab.Data {
    31   /// <summary>
    32   /// A two-dimensional matrix of integer values.
    33   /// </summary>
    3431  [EmptyStorableClass]
    35   public class IntMatrixData : ArrayDataBase {
    36     /// <summary>
    37     /// Gets or sets the int values of the matrix.
    38     /// </summary>
    39     /// <remarks>Uses property <see cref="ArrayDataBase.Data"/> of base class <see cref="ArrayDataBase"/>.
    40     /// No own data storage present.</remarks>
    41     public new int[,] Data {
    42       get { return (int[,])base.Data; }
    43       set { base.Data = value; }
     32  [Item("IntMatrixData", "Represents a matrix of integer values.")]
     33  [Creatable("Test")]
     34  public sealed class IntMatrixData : ValueTypeMatrixData<int>, IStringConvertibleMatrixData {
     35    public IntMatrixData() : base() { }
     36    public IntMatrixData(int rows, int columns) : base(rows, columns) { }
     37    public IntMatrixData(int[,] elements) : base(elements) { }
     38    private IntMatrixData(IntMatrixData elements) : base(elements) { }
     39
     40    public override IDeepCloneable Clone(Cloner cloner) {
     41      IntMatrixData clone = new IntMatrixData(this);
     42      cloner.RegisterClonedObject(this, clone);
     43      return clone;
    4444    }
    4545
    46     /// <summary>
    47     /// Initializes a new instance of <see cref="IntMatrixData"/>.
    48     /// </summary>
    49     public IntMatrixData() {
    50       Data = new int[1, 1];
     46    #region IStringConvertibleMatrixData Members
     47    StringConvertibleArrayDataDimensions IStringConvertibleMatrixData.Dimensions {
     48      get { return StringConvertibleArrayDataDimensions.Both; }
    5149    }
    52     /// <summary>
    53     /// Initializes a new instance of <see cref="IntMatrixData"/>.
    54     /// <note type="caution"> No CopyConstructor! <paramref name="data"/> is not copied!</note>
    55     /// </summary>
    56     /// <param name="data">The two-dimensional int matrix the instance should represent.</param>
    57     public IntMatrixData(int[,] data) {
    58       Data = data;
     50    int IStringConvertibleMatrixData.Rows {
     51      get { return Rows; }
     52      set { Rows = value; }
     53    }
     54    int IStringConvertibleMatrixData.Columns {
     55      get { return Columns; }
     56      set { Columns = value; }
    5957    }
    6058
    61     /// <summary>
    62     /// The string representation of the matrix.
    63     /// </summary>
    64     /// <returns>The elements of the matrix as a string, line by line, each element separated by a
    65     /// semicolon and formatted according to the local number format.</returns>
    66     public override string ToString() {
    67       return ToString(CultureInfo.CurrentCulture.NumberFormat);
     59    bool IStringConvertibleMatrixData.Validate(string value) {
     60      int i;
     61      return int.TryParse(value, out i);
    6862    }
    69 
    70     /// <summary>
    71     /// The string representation of the matrix, considering a specified <paramref name="format"/>.
    72     /// </summary>
    73     /// <param name="format">The <see cref="NumberFormatInfo"/> the int values are formatted accordingly.</param>
    74     /// <returns>The elements of the matrix as a string, line by line, each element separated by a
    75     /// semicolon and formatted according to the specified <paramref name="format"/>.</returns>
    76     private string ToString(NumberFormatInfo format) {
    77       StringBuilder builder = new StringBuilder();
    78       for (int i = 0; i < Data.GetLength(0); i++) {
    79         for (int j = 0; j < Data.GetLength(1); j++) {
    80           builder.Append(";");
    81           builder.Append(Data[i, j].ToString(format));
    82         }
     63    string IStringConvertibleMatrixData.GetValue(int rowIndex, int columIndex) {
     64      return this[rowIndex, columIndex].ToString();
     65    }
     66    bool IStringConvertibleMatrixData.SetValue(string value, int rowIndex, int columnIndex) {
     67      int i;
     68      if (int.TryParse(value, out i)) {
     69        this[rowIndex, columnIndex] = i;
     70        return true;
     71      } else {
     72        return false;
    8373      }
    84       if (builder.Length > 0) builder.Remove(0, 1);
    85       return builder.ToString();
    8674    }
     75    event EventHandler<EventArgs<int, int>> IStringConvertibleMatrixData.ItemChanged {
     76      add { base.ItemChanged += value; }
     77      remove { base.ItemChanged -= value; }
     78    }
     79    event EventHandler IStringConvertibleMatrixData.Reset {
     80      add { base.Reset += value; }
     81      remove { base.Reset -= value; }
     82    }
     83    #endregion
    8784  }
    8885}
  • trunk/sources/HeuristicLab.Data/3.3/ValueTypeArrayData.cs

    r2676 r2677  
    3737      get { return array.Length; }
    3838      protected set {
    39         if (value < 0) throw new ArgumentException("Array length cannot be smaller than 0.");
    40         T[] newArray = new T[value];
    41         Array.Copy(array, newArray, Math.Min(value, array.Length));
    42         array = newArray;
    43         OnReset();
     39        if (value != Length) {
     40          Array.Resize<T>(ref array, value);
     41          OnReset();
     42        }
    4443      }
    4544    }
     
    9190    }
    9291
    93     protected event EventHandler<EventArgs<int>> ItemChanged;
     92    protected event EventHandler<EventArgs<int, int>> ItemChanged;
    9493    private void OnItemChanged(int index) {
    9594      if (ItemChanged != null)
    96         ItemChanged(this, new EventArgs<int>(index));
     95        ItemChanged(this, new EventArgs<int, int>(index, 0));
    9796      OnChanged();
    9897    }
Note: See TracChangeset for help on using the changeset viewer.