Index: trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.Designer.cs	(revision 7214)
+++ trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.Designer.cs	(revision 7216)
@@ -54,4 +54,5 @@
       this.label3 = new System.Windows.Forms.Label();
       this.commonGroupBox = new System.Windows.Forms.GroupBox();
+      this.displayNameTextBox = new System.Windows.Forms.TextBox();
       this.axisGroupBox = new System.Windows.Forms.GroupBox();
       this.label5 = new System.Windows.Forms.Label();
@@ -63,4 +64,5 @@
       this.xAxisPrimaryRadioButton = new System.Windows.Forms.RadioButton();
       this.xAxisSecondaryRadioButton = new System.Windows.Forms.RadioButton();
+      this.label9 = new System.Windows.Forms.Label();
       this.histoGramGroupBox = new System.Windows.Forms.GroupBox();
       this.panel3 = new System.Windows.Forms.Panel();
@@ -73,6 +75,4 @@
       this.lineStyleComboBox = new System.Windows.Forms.ComboBox();
       this.label8 = new System.Windows.Forms.Label();
-      this.label9 = new System.Windows.Forms.Label();
-      this.displayNameTextBox = new System.Windows.Forms.TextBox();
       ((System.ComponentModel.ISupportInitialize)(this.binsNumericUpDown)).BeginInit();
       this.commonGroupBox.SuspendLayout();
@@ -168,6 +168,5 @@
       // commonGroupBox
       // 
-      this.commonGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.commonGroupBox.Anchor = System.Windows.Forms.AnchorStyles.Top;
       this.commonGroupBox.Controls.Add(this.displayNameTextBox);
       this.commonGroupBox.Controls.Add(this.axisGroupBox);
@@ -184,4 +183,12 @@
       this.commonGroupBox.Text = "Common";
       // 
+      // displayNameTextBox
+      // 
+      this.displayNameTextBox.Location = new System.Drawing.Point(89, 19);
+      this.displayNameTextBox.Name = "displayNameTextBox";
+      this.displayNameTextBox.Size = new System.Drawing.Size(211, 20);
+      this.displayNameTextBox.TabIndex = 10;
+      this.displayNameTextBox.Validated += new System.EventHandler(this.displayNameTextBox_Validated);
+      // 
       // axisGroupBox
       // 
@@ -281,8 +288,16 @@
       this.xAxisSecondaryRadioButton.CheckedChanged += new System.EventHandler(this.xAxisRadioButton_CheckedChanged);
       // 
+      // label9
+      // 
+      this.label9.AutoSize = true;
+      this.label9.Location = new System.Drawing.Point(8, 22);
+      this.label9.Name = "label9";
+      this.label9.Size = new System.Drawing.Size(75, 13);
+      this.label9.TabIndex = 0;
+      this.label9.Text = "Display Name:";
+      // 
       // histoGramGroupBox
       // 
-      this.histoGramGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.histoGramGroupBox.Anchor = System.Windows.Forms.AnchorStyles.Top;
       this.histoGramGroupBox.Controls.Add(this.panel3);
       this.histoGramGroupBox.Controls.Add(this.binsNumericUpDown);
@@ -330,6 +345,5 @@
       // lineChartGroupBox
       // 
-      this.lineChartGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.lineChartGroupBox.Anchor = System.Windows.Forms.AnchorStyles.Top;
       this.lineChartGroupBox.Controls.Add(this.lineWidthNumericUpDown);
       this.lineChartGroupBox.Controls.Add(this.label4);
@@ -399,21 +413,4 @@
       this.label8.TabIndex = 0;
       this.label8.Text = "Line style:";
