Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/05/13 16:37:17 (11 years ago)
Author:
sforsten
Message:

#2018:

  • added new methods to the interface IStringConvertibleMatrix as well as two structs. Also the event ItemChanged has been changed to ItemsChanged
  • class ValueTypeMatrix now implements IStringConvertibleMatrix instead of the classes which inherit from it
  • small changes have been applied to a lot of classes to correctly implement the changed interface IStringConvertibleMatrix
  • solution file, Build.cmd and PreBuildEvent.cmd have been added
Location:
branches/ImprovingStringConvertibleMatrix
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/ImprovingStringConvertibleMatrix

    • Property svn:ignore set to
      *.suo
  • branches/ImprovingStringConvertibleMatrix/HeuristicLab.Data/3.3/IntMatrix.cs

    r7259 r9286  
    2020#endregion
    2121
     22using System;
    2223using System.Collections.Generic;
     24using System.Linq;
    2325using System.Text;
    2426using HeuristicLab.Common;
     
    2931  [Item("IntMatrix", "Represents a matrix of integer values.")]
    3032  [StorableClass]
    31   public class IntMatrix : ValueTypeMatrix<int>, IStringConvertibleMatrix {
     33  public class IntMatrix : ValueTypeMatrix<int> {
    3234    [StorableConstructor]
    3335    protected IntMatrix(bool deserializing) : base(deserializing) { }
     
    3840    public IntMatrix(int rows, int columns) : base(rows, columns) { }
    3941    public IntMatrix(int rows, int columns, IEnumerable<string> columnNames) : base(rows, columns, columnNames) { }
    40     public IntMatrix(int rows, int columns, IEnumerable<string> columnNames,IEnumerable<string> rowNames) : base(rows, columns, columnNames,rowNames) { }
     42    public IntMatrix(int rows, int columns, IEnumerable<string> columnNames, IEnumerable<string> rowNames) : base(rows, columns, columnNames, rowNames) { }
    4143    public IntMatrix(int[,] elements) : base(elements) { }
    42     public IntMatrix(int[,] elements, IEnumerable<string> columnNames) : base(elements,columnNames) { }
    43     public IntMatrix(int[,] elements, IEnumerable<string> columnNames, IEnumerable<string> rowNames) : base(elements,columnNames,rowNames) { }
     44    public IntMatrix(int[,] elements, IEnumerable<string> columnNames) : base(elements, columnNames) { }
     45    public IntMatrix(int[,] elements, IEnumerable<string> columnNames, IEnumerable<string> rowNames) : base(elements, columnNames, rowNames) { }
    4446
    4547    public override IDeepCloneable Clone(Cloner cloner) {
     
    4749    }
    4850
    49     protected virtual bool Validate(string value, out string errorMessage) {
     51    protected override bool Validate(string value, out string errorMessage) {
    5052      int val;
    5153      bool valid = int.TryParse(value, out val);
     
    6062      return valid;
    6163    }
    62     protected virtual string GetValue(int rowIndex, int columIndex) {
     64    protected override string GetValue(int rowIndex, int columIndex) {
    6365      return this[rowIndex, columIndex].ToString();
    6466    }
    65     protected virtual bool SetValue(string value, int rowIndex, int columnIndex) {
     67    protected override bool SetValue(string value, int rowIndex, int columnIndex) {
    6668      int val;
    6769      if (int.TryParse(value, out val)) {
     
    7274      }
    7375    }
    74 
    75     #region IStringConvertibleMatrix Members
    76     int IStringConvertibleMatrix.Rows {
    77       get { return Rows; }
    78       set { Rows = value; }
     76    protected override bool SetValue(IEnumerable<RowColumnValue> rowColumnValues) {
     77      if (ReadOnly) throw new NotSupportedException("Item cannot be set. StringMatrix is read-only.");
     78      List<Tuple<Position, int>> newValues = new List<Tuple<Position, int>>();
     79      int parsed;
     80      foreach (var curValue in rowColumnValues) {
     81        if (int.TryParse(curValue.Value, out parsed)) {
     82          newValues.Add(new Tuple<Position, int>(curValue.Position, parsed));
     83        } else {
     84          return false;
     85        }
     86      }
     87      Position pos;
     88      foreach (var curValue in newValues) {
     89        pos = curValue.Item1;
     90        matrix[pos.Row, pos.Column] = curValue.Item2;
     91      }
     92      OnItemsChanged(rowColumnValues.Select(x => x.Position));
     93      return true;
    7994    }
    80     int IStringConvertibleMatrix.Columns {
    81       get { return Columns; }
    82       set { Columns = value; }
    83     }
    84     bool IStringConvertibleMatrix.Validate(string value, out string errorMessage) {
    85       return Validate(value, out errorMessage);
    86     }
    87     string IStringConvertibleMatrix.GetValue(int rowIndex, int columIndex) {
    88       return GetValue(rowIndex, columIndex);
    89     }
    90     bool IStringConvertibleMatrix.SetValue(string value, int rowIndex, int columnIndex) {
    91       return SetValue(value, rowIndex, columnIndex);
    92     }
    93     #endregion
    9495  }
    9596}
Note: See TracChangeset for help on using the changeset viewer.