Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/BoxChartCreator.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/BoxChartCreator.cs	(revision 7208)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/BoxChartCreator.cs	(revision 7210)
@@ -6,4 +6,5 @@
 using System.Linq;
 using System.Text;
+using HeuristicLab.Collections;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -20,4 +21,6 @@
   [StorableClass]
   public class BoxChartCreator : ParameterizedNamedItem, IRunCollectionModifier {
+
+    public enum AppendModes { None, Horizontal, Vertical };
 
     #region Parameters
@@ -37,4 +40,7 @@
       get { return (ValueParameter<StringValue>) Parameters["ZipFileName"]; }
     } 
+    public ConstrainedValueParameter<StringValue> AppendModeParameter {
+      get { return (ConstrainedValueParameter<StringValue>) Parameters["AppendMode"]; }
+    } 
     #endregion
 
@@ -44,5 +50,6 @@
     protected int Size { get { return SizeParameter.Value.Value; } }
     protected int Padding { get { return PaddingParameter.Value.Value; } }
-    protected List<IBoxChartElementGenerator> Generators {
+    protected AppendModes AppendMode { get { return (AppendModes)Enum.Parse(typeof(AppendModes), AppendModeParameter.Value.Value); } }
+      protected List<IBoxChartElementGenerator> Generators {
       get {
         return ElementsParameter.Value.CheckedItems.Select(i => i.Value).ToList();
@@ -54,5 +61,7 @@
     [StorableConstructor]
     protected BoxChartCreator(bool deserializing) : base(deserializing) { }
-    protected BoxChartCreator(BoxChartCreator original, Cloner cloner) : base(original, cloner) { }
+    protected BoxChartCreator(BoxChartCreator original, Cloner cloner) : base(original, cloner) {
+      RegisterEvents();
+    }
     public BoxChartCreator() {
       Parameters.Add(new ValueParameter<StringValue>("ChartName", "The result name of the chart.", new StringValue("Chart")));
@@ -61,4 +70,8 @@
       Parameters.Add(new ValueParameter<IntValue>("Padding", "The padding inside the boxes", new IntValue(1))); 
       Parameters.Add(new ValueParameter<StringValue>("ZipFileName", "The name of the zip file that will contain all generated charts.", new StringValue("")));
+      Parameters.Add(new ConstrainedValueParameter<StringValue>("AppendMode", "Determines how coordinates of new elements are calculated.",
+        new ItemSet<StringValue>(Enum.GetNames(typeof (AppendModes)).Select(v => new StringValue(v)))));
+      AppendModeParameter.Value = AppendModeParameter.ValidValues.SingleOrDefault(v => v.Value == AppendModes.Horizontal.ToString());
+      RegisterEvents();
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -69,6 +82,46 @@
       if (!Parameters.ContainsKey("ZipFileName"))
         Parameters.Add(new ValueParameter<StringValue>("ZipFileName", "The name of the zip file that will contain all generated charts.", new StringValue("")));
+      if (!Parameters.ContainsKey("AppendMode")) {
+        Parameters.Add(new ConstrainedValueParameter<StringValue>("AppendMode", "Determines how coordinates of new elements are calculated.",
+          new ItemSet<StringValue>(Enum.GetNames(typeof (AppendModes)).Select(v => new StringValue(v)))));
+        AppendModeParameter.Value = AppendModeParameter.ValidValues.SingleOrDefault(v => v.Value == AppendModes.Horizontal.ToString());
+      }
+      RegisterEvents();
     }
     #endregion
+
+    private void RegisterEvents() {
+      ElementsParameter.ValueChanged += ElementsParameter_ValueChanged;
+      ElementsParameter.Value.ItemsAdded += ElementsParameter_Value_ItemsAdded;
+    }
+
+    private void ElementsParameter_ValueChanged(object sender, EventArgs e) {
+      ElementsParameter.Value.ItemsAdded += ElementsParameter_Value_ItemsAdded;
+    }
+
+    private void ElementsParameter_Value_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IBoxChartElementGenerator>> e) {
+      if (sender != ElementsParameter.Value) {
+        var oldParameter = sender as ICheckedItemList<IBoxChartElementGenerator>;
+        if (oldParameter != null)
+          oldParameter.ItemsAdded -= ElementsParameter_Value_ItemsAdded;
+      } else {
+        var generators = Generators;
+        var newItems = e.Items.Select(kvp => kvp.Value).ToList();
+        switch (AppendMode) {
+          case AppendModes.Horizontal: 
+            foreach (var generator in newItems) {
+              generator.Y = generators.Max(g => g.Y + g.RowSpan - 1);
+              generator.X = generators.Where(g => g.Y + g.RowSpan - 1 == generator.Y).Max(g => g.X + g.ColSpan);
+            }
+            break;
+          case AppendModes.Vertical:
+            foreach (var generator in newItems) {
+              generator.X = generators.Max(g => g.X + g.ColSpan - 1);
+              generator.Y = generators.Where(g => g.X + g.ColSpan - 1 == generator.X).Max(g => g.Y + g.RowSpan);
+            }
+            break;
+        }
+      }
+    }
 
     #region IRunCollectionModifier Members
@@ -116,4 +169,5 @@
 
     #endregion
+
   }
 }
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/EmptyBoxChartElementGenerator.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/EmptyBoxChartElementGenerator.cs	(revision 7208)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/EmptyBoxChartElementGenerator.cs	(revision 7210)
@@ -30,8 +30,20 @@
     }
 
-    public int X { get { return XParameter.Value.Value; } }
-    public int Y { get { return YParameter.Value.Value; } }
-    public int ColSpan { get { return ColSpanParameter.Value.Value; } }
-    public int RowSpan { get { return RowSpanParameter.Value.Value; } }
+    public int X {
+      get { return XParameter.Value.Value; }
+      set { XParameter.Value.Value = value; }
+    }
+    public int Y {
+      get { return YParameter.Value.Value; }
+      set { YParameter.Value.Value = value; }
+    }
+    public int ColSpan {
+      get { return ColSpanParameter.Value.Value; }
+      set { ColSpanParameter.Value.Value = value; }
+    }
+    public int RowSpan {
+      get { return RowSpanParameter.Value.Value; }
+      set { RowSpanParameter.Value.Value = value; }
+    }
 
     #region Construction & Cloning
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/IBoxChartElementGenerator.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/IBoxChartElementGenerator.cs	(revision 7208)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/IBoxChartElementGenerator.cs	(revision 7210)
@@ -15,8 +15,8 @@
 
   public interface IBoxChartElementGenerator : INamedItem {
-    int X { get; }
-    int Y { get; }
-    int ColSpan { get; }
-    int RowSpan { get; }
+    int X { get; set; }
+    int Y { get; set; }
+    int ColSpan { get; set; }
+    int RowSpan { get; set; }
     void Draw(IRun run, Graphics g);
   }
