Free cookie consent management tool by TermsFeed Policy Generator

Changeset 3328


Ignore:
Timestamp:
04/13/10 17:05:11 (14 years ago)
Author:
mkommend
Message:

added new functionality and bug fixed to StringConvertibleMatrixView (ticket #968)

Location:
trunk/sources/HeuristicLab.Data.Views/3.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs

    r3316 r3328  
    9292      this.dataGridView.Location = new System.Drawing.Point(0, 52);
    9393      this.dataGridView.Name = "dataGridView";
    94       this.dataGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders;
    9594      this.dataGridView.Size = new System.Drawing.Size(424, 352);
    9695      this.dataGridView.TabIndex = 4;
  • trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.cs

    r3324 r3328  
    6363      Content.ColumnNamesChanged -= new EventHandler(Content_ColumnNamesChanged);
    6464      Content.RowNamesChanged -= new EventHandler(Content_RowNamesChanged);
     65      Content.ReadOnlyViewChanged -= new EventHandler(Content_ReadOnlyViewChanged);
    6566      base.DeregisterContentEvents();
    6667    }
    67 
    6868
    6969    protected override void RegisterContentEvents() {
     
    7373      Content.ColumnNamesChanged += new EventHandler(Content_ColumnNamesChanged);
    7474      Content.RowNamesChanged += new EventHandler(Content_RowNamesChanged);
    75     }
    76 
     75      Content.ReadOnlyViewChanged += new EventHandler(Content_ReadOnlyViewChanged);
     76    }
    7777
    7878
    7979    protected override void OnContentChanged() {
    8080      base.OnContentChanged();
    81       sortedColumnIndizes.Clear();
    8281      if (Content == null) {
    8382        Caption = "StringConvertibleMatrix View";
     
    9291      } else {
    9392        Caption = "StringConvertibleMatrix (" + Content.GetType().Name + ")";
     93        UpdateReadOnlyControls();
    9494        UpdateData();
    9595      }
     
    9797
    9898    private void UpdateData() {
     99      sortedColumnIndizes.Clear();
     100      Sort();
    99101      rowsTextBox.Text = Content.Rows.ToString();
    100102      rowsTextBox.Enabled = true;
     
    102104      columnsTextBox.Enabled = true;
    103105      virtualRowIndizes = Enumerable.Range(0, Content.Rows).ToArray();
    104       dataGridView.EndEdit();
    105       dataGridView.RowCount = 0;
    106       dataGridView.ColumnCount = 0;
    107       if ((Content.Rows > 0) && (Content.Columns > 0)) {
    108         dataGridView.RowCount = Content.Rows;
    109         dataGridView.ColumnCount = Content.Columns;
    110         UpdateRowHeaders();
    111         UpdateColumnHeaders();
    112       }
    113       dataGridView.ReadOnly = Content.ReadOnlyView;
     106      dataGridView.RowCount = Content.Rows;
     107      dataGridView.ColumnCount = Content.Columns;
     108      UpdateRowHeaders();
     109      UpdateColumnHeaders();
    114110      dataGridView.Enabled = true;
    115111    }
     
    135131    }
    136132
     133    private void UpdateReadOnlyControls() {
     134      dataGridView.ReadOnly = Content.ReadOnlyView;
     135      rowsTextBox.ReadOnly = Content.ReadOnlyView;
     136      columnsTextBox.ReadOnly = Content.ReadOnlyView;
     137    }
     138
    137139    private void Content_RowNamesChanged(object sender, EventArgs e) {
    138       UpdateColumnHeaders();
    139     }
    140 
     140      if (InvokeRequired)
     141        Invoke(new EventHandler(Content_RowNamesChanged), sender, e);
     142      else
     143        UpdateRowHeaders();
     144    }
    141145    private void Content_ColumnNamesChanged(object sender, EventArgs e) {
    142       UpdateRowHeaders();
    143     }
    144 
     146      if (InvokeRequired)
     147        Invoke(new EventHandler(Content_ColumnNamesChanged), sender, e);
     148      else
     149        UpdateColumnHeaders();
     150    }
    145151    private void Content_ItemChanged(object sender, EventArgs<int, int> e) {
    146152      if (InvokeRequired)
    147153        Invoke(new EventHandler<EventArgs<int, int>>(Content_ItemChanged), sender, e);
    148       else {
     154      else
    149155        dataGridView.InvalidateCell(e.Value, e.Value2);
    150       }
    151156    }
    152157    private void Content_Reset(object sender, EventArgs e) {
     
    155160      else
    156161        UpdateData();
     162    }
     163
     164    private void Content_ReadOnlyViewChanged(object sender, EventArgs e) {
     165      if (InvokeRequired)
     166        Invoke(new EventHandler(Content_ReadOnlyViewChanged), sender, e);
     167      else
     168        UpdateReadOnlyControls();
    157169    }
    158170
     
    167179    }
    168180    private void rowsTextBox_Validated(object sender, EventArgs e) {
    169       Content.Rows = int.Parse(rowsTextBox.Text);
     181      int textBoxValue = int.Parse(rowsTextBox.Text);
     182      if (textBoxValue != Content.Rows)
     183        Content.Rows = textBoxValue;
    170184      errorProvider.SetError(rowsTextBox, string.Empty);
    171185    }
     
    187201    }
    188202    private void columnsTextBox_Validated(object sender, EventArgs e) {
    189       Content.Columns = int.Parse(columnsTextBox.Text);
     203      int textBoxValue = int.Parse(columnsTextBox.Text);
     204      if (textBoxValue != Content.Columns)
     205        Content.Columns = textBoxValue;
    190206      errorProvider.SetError(columnsTextBox, string.Empty);
    191207    }
     
    202218    #region DataGridView Events
    203219    private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
    204       string errorMessage;
    205       if (!Content.Validate(e.FormattedValue.ToString(), out errorMessage)) {
    206         e.Cancel = true;
    207         dataGridView.Rows[e.RowIndex].ErrorText = errorMessage;
     220      if (!dataGridView.ReadOnly) {
     221        string errorMessage;
     222        if (!Content.Validate(e.FormattedValue.ToString(), out errorMessage)) {
     223          e.Cancel = true;
     224          dataGridView.Rows[e.RowIndex].ErrorText = errorMessage;
     225        }
    208226      }
    209227    }
    210228    private void dataGridView_CellParsing(object sender, DataGridViewCellParsingEventArgs e) {
    211       string value = e.Value.ToString();
    212       int rowIndex = virtualRowIndizes[e.RowIndex];
    213       e.ParsingApplied = Content.SetValue(value, rowIndex, e.ColumnIndex);
    214       if (e.ParsingApplied) e.Value = Content.GetValue(rowIndex, e.ColumnIndex);
     229      if (!dataGridView.ReadOnly) {
     230        string value = e.Value.ToString();
     231        int rowIndex = virtualRowIndizes[e.RowIndex];
     232        e.ParsingApplied = Content.SetValue(value, rowIndex, e.ColumnIndex);
     233        if (e.ParsingApplied) e.Value = Content.GetValue(rowIndex, e.ColumnIndex);
     234      }
    215235    }
    216236    private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
     
    262282
    263283    private void Sort() {
    264       int[] newSortedIndex = Enumerable.Range(0, Content.Rows - 1).ToArray();
     284      int[] newSortedIndex = Enumerable.Range(0, Content.Rows).ToArray();
    265285      if (sortedColumnIndizes.Count != 0) {
    266286        rowComparer.sortedIndizes = sortedColumnIndizes;
     
    269289      }
    270290      virtualRowIndizes = newSortedIndex;
     291      UpdateSortGlyph();
    271292      dataGridView.Invalidate();
     293    }
     294
     295    private void UpdateSortGlyph() {
    272296      foreach (DataGridViewColumn col in this.dataGridView.Columns)
    273297        col.HeaderCell.SortGlyphDirection = SortOrder.None;
Note: See TracChangeset for help on using the changeset viewer.