Index: branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters.csproj
===================================================================
--- branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters.csproj	(revision 4820)
+++ branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters.csproj	(revision 4821)
@@ -38,9 +38,30 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Persistence-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
       <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
     </Reference>
+    <Reference Include="Microsoft.Build.Conversion.v3.5" />
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -56,4 +77,17 @@
     <Compile Include="HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SymbolicExpressionTreeSmalltalkStringFormatter.cs" />
+    <Compile Include="SymbolicExpressionSmalltalkView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="SymbolicExpressionSmalltalkView.Designer.cs">
+      <DependentUpon>SymbolicExpressionSmalltalkView.cs</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.csproj">
+      <Project>{125D3006-67F5-48CB-913E-73C0548F17FA}</Project>
+      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3</Name>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin.cs
===================================================================
--- branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin.cs	(revision 4820)
+++ branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin.cs	(revision 4821)
@@ -26,6 +26,6 @@
 
 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters {
-  [Plugin("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters", "3.3.1.0")]
-  [PluginFile("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.dll", PluginFileType.Assembly)]
+  [Plugin("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters", "3.3.1.4820")]
+  [PluginFile("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Analysis", "3.3.1.0")]
   [PluginDependency("HeuristicLab.Collections", "3.3.1.0")]
@@ -38,5 +38,5 @@
   [PluginDependency("HeuristicLab.Parameters", "3.3.1.0")]
   [PluginDependency("HeuristicLab.Persistence", "3.3.1.0")]
-  public class HeuristicLabEncodingsSymbolicExpressionTreeEncodingPlugin : PluginBase {
+  public class HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin : PluginBase {
   }
 }
Index: branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin.cs.frame
===================================================================
--- branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin.cs.frame	(revision 4820)
+++ branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin.cs.frame	(revision 4821)
@@ -27,5 +27,5 @@
 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters {
   [Plugin("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters", "3.3.1.$WCREV$")]
-  [PluginFile("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.dll", PluginFileType.Assembly)]
+  [PluginFile("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Analysis", "3.3.1.0")]
   [PluginDependency("HeuristicLab.Collections", "3.3.1.0")]
@@ -38,5 +38,5 @@
   [PluginDependency("HeuristicLab.Parameters", "3.3.1.0")]
   [PluginDependency("HeuristicLab.Persistence", "3.3.1.0")]
-  public class HeuristicLabEncodingsSymbolicExpressionTreeEncodingPlugin : PluginBase {
+  public class HeuristicLabEncodingsSymbolicExpressionTreeEncodingFormattersPlugin : PluginBase {
   }
 }
Index: branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/Properties/AssemblyInfo.cs
===================================================================
--- branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/Properties/AssemblyInfo.cs	(revision 4820)
+++ branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/Properties/AssemblyInfo.cs	(revision 4821)
@@ -45,3 +45,3 @@
 
 [assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.1.0")]
+[assembly: AssemblyFileVersion("3.3.1.4820")]
Index: branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionSmalltalkView.Designer.cs
===================================================================
--- branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionSmalltalkView.Designer.cs	(revision 4821)
+++ branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionSmalltalkView.Designer.cs	(revision 4821)
@@ -0,0 +1,74 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters {
+  partial class SymbolicExpressionSmalltalkView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.textBox = new System.Windows.Forms.TextBox();
+      this.SuspendLayout();
+      // 
+      // textBox
+      // 
+      this.textBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.textBox.Location = new System.Drawing.Point(0, 0);
+      this.textBox.Multiline = true;
+      this.textBox.Name = "textBox";
+      this.textBox.Size = new System.Drawing.Size(150, 150);
+      this.textBox.TabIndex = 0;
+      // 
+      // SymbolicExpressionTreeView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.textBox);
+      this.Name = "SymbolicExpressionTreeView";
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox textBox;
+  }
+}
Index: branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionSmalltalkView.cs
===================================================================
--- branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionSmalltalkView.cs	(revision 4821)
+++ branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionSmalltalkView.cs	(revision 4821)
@@ -0,0 +1,56 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters {
+  [View("SymbolicExpression Smalltalk View")]
+  [Content(typeof(SymbolicExpressionTree), false)]
+  public partial class SymbolicExpressionSmalltalkView : AsynchronousContentView {
+    private SymbolicExpressionTreeSmalltalkStringFormatter treeFormatter;
+
+    public new SymbolicExpressionTree Content {
+      get { return (SymbolicExpressionTree)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public SymbolicExpressionSmalltalkView() {
+      InitializeComponent();
+      treeFormatter = new SymbolicExpressionTreeSmalltalkStringFormatter();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null)
+        textBox.Text = string.Empty;
+      else
+        textBox.Text = treeFormatter.Format(Content);
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      textBox.Enabled = Content != null;
+      textBox.ReadOnly = ReadOnly;
+    }
+  }
+}
Index: branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionTreeSmalltalkStringFormatter.cs
===================================================================
--- branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionTreeSmalltalkStringFormatter.cs	(revision 4821)
+++ branches/SmalltalkExport/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters/3.3/SymbolicExpressionTreeSmalltalkStringFormatter.cs	(revision 4821)
@@ -0,0 +1,76 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters {
+
+  [Item("SymbolicExpressionTreeSmalltalkStringFormatter", "String formatter for string representations of symbolic expression trees in Smalltalk syntax.")]
+  [StorableClass]
+  public class SymbolicExpressionTreeSmalltalkStringFormatter : NamedItem, ISymbolicExpressionTreeStringFormatter {
+
+    public bool Indent { get; set; }
+
+    [StorableConstructor]
+    protected SymbolicExpressionTreeSmalltalkStringFormatter(bool deserializing) : base(deserializing) { }
+    protected SymbolicExpressionTreeSmalltalkStringFormatter(SymbolicExpressionTreeSmalltalkStringFormatter original, Cloner cloner) : base(original, cloner) { }
+    public SymbolicExpressionTreeSmalltalkStringFormatter()
+      : base() {
+      Indent = true;
+    }
+
+    public string Format(SymbolicExpressionTree symbolicExpressionTree) {
+      return FormatRecursively(symbolicExpressionTree.Root, 0);
+    }
+
+    private string FormatRecursively(SymbolicExpressionTreeNode node, int indentLength) {
+      StringBuilder strBuilder = new StringBuilder();
+      if (Indent) strBuilder.Append(' ', indentLength);
+      strBuilder.Append(".(");
+      // internal nodes or leaf nodes?
+      if (node.SubTrees.Count > 0) {
+        // symbol on same line as '('
+        strBuilder.AppendLine(node.ToString());
+        // each subtree expression on a new line
+        // and closing ')' also on new line
+        foreach (var subtree in node.SubTrees) {
+          strBuilder.AppendLine(FormatRecursively(subtree, indentLength + 2));
+        }
+        if (Indent) strBuilder.Append(' ', indentLength);
+        strBuilder.Append(")");
+      } else {
+        // symbol in the same line with as '(' and ')'
+        strBuilder.Append(node.ToString());
+        strBuilder.Append(")");
+      }
+      return strBuilder.ToString();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SymbolicExpressionTreeSmalltalkStringFormatter(this, cloner);
+    }
+
+  }
+
+}