-      // 
-      // label9
-      // 
-      this.label9.AutoSize = true;
-      this.label9.Location = new System.Drawing.Point(8, 22);
-      this.label9.Name = "label9";
-      this.label9.Size = new System.Drawing.Size(75, 13);
-      this.label9.TabIndex = 0;
-      this.label9.Text = "Display Name:";
-      // 
-      // displayNameTextBox
-      // 
-      this.displayNameTextBox.Location = new System.Drawing.Point(89, 19);
-      this.displayNameTextBox.Name = "displayNameTextBox";
-      this.displayNameTextBox.Size = new System.Drawing.Size(211, 20);
-      this.displayNameTextBox.TabIndex = 10;
-      this.displayNameTextBox.Validated += new System.EventHandler(this.displayNameTextBox_Validated);
       // 
       // DataRowVisualPropertiesControl
Index: trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableHistoryView.cs
===================================================================
--- trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableHistoryView.cs	(revision 7214)
+++ trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableHistoryView.cs	(revision 7216)
@@ -20,8 +20,9 @@
 #endregion
 
-using System.Collections.Generic;
+using System.Linq;
 using System.Windows.Forms;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
+using System.Collections.Generic;
 
 namespace HeuristicLab.Analysis.Views {
@@ -39,10 +40,5 @@
       using (DataTableVisualPropertiesDialog dialog = new DataTableVisualPropertiesDialog(current)) {
         if (dialog.ShowDialog() != DialogResult.OK) return;
-        Dictionary<string, bool> changeDisplayName = new Dictionary<string, bool>();
-        foreach (DataRow row in current.Rows) {
-          var answer = MessageBox.Show("Change display name for series " + row.Name + " to " + row.VisualProperties.DisplayName + " for all frames?", "Confirm change", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
-          if (answer == DialogResult.Cancel) return;
-          changeDisplayName[row.Name] = (answer == DialogResult.Yes);
-        }
+        HashSet<string> modifiedDisplayNames = new HashSet<string>(dialog.RowsWithModifiedDisplayNames);
         foreach (DataTable dt in Content) {
           if (current == dt) continue;
@@ -51,7 +47,7 @@
             if (!dt.Rows.ContainsKey(row.Name)) continue;
             string oldDisplayName = dt.Rows[row.Name].VisualProperties.DisplayName;
-            var props = (DataRowVisualProperties)row.VisualProperties.Clone();
-            if (!changeDisplayName[row.Name]) props.DisplayName = oldDisplayName;
-            dt.Rows[row.Name].VisualProperties = props;
+            dt.Rows[row.Name].VisualProperties = (DataRowVisualProperties)row.VisualProperties.Clone();
+            if (!modifiedDisplayNames.Contains(row.Name))
+              dt.Rows[row.Name].VisualProperties.DisplayName = oldDisplayName;
           }
         }
Index: trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs	(revision 7214)
+++ trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs	(revision 7216)
@@ -68,10 +68,10 @@
       // 
       this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.okButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.okButton.Location = new System.Drawing.Point(307, 381);
+      this.okButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.okButton.Location = new System.Drawing.Point(297, 386);
       this.okButton.Name = "okButton";
       this.okButton.Size = new System.Drawing.Size(75, 23);
       this.okButton.TabIndex = 0;
-      this.okButton.Text = "Ok";
+      this.okButton.Text = "OK";
       this.okButton.UseVisualStyleBackColor = true;
       this.okButton.Click += new System.EventHandler(this.okButton_Click);
@@ -81,5 +81,5 @@
       this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.cancelButton.Location = new System.Drawing.Point(388, 381);
+      this.cancelButton.Location = new System.Drawing.Point(378, 386);
       this.cancelButton.Name = "cancelButton";
       this.cancelButton.Size = new System.Drawing.Size(75, 23);
@@ -99,5 +99,5 @@
       this.tabControl.Name = "tabControl";
       this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(474, 374);
+      this.tabControl.Size = new System.Drawing.Size(464, 379);
       this.tabControl.TabIndex = 2;
       // 
@@ -108,5 +108,5 @@
       this.seriesTabPage.Name = "seriesTabPage";
       this.seriesTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.seriesTabPage.Size = new System.Drawing.Size(466, 348);
+      this.seriesTabPage.Size = new System.Drawing.Size(456, 353);
       this.seriesTabPage.TabIndex = 0;
       this.seriesTabPage.Text = "Series";
@@ -131,5 +131,5 @@
       this.splitContainer.Panel2.Controls.Add(this.dataRowVisualPropertiesControl);
       this.splitContainer.Panel2MinSize = 50;
-      this.splitContainer.Size = new System.Drawing.Size(460, 342);
+      this.splitContainer.Size = new System.Drawing.Size(450, 347);
       this.splitContainer.SplitterDistance = 125;
       this.splitContainer.TabIndex = 0;
@@ -165,5 +165,5 @@
       this.seriesListView.Name = "seriesListView";
       this.seriesListView.ShowGroups = false;
-      this.seriesListView.Size = new System.Drawing.Size(125, 313);
+      this.seriesListView.Size = new System.Drawing.Size(125, 319);
       this.seriesListView.TabIndex = 0;
       this.seriesListView.UseCompatibleStateImageBehavior = false;
@@ -174,8 +174,7 @@
       // 
       this.dataRowVisualPropertiesControl.Content = null;
-      this.dataRowVisualPropertiesControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.dataRowVisualPropertiesControl.Location = new System.Drawing.Point(0, 0);
+      this.dataRowVisualPropertiesControl.Location = new System.Drawing.Point(3, 3);
       this.dataRowVisualPropertiesControl.Name = "dataRowVisualPropertiesControl";
-      this.dataRowVisualPropertiesControl.Size = new System.Drawing.Size(331, 342);
+      this.dataRowVisualPropertiesControl.Size = new System.Drawing.Size(318, 342);
       this.dataRowVisualPropertiesControl.TabIndex = 0;
       // 
@@ -186,5 +185,5 @@
       this.chartTabPage.Name = "chartTabPage";
       this.chartTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.chartTabPage.Size = new System.Drawing.Size(466, 324);
+      this.chartTabPage.Size = new System.Drawing.Size(453, 348);
       this.chartTabPage.TabIndex = 1;
       this.chartTabPage.Text = "Chart";
@@ -197,5 +196,5 @@
       this.dataTableVisualPropertiesControl.Location = new System.Drawing.Point(3, 3);
       this.dataTableVisualPropertiesControl.Name = "dataTableVisualPropertiesControl";
-      this.dataTableVisualPropertiesControl.Size = new System.Drawing.Size(460, 318);
+      this.dataTableVisualPropertiesControl.Size = new System.Drawing.Size(447, 342);
       this.dataTableVisualPropertiesControl.TabIndex = 0;
       // 
@@ -206,5 +205,5 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.CancelButton = this.cancelButton;
-      this.ClientSize = new System.Drawing.Size(475, 416);
+      this.ClientSize = new System.Drawing.Size(465, 421);
       this.Controls.Add(this.tabControl);
       this.Controls.Add(this.cancelButton);
Index: trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.cs
===================================================================
--- trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.cs	(revision 7214)
+++ trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.cs	(revision 7216)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Windows.Forms;
@@ -32,10 +33,19 @@
     private Dictionary<string, DataRowVisualProperties> originalDataRowVPs;
 
+    private HashSet<string> modifiedDisplayNames;
+    public IEnumerable<string> RowsWithModifiedDisplayNames { get { return modifiedDisplayNames.AsEnumerable(); } }
+
     public DataTableVisualPropertiesDialog(DataTable dataTable) {
       InitializeComponent();
+      #region Prepare controls
       upButton.Text = string.Empty;
       upButton.Image = VSImageLibrary.ArrowUp;
       downButton.Text = string.Empty;
       downButton.Image = VSImageLibrary.ArrowDown;
+      seriesListView.Items.Clear();
+      seriesListView.SmallImageList = new ImageList();
+      seriesListView.SmallImageList.Images.Add(VSImageLibrary.Graph);
+      #endregion
+
       Content = dataTable;
       originalDataTableVPs = (DataTableVisualProperties)Content.VisualProperties.Clone();
@@ -43,17 +53,37 @@
       foreach (DataRow row in Content.Rows)
         originalDataRowVPs.Add(row.Name, (DataRowVisualProperties)row.VisualProperties.Clone());
-      seriesListView.Items.Clear();
-      seriesListView.SmallImageList = new ImageList();
-      seriesListView.SmallImageList.Images.Add(VSImageLibrary.Graph);
+
+      dataTableVisualPropertiesControl.Content = Content.VisualProperties;
+
+      modifiedDisplayNames = new HashSet<string>();
       FillSeriesListView();
-      dataTableVisualPropertiesControl.Content = Content.VisualProperties;
+      RegisterContentEvents();
     }
 
-    private void FillSeriesListView() {
-      seriesListView.SelectedIndices.Clear();
+    private void RegisterContentEvents() {
       foreach (DataRow row in Content.Rows) {
-        seriesListView.Items.Add(new ListViewItem(row.Name, 0));
+        row.VisualProperties.PropertyChanged += new PropertyChangedEventHandler(Row_VisualProperties_PropertyChanged);
       }
-      seriesListView.SelectedIndices.Add(0);
+    }
+
+    private void DeregisterContentEvents() {
+      foreach (DataRow row in Content.Rows) {
+        row.VisualProperties.PropertyChanged -= new PropertyChangedEventHandler(Row_VisualProperties_PropertyChanged);
+      }
+    }
+
+    protected override void OnClosing(CancelEventArgs e) {
+      DeregisterContentEvents();
+      Application.DoEvents();
+      base.OnClosing(e);
+    }
+
+    private void Row_VisualProperties_PropertyChanged(object sender, PropertyChangedEventArgs e) {
+      foreach (DataRow row in Content.Rows) {
+        if (e.PropertyName == "DisplayName" && row.VisualProperties == sender) {
+          modifiedDisplayNames.Add(row.Name);
+          break;
+        }
+      }
     }
 
@@ -79,4 +109,5 @@
         row.VisualProperties = originalDataRowVPs[row.Name];
       }
+      modifiedDisplayNames.Clear();
       Content.VisualProperties = originalDataTableVPs;
       Close();
@@ -124,4 +155,12 @@
 
     #region Helpers
+    private void FillSeriesListView() {
+      seriesListView.SelectedIndices.Clear();
+      foreach (DataRow row in Content.Rows) {
+        seriesListView.Items.Add(new ListViewItem(row.Name, 0));
+      }
+      seriesListView.SelectedIndices.Add(0);
+    }
+
     private void UpdateAllSeriesPositions() {
       Dictionary<string, DataRow> rows = Content.Rows.ToDictionary(x => x.Name);
Index: trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ImageExportDialog.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ImageExportDialog.Designer.cs	(revision 7214)
+++ trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ImageExportDialog.Designer.cs	(revision 7216)
@@ -67,4 +67,6 @@
       this.previewZoomLabel = new System.Windows.Forms.Label();
       this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
+      this.label19 = new System.Windows.Forms.Label();
+      this.rawImageSizeLabel = new System.Windows.Forms.Label();
       ((System.ComponentModel.ISupportInitialize)(this.widthNumericUD)).BeginInit();
       this.groupBox1.SuspendLayout();
@@ -162,6 +164,5 @@
             "96",
             "150",
-            "300",
-            "600"});
+            "300"});
       this.resolutionComboBox.Location = new System.Drawing.Point(76, 383);
       this.resolutionComboBox.Name = "resolutionComboBox";
