Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/21/09 13:41:51 (15 years ago)
Author:
dwagner
Message:

Added Functionality: Changes in dialog are directly applied to the linechart & reset button resets the values (#478)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Visualization/Options/OptionsDialog.cs

    r1388 r1389  
    11using System;
    22using System.Collections.Generic;
     3using System.Drawing;
    34using System.Windows.Forms;
    45using HeuristicLab.Visualization.Legend;
     
    89    private readonly IChartDataRowsModel model;
    910    private readonly ViewSettings viewSettings;
     11    private readonly ViewSettings oldViewSettings;
     12    private LineParams[] oldLineParams;
     13    private Dictionary<CheckBox,bool> ShowYAxisBoxes;
     14
     15    internal class LineParams {
     16      string Label { get; set; }
     17      Color Color { get; set; }
     18      int Thickness { get; set; }
     19      DrawingStyle Style { get; set; }
     20      private readonly IDataRow row;
     21
     22      public LineParams(IDataRow row) {
     23        Label = row.Label;
     24        Color = row.Color;
     25        Thickness = row.Thickness;
     26        Style = row.Style;
     27        this.row = row;
     28      }
     29
     30      public void applySettings() {
     31        row.Label = Label;
     32        row.Color = Color;
     33        row.Thickness = Thickness;
     34        row.Style = Style;
     35      }
     36    }
    1037
    1138    public OptionsDialog(IChartDataRowsModel model) {
     
    1441      this.model = model;
    1542      viewSettings = model.ViewSettings;
     43      oldViewSettings = new ViewSettings(model.ViewSettings);
    1644
    1745      cbLegendPosition.Items.Add(LegendPosition.Top);
     
    2755      dlg.ShowDialog();
    2856      ColorPreviewTB.BackColor = dlg.Color;
     57      ((IDataRow)LineSelectCB.SelectedValue).Color = dlg.Color;
    2958    }
    3059
    3160    public IList<int> GetThicknesses() {
    32       return new List<int>(new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8});
     61      return new List<int>(new int[] {1, 2, 3, 4, 5, 6, 7, 8});
    3362    }
    3463
     
    3867
    3968    private void OptionsDialog_Load(object sender, EventArgs e) {
     69      InitTabPageLines();
     70      InitTabPageYAxes();
     71    }
     72
     73    private void InitTabPageLines() {
    4074      if (model.Rows.Count != 0) {
     75        int index = 0;
     76        oldLineParams = new LineParams[model.Rows.Count];
     77        foreach (var row in model.Rows) {
     78          oldLineParams[index++]= new LineParams(row);
     79        }
     80        LineThicknessCB.DataSource = GetThicknesses();
     81        LinestyleCB.DataSource = GetStyles();
     82        LinestyleCB.SelectedItem = model.Rows[0].Style;
     83        LineThicknessCB.SelectedItem = model.Rows[0].Thickness;
     84
    4185        LineSelectCB.DataSource = model.Rows;
    4286        LineSelectCB.DisplayMember = "Label";
    4387
    44         LineThicknessCB.DataSource = GetThicknesses();
    45         LinestyleCB.DataSource = GetStyles();
     88       
    4689        LineSelectCB.SelectedIndex = 0;
    4790        LineSelectCB_SelectedIndexChanged(this, null);
    48       }
    49 
    50       InitTabPageYAxes();
     91       
     92      }
    5193    }
    5294
    5395    private void InitTabPageYAxes() {
     96      ShowYAxisBoxes = new Dictionary<CheckBox, bool>();
    5497      for (int i = 0; i < model.YAxes.Count; i++) {
    5598        YAxisDescriptor yAxisDescriptor = model.YAxes[i];
     
    58101        chkbox.Text = yAxisDescriptor.Label;
    59102        chkbox.Checked = yAxisDescriptor.ShowYAxis;
     103        ShowYAxisBoxes[chkbox] = yAxisDescriptor.ShowYAxis;
    60104        chkbox.CheckedChanged += delegate { yAxisDescriptor.ShowYAxis = chkbox.Checked; };
    61105       
     
    66110    private void LineSelectCB_SelectedIndexChanged(object sender, EventArgs e) {
    67111      if (LineSelectCB.SelectedValue != null) {
    68         int index =
     112      /*  int index =
    69113          LineThicknessCB.FindStringExact(((IDataRow)LineSelectCB.SelectedValue).Thickness.ToString());
    70114        LineThicknessCB.SelectedIndex = index;
    71115        index = LinestyleCB.FindStringExact(((IDataRow)LineSelectCB.SelectedValue).Style.ToString());
    72         LinestyleCB.SelectedIndex = index;
    73         ColorPreviewTB.BackColor = ((IDataRow)LineSelectCB.SelectedValue).Color;
    74       }
    75     }
    76 
    77     private void OptionsDialogCancelButton_Click(object sender, EventArgs e) {
     116        LinestyleCB.SelectedIndex = index;  */
     117        LineThicknessCB.SelectedItem = ((IDataRow) LineSelectCB.SelectedValue).Thickness;
     118        LinestyleCB.SelectedItem = ((IDataRow)LineSelectCB.SelectedValue).Style;
     119        ColorPreviewTB.BackColor = ((IDataRow)LineSelectCB.SelectedValue).Color;   
     120      }
     121    }
     122
     123   
     124    private void OptionsDialogOkButton_Click(object sender, EventArgs e) {
    78125      Close();
    79126    }
    80 
    81     private void OptionsDialogOkButton_Click(object sender, EventArgs e) {
    82       ApplyChanges();
    83 
    84       Close();
    85     }
    86 
    87     private void OptionsDialogApplyBtn_Click(object sender, EventArgs e) {
    88       ApplyChanges(); 
    89     }
    90 
    91     private void ApplyChanges() {
    92       if (LineSelectCB.SelectedValue != null) {
    93         ((IDataRow)LineSelectCB.SelectedValue).Thickness = (int)LineThicknessCB.SelectedItem;
    94         ((IDataRow)LineSelectCB.SelectedValue).Color = ColorPreviewTB.BackColor;
    95         ((IDataRow)LineSelectCB.SelectedValue).Style = (DrawingStyle)LinestyleCB.SelectedItem;
    96       }
    97       viewSettings.UpdateView();
    98     }
     127   
     128
     129   
    99130
    100131    private void cbLegendPosition_SelectedIndexChanged(object sender, EventArgs e) {
    101132      viewSettings.LegendPosition = (LegendPosition)cbLegendPosition.SelectedItem;
     133      viewSettings.UpdateView();
    102134    }
    103135
     
    143175      }
    144176    }
     177
     178    private void OptionsDialogResetButton_Click(object sender, EventArgs e) {
     179      foreach (var param in oldLineParams) {
     180        param.applySettings();
     181      }
     182
     183      foreach (var box in ShowYAxisBoxes) {
     184        box.Key.Checked = box.Value;
     185      }
     186      viewSettings.LegendColor = oldViewSettings.LegendColor;
     187      viewSettings.LegendPosition = oldViewSettings.LegendPosition;
     188      viewSettings.LegendFont = oldViewSettings.LegendFont;
     189      viewSettings.TitleColor = oldViewSettings.TitleColor;
     190      viewSettings.TitleFont = oldViewSettings.TitleFont;
     191      viewSettings.XAxisColor = oldViewSettings.LegendColor;
     192      viewSettings.XAxisFont = oldViewSettings.XAxisFont;
     193      viewSettings.UpdateView();
     194      cbLegendPosition.SelectedItem = viewSettings.LegendPosition;
     195      this.LineSelectCB_SelectedIndexChanged(this,null);
     196    }
     197
     198    private void LinestyleCB_SelectedIndexChanged(object sender, EventArgs e) {
     199      if (LineSelectCB.SelectedValue != null)
     200        ((IDataRow)LineSelectCB.SelectedValue).Style = (DrawingStyle)LinestyleCB.SelectedItem;
     201    }
     202
     203    private void LineThicknessCB_SelectedIndexChanged(object sender, EventArgs e) {
     204      if (LineSelectCB.SelectedValue != null)
     205        ((IDataRow)LineSelectCB.SelectedValue).Thickness = (int)LineThicknessCB.SelectedItem;
     206    }
     207
     208
     209
     210
    145211  }
    146212}
Note: See TracChangeset for help on using the changeset viewer.