Changeset 3321


Ignore:
Timestamp:
04/13/10 10:37:47 (12 years ago)
Author:
mkommend
Message:

adapted dataset to new IStringConvertibleMatrix interface (ticket #938)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Dataset.cs

    r3311 r3321  
    4646      }
    4747      Data = data;
    48       this.variableNames = variableNames.ToArray();
     48      this.VariableNames = variableNames;
     49      this.sortableView = false;
    4950    }
    5051
     
    5354    public IEnumerable<string> VariableNames {
    5455      get { return variableNames; }
     56      protected set {
     57        if (variableNames != value) {
     58          variableNames = value.ToArray();
     59          OnColumnNamesChanged();
     60        }
     61      }
    5562    }
    5663
     
    7582          data[rowIndex, columnIndex] = value;
    7683          OnDataChanged(new EventArgs<int, int>(rowIndex, columnIndex));
     84          OnItemChanged(rowIndex, columnIndex);
    7785        }
    7886      }
     
    116124      if (variableIndex < 0 || variableIndex >= variableNames.Length) throw new ArgumentException(" Cannot set name of not existent variable at index " + variableIndex + ".");
    117125      variableNames[variableIndex] = name;
     126      OnColumnNamesChanged();
    118127    }
    119128
     
    220229      var listeners = Reset;
    221230      if (listeners != null) listeners(this, e);
    222     }
    223 
    224     private void data_ItemChanged(object sender, EventArgs<int, int> e) {
    225       OnDataChanged(e);
    226     }
    227 
    228     private void data_Reset(object sender, EventArgs e) {
    229       OnReset(e);
    230231    }
    231232    #endregion
     
    271272              newVariableNames[column] = "Var" + column.ToString(formatString);
    272273          }
    273           variableNames = newVariableNames;
     274          VariableNames = newVariableNames;
    274275          Data = newValues;
     276        }
     277      }
     278    }
     279
     280    [Storable]
     281    private bool sortableView;
     282    public bool SortableView {
     283      get { return sortableView; }
     284      set {
     285        if (value != sortableView) {
     286          sortableView = value;
     287          OnSortableViewChanged();
    275288        }
    276289      }
     
    285298          i++;
    286299        }
     300        OnColumnNamesChanged();
    287301      }
    288302    }
     
    294308
    295309    public bool Validate(string value, out string errorMessage) {
     310      double val;
     311      bool valid = double.TryParse(value, out val);
    296312      errorMessage = string.Empty;
    297       return true;
     313      if (!valid) {
     314        StringBuilder sb = new StringBuilder();
     315        sb.Append("Invalid Value (Valid Value Format: \"");
     316        sb.Append(FormatPatterns.GetDoubleFormatPattern());
     317        sb.Append("\")");
     318        errorMessage = sb.ToString();
     319      }
     320      return valid;
    298321    }
    299322
     
    306329      if (double.TryParse(value, out v)) {
    307330        data[rowIndex, columnIndex] = v;
     331        OnDataChanged(new EventArgs<int, int>(rowIndex, columnIndex));
     332        OnItemChanged(rowIndex, columnIndex);
    308333        return true;
    309334      } else return false;
    310335    }
    311336
     337    public event EventHandler ColumnNamesChanged;
     338    private void OnColumnNamesChanged() {
     339      EventHandler handler = ColumnNamesChanged;
     340      if (handler != null)
     341        handler(this, EventArgs.Empty);
     342    }
     343    public event EventHandler RowNamesChanged;
     344    private void OnRowNamesChanged() {
     345      EventHandler handler = RowNamesChanged;
     346      if (handler != null)
     347        handler(this, EventArgs.Empty);
     348    }
     349    public event EventHandler SortableViewChanged;
     350    private void OnSortableViewChanged() {
     351      EventHandler handler = SortableViewChanged;
     352      if (handler != null)
     353        handler(this, EventArgs.Empty);
     354    }
    312355    public event EventHandler<EventArgs<int, int>> ItemChanged;
     356    private void OnItemChanged(int rowIndex, int columnIndex) {
     357      if (ItemChanged != null)
     358        ItemChanged(this, new EventArgs<int, int>(rowIndex, columnIndex));
     359      OnToStringChanged();
     360    }
    313361    #endregion
    314362  }
Note: See TracChangeset for help on using the changeset viewer.