Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Visualization/3.2/Options/OptionsDialog.cs @ 1561

Last change on this file since 1561 was 1561, checked in by dwagner, 16 years ago

Added functionality: Checkbox to enable/disable Markers for every datapoint added to OptionsDialog. (#581)

File size: 8.3 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Drawing;
4using System.Windows.Forms;
5using HeuristicLab.Visualization.Legend;
6
7namespace HeuristicLab.Visualization.Options {
8  public partial class OptionsDialog : Form {
9    private readonly IChartDataRowsModel model;
10    private readonly ViewSettings viewSettings;
11    private readonly ViewSettings oldViewSettings;
12    private LineParams[] oldLineParams;
13    private Dictionary<CheckBox,bool> ShowYAxisBoxes;
14    private Dictionary<CheckBox,bool> yAxisClipChangeableBoxes;
15
16    internal class LineParams {
17      string Label { get; set; }
18      Color Color { get; set; }
19      bool ShowMarkers { get; set; }
20      int Thickness { get; set; }
21      DrawingStyle Style { get; set; }
22      private readonly IDataRow row;
23
24      public LineParams(IDataRow row) {
25        Label = row.Label;
26        Color = row.Color;
27        Thickness = row.Thickness;
28        Style = row.Style;
29        this.row = row;
30        this.ShowMarkers = row.ShowMarkers;
31      }
32
33      public void applySettings() {
34        row.Label = Label;
35        row.Color = Color;
36        row.Thickness = Thickness;
37        row.Style = Style;
38        row.ShowMarkers = this.ShowMarkers;
39      }
40    }
41
42    public OptionsDialog(IChartDataRowsModel model) {
43      InitializeComponent();
44
45      this.model = model;
46      viewSettings = model.ViewSettings;
47      oldViewSettings = new ViewSettings(model.ViewSettings);
48
49      cbLegendPosition.Items.Add(LegendPosition.Top);
50      cbLegendPosition.Items.Add(LegendPosition.Bottom);
51      cbLegendPosition.Items.Add(LegendPosition.Left);
52      cbLegendPosition.Items.Add(LegendPosition.Right);
53
54      cbLegendPosition.SelectedItem = viewSettings.LegendPosition;
55    }
56
57    private void OptionsDialogSelectColorBtn_Click(object sender, EventArgs e) {
58      ColorDialog dlg = new ColorDialog();
59      dlg.ShowDialog();
60      ColorPreviewTB.BackColor = dlg.Color;
61      ((IDataRow)LineSelectCB.SelectedValue).Color = dlg.Color;
62    }
63
64    public IList<int> GetThicknesses() {
65      return new List<int>(new int[] {1, 2, 3, 4, 5, 6, 7, 8});
66    }
67
68    public IList<DrawingStyle> GetStyles() {
69      return new List<DrawingStyle>(new DrawingStyle[] {DrawingStyle.Solid, DrawingStyle.Dashed});
70    }
71
72    private void OptionsDialog_Load(object sender, EventArgs e) {
73      InitTabPageLines();
74      InitTabPageYAxes();
75    }
76
77    private void InitTabPageLines() {
78      if (model.Rows.Count != 0) {
79        int index = 0;
80        oldLineParams = new LineParams[model.Rows.Count];
81        foreach (var row in model.Rows) {
82          oldLineParams[index++]= new LineParams(row);
83        }
84        LineThicknessCB.DataSource = GetThicknesses();
85        LinestyleCB.DataSource = GetStyles();
86        LinestyleCB.SelectedItem = model.Rows[0].Style;
87        LineThicknessCB.SelectedItem = model.Rows[0].Thickness;
88        MarkercheckBox.Checked = model.Rows[0].ShowMarkers;
89
90        LineSelectCB.DataSource = model.Rows;
91        LineSelectCB.DisplayMember = "Label";
92
93       
94        LineSelectCB.SelectedIndex = 0;
95        LineSelectCB_SelectedIndexChanged(this, null);
96       
97      }
98    }
99
100    private void InitTabPageYAxes() {
101      ShowYAxisBoxes = new Dictionary<CheckBox, bool>();
102      yAxisClipChangeableBoxes = new Dictionary<CheckBox, bool>();
103
104      for (int i = 0; i < model.YAxes.Count; i++) {
105        YAxisDescriptor yAxisDescriptor = model.YAxes[i];
106
107        CheckBox cbxShowYAxis = new CheckBox();
108        cbxShowYAxis.Text = yAxisDescriptor.Label;
109        cbxShowYAxis.Checked = yAxisDescriptor.ShowYAxis;
110        ShowYAxisBoxes[cbxShowYAxis] = yAxisDescriptor.ShowYAxis;
111        cbxShowYAxis.CheckedChanged += delegate { yAxisDescriptor.ShowYAxis = cbxShowYAxis.Checked; };
112       
113        flpShowYAxis.Controls.Add(cbxShowYAxis);
114
115        CheckBox cbxClipChangeable = new CheckBox();
116        cbxClipChangeable.Text = yAxisDescriptor.Label;
117        cbxClipChangeable.Checked = yAxisDescriptor.ClipChangeable;
118        yAxisClipChangeableBoxes[cbxClipChangeable] = yAxisDescriptor.ClipChangeable;
119        cbxClipChangeable.CheckedChanged += delegate { yAxisDescriptor.ClipChangeable = cbxClipChangeable.Checked; };
120
121        flpYAxisClipChangeable.Controls.Add(cbxClipChangeable);
122      }
123    }
124
125    private void LineSelectCB_SelectedIndexChanged(object sender, EventArgs e) {
126      if (LineSelectCB.SelectedValue != null) {
127      /*  int index =
128          LineThicknessCB.FindStringExact(((IDataRow)LineSelectCB.SelectedValue).Thickness.ToString());
129        LineThicknessCB.SelectedIndex = index;
130        index = LinestyleCB.FindStringExact(((IDataRow)LineSelectCB.SelectedValue).Style.ToString());
131        LinestyleCB.SelectedIndex = index;  */
132        LineThicknessCB.SelectedItem = ((IDataRow) LineSelectCB.SelectedValue).Thickness;
133        LinestyleCB.SelectedItem = ((IDataRow)LineSelectCB.SelectedValue).Style;
134        ColorPreviewTB.BackColor = ((IDataRow)LineSelectCB.SelectedValue).Color;
135        MarkercheckBox.Checked = ((IDataRow) LineSelectCB.SelectedValue).ShowMarkers;
136      }
137    }
138
139   
140    private void OptionsDialogOkButton_Click(object sender, EventArgs e) {
141      Close();
142    }
143   
144    private void cbLegendPosition_SelectedIndexChanged(object sender, EventArgs e) {
145      viewSettings.LegendPosition = (LegendPosition)cbLegendPosition.SelectedItem;
146      viewSettings.UpdateView();
147    }
148
149    private void btnChangeTitleFont_Click(object sender, EventArgs e) {
150      fdFont.Font = viewSettings.TitleFont;
151      fdFont.Color = viewSettings.TitleColor;
152
153      DialogResult dr = fdFont.ShowDialog();
154
155      if(dr == DialogResult.OK) {
156        viewSettings.TitleFont = fdFont.Font;
157        viewSettings.TitleColor = fdFont.Color;
158
159        viewSettings.UpdateView();
160      }
161    }
162
163    private void btnChangeLegendFont_Click(object sender, EventArgs e) {
164      fdFont.Font = viewSettings.LegendFont;
165      fdFont.Color = viewSettings.LegendColor;
166
167      DialogResult dr = fdFont.ShowDialog();
168
169      if (dr == DialogResult.OK) {
170        viewSettings.LegendFont = fdFont.Font;
171        viewSettings.LegendColor = fdFont.Color;
172
173        viewSettings.UpdateView();
174      }
175    }
176
177    private void btnChangeXAxisFont_Click(object sender, EventArgs e) {
178      fdFont.Font = viewSettings.XAxisFont;
179      fdFont.Color = viewSettings.XAxisColor;
180
181      DialogResult dr = fdFont.ShowDialog();
182
183      if (dr == DialogResult.OK) {
184        viewSettings.XAxisFont = fdFont.Font;
185        viewSettings.XAxisColor = fdFont.Color;
186
187        viewSettings.UpdateView();
188      }
189    }
190
191    private void OptionsDialogResetButton_Click(object sender, EventArgs e) {
192      foreach (var param in oldLineParams) {
193        param.applySettings();
194      }
195
196      foreach (var box in ShowYAxisBoxes) {
197        box.Key.Checked = box.Value;
198      }
199
200      foreach (KeyValuePair<CheckBox, bool> box in yAxisClipChangeableBoxes) {
201        box.Key.Checked = box.Value;
202      }
203
204      viewSettings.LegendColor = oldViewSettings.LegendColor;
205      viewSettings.LegendPosition = oldViewSettings.LegendPosition;
206      viewSettings.LegendFont = oldViewSettings.LegendFont;
207      viewSettings.TitleColor = oldViewSettings.TitleColor;
208      viewSettings.TitleFont = oldViewSettings.TitleFont;
209      viewSettings.XAxisColor = oldViewSettings.LegendColor;
210      viewSettings.XAxisFont = oldViewSettings.XAxisFont;
211      viewSettings.UpdateView();
212      cbLegendPosition.SelectedItem = viewSettings.LegendPosition;
213      this.LineSelectCB_SelectedIndexChanged(this,null);
214    }
215
216    private void LinestyleCB_SelectedIndexChanged(object sender, EventArgs e) {
217      if (LineSelectCB.SelectedValue != null)
218        ((IDataRow)LineSelectCB.SelectedValue).Style = (DrawingStyle)LinestyleCB.SelectedItem;
219    }
220
221    private void LineThicknessCB_SelectedIndexChanged(object sender, EventArgs e) {
222      if (LineSelectCB.SelectedValue != null)
223        ((IDataRow)LineSelectCB.SelectedValue).Thickness = (int)LineThicknessCB.SelectedItem;
224    }
225
226    private void MarkercheckBox_CheckedChanged(object sender, EventArgs e) {
227      if (LineSelectCB.SelectedValue != null)
228        ((IDataRow) LineSelectCB.SelectedValue).ShowMarkers = MarkercheckBox.Checked;
229    }
230
231
232  }
233}
Note: See TracBrowser for help on using the repository browser.