Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.CEDMA.Core/3.3/TableResultsView.cs @ 2223

Last change on this file since 2223 was 2223, checked in by mkommend, 15 years ago

reintegrated branch new heuristic.modeling database backend (ticket #712)

File size: 2.8 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Drawing;
5using System.Data;
6using System.Linq;
7using System.Text;
8using System.Windows.Forms;
9using HeuristicLab.Core;
10using HeuristicLab.CEDMA.Core;
11using HeuristicLab.PluginInfrastructure;
12
13namespace HeuristicLab.CEDMA.Core {
14
15  public partial class TableResultsView : ViewBase {
16    private Results Results {
17      get { return (Results)Item; }
18      set { Item = value; }
19    }
20    private bool suppressEvents;
21    public TableResultsView(Results results) {
22      suppressEvents = false;
23      InitializeComponent();
24      Results = results;
25      results.Changed += new EventHandler(results_Changed);
26    }
27
28    void results_Changed(object sender, EventArgs e) {
29      if (suppressEvents) return;
30      UpdateControls();
31    }
32
33    protected override void UpdateControls() {
34      suppressEvents = true;
35      dataGridView.Rows.Clear();
36      dataGridView.Columns.Clear();
37      List<string> attributeNames = Results.SelectModelAttributes().ToList();
38      foreach (var attribute in attributeNames) {
39        dataGridView.Columns.Add(attribute, attribute);
40      }
41
42      var entries = Results.GetEntries();
43      foreach (var entry in entries) {
44        if (entry.Visible) {
45          int rowIndex = dataGridView.Rows.Add();
46          dataGridView.Rows[rowIndex].Tag = entry;
47          foreach (string attrName in attributeNames) {
48            dataGridView.Rows[rowIndex].Cells[attrName].Value = entry.Get(attrName);
49          }
50          if (entry.Selected) dataGridView.Rows[rowIndex].Selected = true;
51        }
52      }
53      dataGridView.Update();
54      suppressEvents = false;
55    }
56
57    private void dataGridView_SelectionChanged(object sender, EventArgs e) {
58      if (suppressEvents) return;
59      foreach (DataGridViewRow row in dataGridView.Rows) {
60        ((ResultsEntry)row.Tag).Selected = row.Selected;
61      }
62      suppressEvents = true;
63      Results.FireChanged();
64      suppressEvents = false;
65    }
66
67    private void dataGridView_MouseDoubleClick(object sender, MouseEventArgs e) {
68      if (e.Button == MouseButtons.Left && e.Clicks == 2) {
69        DataGridView.HitTestInfo hitInfo = dataGridView.HitTest(e.X, e.Y);
70        ResultsEntry entry = (ResultsEntry)dataGridView.Rows[hitInfo.RowIndex].Tag;       
71        var model = (IItem)PersistenceManager.RestoreFromGZip((byte[])entry.Get("PersistedData"));
72        PluginManager.ControlManager.ShowControl(model.CreateView());
73      }
74    }
75  }
76
77  public class TablesResultsViewFactory : IResultsViewFactory {
78    #region IResultsViewFactory Members
79
80    public string Name {
81      get { return "Table"; }
82    }
83
84    public IControl CreateView(Results results) {
85      return new TableResultsView(results);
86    }
87
88    #endregion
89  }
90}
Note: See TracBrowser for help on using the repository browser.