@@ -180,14 +181,9 @@
             65536});
       this.widthNumericUD.Location = new System.Drawing.Point(76, 410);
-      this.widthNumericUD.Maximum = new decimal(new int[] {
-            1000,
-            0,
-            0,
-            0});
       this.widthNumericUD.Minimum = new decimal(new int[] {
             1,
             0,
             0,
-            131072});
+            65536});
       this.widthNumericUD.Name = "widthNumericUD";
       this.widthNumericUD.Size = new System.Drawing.Size(75, 20);
@@ -499,14 +495,9 @@
             65536});
       this.heightNumericUD.Location = new System.Drawing.Point(76, 436);
-      this.heightNumericUD.Maximum = new decimal(new int[] {
-            1000,
-            0,
-            0,
-            0});
       this.heightNumericUD.Minimum = new decimal(new int[] {
             1,
             0,
             0,
-            131072});
+            65536});
       this.heightNumericUD.Name = "heightNumericUD";
       this.heightNumericUD.Size = new System.Drawing.Size(75, 20);
@@ -548,5 +539,7 @@
       // 
       this.splitContainer.Panel2.Controls.Add(this.previewPictureBox);
+      this.splitContainer.Panel2.Controls.Add(this.label19);
       this.splitContainer.Panel2.Controls.Add(this.label13);
+      this.splitContainer.Panel2.Controls.Add(this.rawImageSizeLabel);
       this.splitContainer.Panel2.Controls.Add(this.previewZoomLabel);
       this.splitContainer.Size = new System.Drawing.Size(793, 478);
@@ -640,4 +633,22 @@
           "*.gif)|*.gif|TIFF (*.tif)|*.tif\"";
       this.saveFileDialog.FilterIndex = 2;
+      // 
+      // label19
+      // 
+      this.label19.AutoSize = true;
+      this.label19.Location = new System.Drawing.Point(85, 459);
+      this.label19.Name = "label19";
+      this.label19.Size = new System.Drawing.Size(84, 13);
+      this.label19.TabIndex = 10;
+      this.label19.Text = "Raw image size:";
+      // 
+      // rawImageSizeLabel
+      // 
+      this.rawImageSizeLabel.AutoSize = true;
+      this.rawImageSizeLabel.Location = new System.Drawing.Point(175, 459);
+      this.rawImageSizeLabel.Name = "rawImageSizeLabel";
+      this.rawImageSizeLabel.Size = new System.Drawing.Size(37, 13);
+      this.rawImageSizeLabel.TabIndex = 10;
+      this.rawImageSizeLabel.Text = "0.00M";
       // 
       // ImageExportDialog
@@ -721,4 +732,6 @@
     private System.Windows.Forms.ComboBox legendFontSizeComboBox;
     private System.Windows.Forms.Label label17;
+    private System.Windows.Forms.Label label19;
+    private System.Windows.Forms.Label rawImageSizeLabel;
   }
 }
Index: trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ImageExportDialog.cs
===================================================================
--- trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ImageExportDialog.cs	(revision 7214)
+++ trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ImageExportDialog.cs	(revision 7216)
@@ -127,4 +127,5 @@
         previewHeight = (int)Math.Round(height);
       } else previewZoomLabel.Text = (scaleFactor * 100).ToString("0") + "%";
+      rawImageSizeLabel.Text = GetRawImageSizeInMegabytes(width, height).ToString("0.00") + "M   " + "(" + Math.Round(width).ToString("0") + " x " + Math.Round(height).ToString("0") + ") pixels";
 
       Bitmap image = new Bitmap(previewWidth, previewHeight);
@@ -238,8 +239,16 @@
 
     private void widthNumericUD_ValueChanged(object sender, EventArgs e) {
+      float dpi, width, height;
+      GetImageParameters(out dpi, out width, out height);
+      if (GetRawImageSizeInMegabytes(width, height) > 25) // bigger than A4 at 300dpi
+        MessageBox.Show("Warning: The image is getting quite big.");
       if (togglePreviewCheckBox.Checked) UpdatePreview();
     }
 
     private void heightNumericUD_ValueChanged(object sender, EventArgs e) {
+      float dpi, width, height;
+      GetImageParameters(out dpi, out width, out height);
+      if (GetRawImageSizeInMegabytes(width, height) > 25) // bigger than A4 at 300dpi
+        MessageBox.Show("Warning: The image is getting quite big.");
       if (togglePreviewCheckBox.Checked) UpdatePreview();
     }
@@ -376,4 +385,8 @@
     }
 
+    private static float GetRawImageSizeInMegabytes(float width, float height) {
+      return ((3 * width * height) / (1024 * 1024));
+    }
+
   }
 }
