Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/OKBClient.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/OKBClient.cs	(revision 5603)
+++ 	(revision )
@@ -1,812 +1,0 @@
-﻿#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;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using HeuristicLab.Clients.Common;
-using HeuristicLab.Collections;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.Xml;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Clients.OKB {
-  [Item("OKBClient", "Client for accessing the OKB.")]
-  public sealed class OKBClient : IContent {
-    private static OKBClient instance;
-    public static OKBClient Instance {
-      get {
-        if (instance == null) instance = new OKBClient();
-        return instance;
-      }
-    }
-
-    #region Properties
-    private ItemCollection<Platform> platforms;
-    public ItemCollection<Platform> Platforms {
-      get { return platforms; }
-    }
-    private ItemCollection<DataType> dataTypes;
-    public ItemCollection<DataType> DataTypes {
-      get { return dataTypes; }
-    }
-    private IEnumerable<User> users;
-    public IEnumerable<User> Users {
-      get { return users; }
-    }
-    private ItemCollection<AlgorithmClass> algorithmClasses;
-    public ItemCollection<AlgorithmClass> AlgorithmClasses {
-      get { return algorithmClasses; }
-    }
-    private ItemCollection<Algorithm> algorithms;
-    public ItemCollection<Algorithm> Algorithms {
-      get { return algorithms; }
-    }
-    private ItemCollection<ProblemClass> problemClasses;
-    public ItemCollection<ProblemClass> ProblemClasses {
-      get { return problemClasses; }
-    }
-    private ItemCollection<Problem> problems;
-    public ItemCollection<Problem> Problems {
-      get { return problems; }
-    }
-    #endregion
-
-    private OKBClient() {
-      platforms = new ItemCollection<Platform>();
-      platforms.ItemsRemoved += new CollectionItemsChangedEventHandler<Platform>(platforms_ItemsRemoved);
-      dataTypes = new ItemCollection<DataType>();
-      dataTypes.ItemsRemoved += new CollectionItemsChangedEventHandler<DataType>(dataTypes_ItemsRemoved);
-      algorithmClasses = new ItemCollection<AlgorithmClass>();
-      algorithmClasses.ItemsRemoved += new CollectionItemsChangedEventHandler<AlgorithmClass>(algorithmClasses_ItemsRemoved);
-      algorithms = new ItemCollection<Algorithm>();
-      algorithms.ItemsRemoved += new CollectionItemsChangedEventHandler<Algorithm>(algorithms_ItemsRemoved);
-      problemClasses = new ItemCollection<ProblemClass>();
-      problemClasses.ItemsRemoved += new CollectionItemsChangedEventHandler<ProblemClass>(problemClasses_ItemsRemoved);
-      problems = new ItemCollection<Problem>();
-      problems.ItemsRemoved += new CollectionItemsChangedEventHandler<Problem>(problems_ItemsRemoved);
-    }
-
-    #region Refresh
-    public void Refresh() {
-      OnRefreshing();
-
-      platforms.Clear();
-      dataTypes.Clear();
-      algorithmClasses.Clear();
-      algorithms.Clear();
-      problemClasses.Clear();
-      problems.Clear();
-
-      var call = new Func<Exception>(delegate() {
-        try {
-          platforms.AddRange(CallAdministrationService<List<Platform>>(s => s.GetPlatforms()).OrderBy(x => x.Name));
-          dataTypes.AddRange(CallAdministrationService<List<DataType>>(s => s.GetDataTypes()).OrderBy(x => x.Name));
-          users = CallAuthenticationService<List<User>>(s => s.GetUsers()).OrderBy(x => x.Name);
-          algorithmClasses.AddRange(CallAdministrationService<List<AlgorithmClass>>(s => s.GetAlgorithmClasses()).OrderBy(x => x.Name));
-          algorithms.AddRange(CallAdministrationService<List<Algorithm>>(s => s.GetAlgorithms()).OrderBy(x => x.Name));
-          problemClasses.AddRange(CallAdministrationService<List<ProblemClass>>(s => s.GetProblemClasses()).OrderBy(x => x.Name));
-          problems.AddRange(CallAdministrationService<List<Problem>>(s => s.GetProblems()).OrderBy(x => x.Name));
-          return null;
-        }
-        catch (Exception ex) {
-          return ex;
-        }
-      });
-      call.BeginInvoke(delegate(IAsyncResult result) {
-        Exception ex = call.EndInvoke(result);
-        if (ex != null) ErrorHandling.ShowErrorDialog("Refresh failed.", ex);
-        OnRefreshed();
-      }, null);
-    }
-    #endregion
-
-    #region Store
-    public bool Store(IOKBItem item) {
-      try {
-        if (item.Id == 0) {
-          if (item is Platform)
-            item.Id = CallAdministrationService<long>(s => s.AddPlatform((Platform)item));
-          else if (item is DataType)
-            item.Id = CallAdministrationService<long>(s => s.AddDataType((DataType)item));
-          else if (item is AlgorithmClass)
-            item.Id = CallAdministrationService<long>(s => s.AddAlgorithmClass((AlgorithmClass)item));
-          else if (item is Algorithm)
-            item.Id = CallAdministrationService<long>(s => s.AddAlgorithm((Algorithm)item));
-          else if (item is AlgorithmParameter)
-            item.Id = CallAdministrationService<long>(s => s.AddAlgorithmParameter((AlgorithmParameter)item));
-          else if (item is ProblemClass)
-            item.Id = CallAdministrationService<long>(s => s.AddProblemClass((ProblemClass)item));
-          else if (item is Problem)
-            item.Id = CallAdministrationService<long>(s => s.AddProblem((Problem)item));
-          else if (item is ProblemParameter)
-            item.Id = CallAdministrationService<long>(s => s.AddProblemParameter((ProblemParameter)item));
-          else if (item is Result)
-            item.Id = CallAdministrationService<long>(s => s.AddResult((Result)item));
-          else if (item is Experiment)
-            item.Id = CallAdministrationService<long>(s => s.AddExperiment((Experiment)item));
-          else if (item is Run)
-            item.Id = CallAdministrationService<long>(s => s.AddRun((Run)item));
-        } else {
-          if (item is Platform)
-            CallAdministrationService(s => s.UpdatePlatform((Platform)item));
-          else if (item is DataType)
-            CallAdministrationService(s => s.UpdateDataType((DataType)item));
-          else if (item is AlgorithmClass)
-            CallAdministrationService(s => s.UpdateAlgorithmClass((AlgorithmClass)item));
-          else if (item is Algorithm)
-            CallAdministrationService(s => s.UpdateAlgorithm((Algorithm)item));
-          else if (item is AlgorithmParameter)
-            CallAdministrationService(s => s.UpdateAlgorithmParameter((AlgorithmParameter)item));
-          else if (item is ProblemClass)
-            CallAdministrationService(s => s.UpdateProblemClass((ProblemClass)item));
-          else if (item is Problem)
-            CallAdministrationService(s => s.UpdateProblem((Problem)item));
-          else if (item is ProblemParameter)
-            CallAdministrationService(s => s.UpdateProblemParameter((ProblemParameter)item));
-          else if (item is Result)
-            CallAdministrationService(s => s.UpdateResult((Result)item));
-          else if (item is Experiment)
-            item.Id = CallAdministrationService<long>(s => s.AddExperiment((Experiment)item));
-          else if (item is Run)
-            item.Id = CallAdministrationService<long>(s => s.AddRun((Run)item));
-        }
-        return true;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Store failed.", ex);
-        return false;
-      }
-    }
-    #endregion
-
-    #region DataType Methods
-    public DataType ConvertToDataType(Type type) {
-      DataType dataType = DataTypes.FirstOrDefault(x => x.TypeName == type.AssemblyQualifiedName);
-      if (dataType == null) {
-        dataType = new DataType();
-        dataType.Name = type.Name;
-        dataType.TypeName = type.AssemblyQualifiedName;
-        dataType.PlatformId = Platforms.FirstOrDefault(x => x.Name == "HeuristicLab 3.3").Id;
-
-        if (typeof(BoolValue).IsAssignableFrom(type))
-          dataType.SqlName = "bit";
-        else if (typeof(IntValue).IsAssignableFrom(type))
-          dataType.SqlName = "bigint";
-        else if (typeof(DoubleValue).IsAssignableFrom(type))
-          dataType.SqlName = "float";
-        else if (typeof(StringValue).IsAssignableFrom(type) || typeof(IStringConvertibleValue).IsAssignableFrom(type))
-          dataType.SqlName = "nvarchar";
-        else
-          dataType.SqlName = "varbinary";
-
-        dataType.Store();
-        DataTypes.Add(dataType);
-      }
-      return dataType;
-    }
-    #endregion
-
-    #region Algorithm Methods
-    public List<Guid> GetAlgorithmUsers(long algorithmId) {
-      try {
-        return CallAdministrationService<List<Guid>>(s => s.GetAlgorithmUsers(algorithmId));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh authorized algorithm users failed.", ex);
-        return null;
-      }
-    }
-    public bool UpdateAlgorithmUsers(long algorithmId, List<Guid> users) {
-      try {
-        CallAdministrationService(s => s.UpdateAlgorithmUsers(algorithmId, users));
-        return true;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Update authorized algorithm users failed.", ex);
-        return false;
-      }
-    }
-    public AlgorithmData GetAlgorithmData(long algorithmId) {
-      try {
-        return CallAdministrationService<AlgorithmData>(s => s.GetAlgorithmData(algorithmId));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh algorithm data failed.", ex);
-        return null;
-      }
-    }
-    public bool UpdateAlgorithmData(AlgorithmData algorithmData) {
-      try {
-        CallAdministrationService(s => s.UpdateAlgorithmData(algorithmData));
-        return true;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Update algorithm data failed.", ex);
-        return false;
-      }
-    }
-    #endregion
-
-    #region Problem Methods
-    public List<Guid> GetProblemUsers(long problemId) {
-      try {
-        return CallAdministrationService<List<Guid>>(s => s.GetProblemUsers(problemId));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh authorized problem users failed.", ex);
-        return null;
-      }
-    }
-    public bool UpdateProblemUsers(long problemId, List<Guid> users) {
-      try {
-        CallAdministrationService(s => s.UpdateProblemUsers(problemId, users));
-        return true;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Update authorized problem users failed.", ex);
-        return false;
-      }
-    }
-    public ProblemData GetProblemData(long problemId) {
-      try {
-        return CallAdministrationService<ProblemData>(s => s.GetProblemData(problemId));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh problem data failed.", ex);
-        return null;
-      }
-    }
-    public bool UpdateProblemData(ProblemData problemData) {
-      try {
-        CallAdministrationService(s => s.UpdateProblemData(problemData));
-        return true;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Update problem data failed.", ex);
-        return false;
-      }
-    }
-    #endregion
-
-    #region AlgorithmParameter Methods
-    public AlgorithmParameter GetAlgorithmParameter(long id) {
-      try {
-        return CallAdministrationService<AlgorithmParameter>(s => s.GetAlgorithmParameter(id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh algorithm parameter failed.", ex);
-        return null;
-      }
-    }
-    public ItemCollection<AlgorithmParameter> GetAlgorithmParameters(long algorithmId) {
-      try {
-        ItemCollection<AlgorithmParameter> parameters = new ItemCollection<AlgorithmParameter>();
-        parameters.AddRange(CallAdministrationService<List<AlgorithmParameter>>(s => s.GetAlgorithmParameters(algorithmId)).OrderBy(x => x.Name));
-        return parameters;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh algorithm parameters failed.", ex);
-        return null;
-      }
-    }
-    #endregion
-
-    #region ProblemParameter Methods
-    public ProblemParameter GetProblemParameter(long id) {
-      try {
-        return CallAdministrationService<ProblemParameter>(s => s.GetProblemParameter(id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh problem parameter failed.", ex);
-        return null;
-      }
-    }
-    public ItemCollection<ProblemParameter> GetProblemParameters(long problemId) {
-      try {
-        ItemCollection<ProblemParameter> parameters = new ItemCollection<ProblemParameter>();
-        parameters.AddRange(CallAdministrationService<List<ProblemParameter>>(s => s.GetProblemParameters(problemId)).OrderBy(x => x.Name));
-        return parameters;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh problem parameters failed.", ex);
-        return null;
-      }
-    }
-    #endregion
-
-    #region Result Methods
-    public Result GetResult(long id) {
-      try {
-        return CallAdministrationService<Result>(s => s.GetResult(id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh result failed.", ex);
-        return null;
-      }
-    }
-    public ItemCollection<Result> GetResults(long algorithmId) {
-      try {
-        ItemCollection<Result> results = new ItemCollection<Result>();
-        results.AddRange(CallAdministrationService<List<Result>>(s => s.GetResults(algorithmId)).OrderBy(x => x.Name));
-        return results;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh results failed.", ex);
-        return null;
-      }
-    }
-    #endregion
-
-    #region Experiment Methods
-    public Experiment GetExperiment(long id) {
-      try {
-        return CallAdministrationService<Experiment>(s => s.GetExperiment(id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh experiment failed.", ex);
-        return null;
-      }
-    }
-    public ItemCollection<Experiment> GetExperiments(long algorithmId, long problemId) {
-      try {
-        ItemCollection<Experiment> experiments = new ItemCollection<Experiment>();
-        experiments.AddRange(CallAdministrationService<List<Experiment>>(s => s.GetExperiments(algorithmId, problemId)));
-        experiments.ItemsRemoved += new CollectionItemsChangedEventHandler<Experiment>(experiments_ItemsRemoved);
-        return experiments;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh experiments failed.", ex);
-        return null;
-      }
-    }
-    #endregion
-
-    #region Run Methods
-    public ItemCollection<Run> GetRuns(long experimentId) {
-      try {
-        ItemCollection<Run> runs = new ItemCollection<Run>();
-        runs.AddRange(CallAdministrationService<List<Run>>(s => s.GetRuns(experimentId)).OrderByDescending(x => x.CreatedDate));
-        runs.ItemsRemoved += new CollectionItemsChangedEventHandler<Run>(runs_ItemsRemoved);
-        return runs;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Refresh runs failed.", ex);
-        return null;
-      }
-    }
-    public bool AddRun(long algorithmId, long problemId, IAlgorithm algorithm) {
-      try {
-        IProblem problem = algorithm.Problem;
-
-        ItemCollection<AlgorithmParameter> algorithmParameters = GetAlgorithmParameters(algorithmId);
-        List<AlgorithmParameterValue> algorithmParameterValues = CollectAlgorithmParameterValues(algorithmId, algorithmParameters, algorithm, "");
-        ItemCollection<ProblemParameter> problemParameters = GetProblemParameters(problemId);
-        List<ProblemParameterValue> problemParameterValues = CollectProblemParamterValues(problemId, problemParameters, problem, "");
-        ItemCollection<Result> results = GetResults(algorithmId);
-        List<ResultValue> resultValues = CollectResultValues(algorithmId, results, algorithm);
-
-        Experiment exp = new Experiment();
-        exp.AlgorithmId = algorithmId;
-        exp.ProblemId = problemId;
-        exp.AlgorithmParameterValues = algorithmParameterValues;
-        exp.ProblemParameterValues = problemParameterValues;
-        exp.Store();
-
-        Run r = new Run();
-        r.ExperimentId = exp.Id;
-        r.ClientId = Guid.NewGuid();
-        r.CreatedDate = DateTime.Now;
-        r.RandomSeed = ((IntValue)((IValueParameter)algorithm.Parameters["Seed"]).Value).Value;
-        r.ResultValues = resultValues;
-        r.Store();
-
-        return true;
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Store run failed.", ex);
-        return false;
-      }
-    }
-
-    private List<AlgorithmParameterValue> CollectAlgorithmParameterValues(long algorithmId, ItemCollection<AlgorithmParameter> parameters, IParameterizedItem item, string prefix) {
-      List<AlgorithmParameterValue> values = new List<AlgorithmParameterValue>();
-      foreach (IValueParameter param in item.Parameters.OfType<IValueParameter>()) {
-        if (param.GetsCollected && (param.Value != null) && (param.Name != "Seed")) {
-          AlgorithmParameter p = parameters.FirstOrDefault(x => x.Name == prefix + param.Name);
-          if (p == null) {
-            p = new AlgorithmParameter();
-            p.Name = prefix + param.Name;
-            p.Alias = prefix + param.Name;
-            p.Description = param.Description;
-            p.AlgorithmId = algorithmId;
-            p.DataTypeId = ConvertToDataType(param.DataType).Id;
-            p.Store();
-            parameters.Add(p);
-          }
-          AlgorithmParameterValue value = CreateAlgorithmParameterValue(param.Value);
-          value.AlgorithmParameterId = p.Id;
-          value.DataTypeId = ConvertToDataType(param.Value.GetType()).Id;
-          values.Add(value);
-        }
-
-        if (param.Value is IParameterizedItem)
-          values.AddRange(CollectAlgorithmParameterValues(algorithmId, parameters, (IParameterizedItem)param.Value, (string.IsNullOrEmpty(prefix) ? param.Name : prefix + param.Name) + "."));
-      }
-      return values;
-    }
-    private AlgorithmParameterValue CreateAlgorithmParameterValue(IItem item) {
-      if (item is BoolValue) {
-        AlgorithmParameterBoolValue value = new AlgorithmParameterBoolValue();
-        value.Value = ((BoolValue)item).Value;
-        return value;
-      } else if (item is DoubleValue) {
-        AlgorithmParameterFloatValue value = new AlgorithmParameterFloatValue();
-        value.Value = ((DoubleValue)item).Value;
-        return value;
-      } else if (item is IntValue) {
-        AlgorithmParameterIntValue value = new AlgorithmParameterIntValue();
-        value.Value = ((IntValue)item).Value;
-        return value;
-      } else if (item is StringValue) {
-        AlgorithmParameterStringValue value = new AlgorithmParameterStringValue();
-        value.Value = ((StringValue)item).Value;
-        return value;
-      } else {
-        AlgorithmParameterBlobValue value = new AlgorithmParameterBlobValue();
-        try {
-          using (MemoryStream stream = new MemoryStream()) {
-            XmlGenerator.Serialize(item, stream);
-            stream.Close();
-            value.Value = stream.ToArray();
-          }
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(ex);
-        }
-        return value;
-      }
-    }
-    private List<ProblemParameterValue> CollectProblemParamterValues(long problemId, ItemCollection<ProblemParameter> parameters, IParameterizedItem item, string prefix) {
-      List<ProblemParameterValue> values = new List<ProblemParameterValue>();
-      foreach (IValueParameter param in item.Parameters.OfType<IValueParameter>()) {
-        if (param.GetsCollected && (param.Value != null)) {
-          ProblemParameter p = parameters.FirstOrDefault(x => x.Name == prefix + param.Name);
-          if (p == null) {
-            p = new ProblemParameter();
-            p.Name = prefix + param.Name;
-            p.Alias = prefix + param.Name;
-            p.Description = param.Description;
-            p.ProblemId = problemId;
-            p.DataTypeId = ConvertToDataType(param.DataType).Id;
-            p.Store();
-            parameters.Add(p);
-          }
-          ProblemParameterValue value = CreateProblemParameterValue(param.Value);
-          value.ProblemParameterId = p.Id;
-          value.DataTypeId = ConvertToDataType(param.Value.GetType()).Id;
-          values.Add(value);
-        }
-
-        if (param.Value is IParameterizedItem)
-          values.AddRange(CollectProblemParamterValues(problemId, parameters, (IParameterizedItem)param.Value, (string.IsNullOrEmpty(prefix) ? param.Name : prefix + param.Name) + "."));
-      }
-      return values;
-    }
-    private ProblemParameterValue CreateProblemParameterValue(IItem item) {
-      if (item is BoolValue) {
-        ProblemParameterBoolValue value = new ProblemParameterBoolValue();
-        value.Value = ((BoolValue)item).Value;
-        return value;
-      } else if (item is DoubleValue) {
-        ProblemParameterFloatValue value = new ProblemParameterFloatValue();
-        value.Value = ((DoubleValue)item).Value;
-        return value;
-      } else if (item is IntValue) {
-        ProblemParameterIntValue value = new ProblemParameterIntValue();
-        value.Value = ((IntValue)item).Value;
-        return value;
-      } else if (item is StringValue) {
-        ProblemParameterStringValue value = new ProblemParameterStringValue();
-        value.Value = ((StringValue)item).Value;
-        return value;
-      } else {
-        ProblemParameterBlobValue value = new ProblemParameterBlobValue();
-        try {
-          using (MemoryStream stream = new MemoryStream()) {
-            XmlGenerator.Serialize(item, stream);
-            stream.Close();
-            value.Value = stream.ToArray();
-          }
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(ex);
-        }
-        return value;
-      }
-    }
-    private List<ResultValue> CollectResultValues(long algorithmId, ItemCollection<Result> results, IAlgorithm algorithm) {
-      List<ResultValue> values = new List<ResultValue>();
-      foreach (IResult result in algorithm.Results) {
-        if (result.Value != null) {
-          Result r = results.FirstOrDefault(x => x.Name == result.Name);
-          if (r == null) {
-            r = new Result();
-            r.Name = result.Name;
-            r.Alias = result.Name;
-            r.Description = result.Description;
-            r.AlgorithmId = algorithmId;
-            r.DataTypeId = ConvertToDataType(result.DataType).Id;
-            r.Store();
-            results.Add(r);
-          }
-          ResultValue value = CreateResultValue(result.Value);
-          value.ResultId = r.Id;
-          value.DataTypeId = ConvertToDataType(result.Value.GetType()).Id;
-          values.Add(value);
-        }
-      }
-      return values;
-    }
-    private ResultValue CreateResultValue(IItem item) {
-      if (item is BoolValue) {
-        ResultBoolValue value = new ResultBoolValue();
-        value.Value = ((BoolValue)item).Value;
-        return value;
-      } else if (item is DoubleValue) {
-        ResultFloatValue value = new ResultFloatValue();
-        value.Value = ((DoubleValue)item).Value;
-        return value;
-      } else if (item is IntValue) {
-        ResultIntValue value = new ResultIntValue();
-        value.Value = ((IntValue)item).Value;
-        return value;
-      } else if (item is StringValue) {
-        ResultStringValue value = new ResultStringValue();
-        value.Value = ((StringValue)item).Value;
-        return value;
-      } else {
-        ResultBlobValue value = new ResultBlobValue();
-        try {
-          using (MemoryStream stream = new MemoryStream()) {
-            XmlGenerator.Serialize(item, stream);
-            stream.Close();
-            value.Value = stream.ToArray();
-          }
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(ex);
-        }
-        return value;
-      }
-    }
-    #endregion
-
-    #region Query Methods
-    private IEnumerable<Filter> filters;
-    public IEnumerable<Filter> GetFilters(bool refresh) {
-      if (refresh || (filters == null)) {
-        try {
-          filters = CallQueryService<List<Filter>>(s => s.GetFilters());
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog("Get filters failed.", ex);
-          return Enumerable.Empty<Filter>();
-        }
-      }
-      return filters;
-    }
-    public IEnumerable<Filter> GetFilters() {
-      return GetFilters(false);
-    }
-    public long GetNumberOfQueryResults(Filter filter) {
-      try {
-        return CallQueryService<long>(x => x.GetNumberOfQueryResults(filter));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Get number of query results failed.", ex);
-        return -1;
-      }
-    }
-    public IEnumerable<long> GetQueryResultIds(Filter filter) {
-      try {
-        return CallQueryService<IEnumerable<long>>(x => x.GetQueryResultIds(filter));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Get query result ids failed.", ex);
-        return Enumerable.Empty<long>();
-      }
-    }
-    public IEnumerable<QueryResult> GetQueryResults(IEnumerable<long> ids) {
-      try {
-        return CallQueryService<IEnumerable<QueryResult>>(s => s.GetQueryResults(ids.ToList()));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Get query results failed.", ex);
-        return null;
-      }
-    }
-    #endregion
-
-    #region Events
-    public event EventHandler Refreshing;
-    private void OnRefreshing() {
-      EventHandler handler = Refreshing;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler Refreshed;
-    private void OnRefreshed() {
-      EventHandler handler = Refreshed;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    private void platforms_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Platform> e) {
-      try {
-        foreach (Platform p in e.Items)
-          CallAdministrationService(s => s.DeletePlatform(p.Id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
-      }
-    }
-    private void dataTypes_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<DataType> e) {
-      try {
-        foreach (DataType d in e.Items)
-          CallAdministrationService(s => s.DeleteDataType(d.Id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
-      }
-    }
-    private void algorithmClasses_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<AlgorithmClass> e) {
-      try {
-        foreach (AlgorithmClass a in e.Items)
-          CallAdministrationService(s => s.DeleteAlgorithmClass(a.Id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
-      }
-    }
-    private void algorithms_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Algorithm> e) {
-      try {
-        foreach (Algorithm a in e.Items)
-          CallAdministrationService(s => s.DeleteAlgorithm(a.Id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
-      }
-    }
-    private void problemClasses_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<ProblemClass> e) {
-      try {
-        foreach (ProblemClass p in e.Items)
-          CallAdministrationService(s => s.DeleteProblemClass(p.Id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
-      }
-    }
-    private void problems_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Problem> e) {
-      try {
-        foreach (Problem p in e.Items)
-          CallAdministrationService(s => s.DeleteProblem(p.Id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
-      }
-    }
-    private void experiments_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Experiment> e) {
-      try {
-        foreach (Experiment exp in e.Items)
-          CallAdministrationService(s => s.DeleteExperiment(exp.Id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
-      }
-    }
-    private void runs_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Run> e) {
-      try {
-        foreach (Run r in e.Items)
-          CallAdministrationService(s => s.DeleteRun(r.Id));
-      }
-      catch (Exception ex) {
-        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
-      }
-    }
-    #endregion
-
-    #region Helpers
-    private void CallAdministrationService(Action<IAdministrationService> call) {
-      AdministrationServiceClient client = ClientFactory.CreateClient<AdministrationServiceClient, IAdministrationService>();
-      try {
-        call(client);
-      }
-      finally {
-        try {
-          client.Close();
-        }
-        catch (Exception) {
-          client.Abort();
-        }
-      }
-    }
-    private T CallAdministrationService<T>(Func<IAdministrationService, T> call) {
-      AdministrationServiceClient client = ClientFactory.CreateClient<AdministrationServiceClient, IAdministrationService>();
-      try {
-        return call(client);
-      }
-      finally {
-        try {
-          client.Close();
-        }
-        catch (Exception) {
-          client.Abort();
-        }
-      }
-    }
-    private void CallQueryService(Action<IQueryService> call) {
-      QueryServiceClient client = ClientFactory.CreateClient<QueryServiceClient, IQueryService>();
-      try {
-        call(client);
-      }
-      finally {
-        try {
-          client.Close();
-        }
-        catch (Exception) {
-          client.Abort();
-        }
-      }
-    }
-    private T CallQueryService<T>(Func<IQueryService, T> call) {
-      QueryServiceClient client = ClientFactory.CreateClient<QueryServiceClient, IQueryService>();
-      try {
-        return call(client);
-      }
-      finally {
-        try {
-          client.Close();
-        }
-        catch (Exception) {
-          client.Abort();
-        }
-      }
-    }
-    private T CallAuthenticationService<T>(Func<IAuthenticationService, T> call) {
-      AuthenticationServiceClient client = ClientFactory.CreateClient<AuthenticationServiceClient, IAuthenticationService>();
-      try {
-        return call(client);
-      }
-      finally {
-        try {
-          client.Close();
-        }
-        catch (Exception) {
-          client.Abort();
-        }
-      }
-    }
-    #endregion
-  }
-}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/QueryClient.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/QueryClient.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/QueryClient.cs	(revision 5604)
@@ -0,0 +1,812 @@
+﻿#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;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using HeuristicLab.Clients.Common;
+using HeuristicLab.Collections;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.Xml;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Clients.OKB {
+  [Item("OKBClient", "Client for accessing the OKB.")]
+  public sealed class OKBClient : IContent {
+    private static OKBClient instance;
+    public static OKBClient Instance {
+      get {
+        if (instance == null) instance = new OKBClient();
+        return instance;
+      }
+    }
+
+    #region Properties
+    private ItemCollection<Platform> platforms;
+    public ItemCollection<Platform> Platforms {
+      get { return platforms; }
+    }
+    private ItemCollection<DataType> dataTypes;
+    public ItemCollection<DataType> DataTypes {
+      get { return dataTypes; }
+    }
+    private IEnumerable<User> users;
+    public IEnumerable<User> Users {
+      get { return users; }
+    }
+    private ItemCollection<AlgorithmClass> algorithmClasses;
+    public ItemCollection<AlgorithmClass> AlgorithmClasses {
+      get { return algorithmClasses; }
+    }
+    private ItemCollection<Algorithm> algorithms;
+    public ItemCollection<Algorithm> Algorithms {
+      get { return algorithms; }
+    }
+    private ItemCollection<ProblemClass> problemClasses;
+    public ItemCollection<ProblemClass> ProblemClasses {
+      get { return problemClasses; }
+    }
+    private ItemCollection<Problem> problems;
+    public ItemCollection<Problem> Problems {
+      get { return problems; }
+    }
+    #endregion
+
+    private OKBClient() {
+      platforms = new ItemCollection<Platform>();
+      platforms.ItemsRemoved += new CollectionItemsChangedEventHandler<Platform>(platforms_ItemsRemoved);
+      dataTypes = new ItemCollection<DataType>();
+      dataTypes.ItemsRemoved += new CollectionItemsChangedEventHandler<DataType>(dataTypes_ItemsRemoved);
+      algorithmClasses = new ItemCollection<AlgorithmClass>();
+      algorithmClasses.ItemsRemoved += new CollectionItemsChangedEventHandler<AlgorithmClass>(algorithmClasses_ItemsRemoved);
+      algorithms = new ItemCollection<Algorithm>();
+      algorithms.ItemsRemoved += new CollectionItemsChangedEventHandler<Algorithm>(algorithms_ItemsRemoved);
+      problemClasses = new ItemCollection<ProblemClass>();
+      problemClasses.ItemsRemoved += new CollectionItemsChangedEventHandler<ProblemClass>(problemClasses_ItemsRemoved);
+      problems = new ItemCollection<Problem>();
+      problems.ItemsRemoved += new CollectionItemsChangedEventHandler<Problem>(problems_ItemsRemoved);
+    }
+
+    #region Refresh
+    public void Refresh() {
+      OnRefreshing();
+
+      platforms.Clear();
+      dataTypes.Clear();
+      algorithmClasses.Clear();
+      algorithms.Clear();
+      problemClasses.Clear();
+      problems.Clear();
+
+      var call = new Func<Exception>(delegate() {
+        try {
+          platforms.AddRange(CallAdministrationService<List<Platform>>(s => s.GetPlatforms()).OrderBy(x => x.Name));
+          dataTypes.AddRange(CallAdministrationService<List<DataType>>(s => s.GetDataTypes()).OrderBy(x => x.Name));
+          users = CallAuthenticationService<List<User>>(s => s.GetUsers()).OrderBy(x => x.Name);
+          algorithmClasses.AddRange(CallAdministrationService<List<AlgorithmClass>>(s => s.GetAlgorithmClasses()).OrderBy(x => x.Name));
+          algorithms.AddRange(CallAdministrationService<List<Algorithm>>(s => s.GetAlgorithms()).OrderBy(x => x.Name));
+          problemClasses.AddRange(CallAdministrationService<List<ProblemClass>>(s => s.GetProblemClasses()).OrderBy(x => x.Name));
+          problems.AddRange(CallAdministrationService<List<Problem>>(s => s.GetProblems()).OrderBy(x => x.Name));
+          return null;
+        }
+        catch (Exception ex) {
+          return ex;
+        }
+      });
+      call.BeginInvoke(delegate(IAsyncResult result) {
+        Exception ex = call.EndInvoke(result);
+        if (ex != null) ErrorHandling.ShowErrorDialog("Refresh failed.", ex);
+        OnRefreshed();
+      }, null);
+    }
+    #endregion
+
+    #region Store
+    public bool Store(IOKBItem item) {
+      try {
+        if (item.Id == 0) {
+          if (item is Platform)
+            item.Id = CallAdministrationService<long>(s => s.AddPlatform((Platform)item));
+          else if (item is DataType)
+            item.Id = CallAdministrationService<long>(s => s.AddDataType((DataType)item));
+          else if (item is AlgorithmClass)
+            item.Id = CallAdministrationService<long>(s => s.AddAlgorithmClass((AlgorithmClass)item));
+          else if (item is Algorithm)
+            item.Id = CallAdministrationService<long>(s => s.AddAlgorithm((Algorithm)item));
+          else if (item is AlgorithmParameter)
+            item.Id = CallAdministrationService<long>(s => s.AddAlgorithmParameter((AlgorithmParameter)item));
+          else if (item is ProblemClass)
+            item.Id = CallAdministrationService<long>(s => s.AddProblemClass((ProblemClass)item));
+          else if (item is Problem)
+            item.Id = CallAdministrationService<long>(s => s.AddProblem((Problem)item));
+          else if (item is ProblemParameter)
+            item.Id = CallAdministrationService<long>(s => s.AddProblemParameter((ProblemParameter)item));
+          else if (item is Result)
+            item.Id = CallAdministrationService<long>(s => s.AddResult((Result)item));
+          else if (item is Experiment)
+            item.Id = CallAdministrationService<long>(s => s.AddExperiment((Experiment)item));
+          else if (item is Run)
+            item.Id = CallAdministrationService<long>(s => s.AddRun((Run)item));
+        } else {
+          if (item is Platform)
+            CallAdministrationService(s => s.UpdatePlatform((Platform)item));
+          else if (item is DataType)
+            CallAdministrationService(s => s.UpdateDataType((DataType)item));
+          else if (item is AlgorithmClass)
+            CallAdministrationService(s => s.UpdateAlgorithmClass((AlgorithmClass)item));
+          else if (item is Algorithm)
+            CallAdministrationService(s => s.UpdateAlgorithm((Algorithm)item));
+          else if (item is AlgorithmParameter)
+            CallAdministrationService(s => s.UpdateAlgorithmParameter((AlgorithmParameter)item));
+          else if (item is ProblemClass)
+            CallAdministrationService(s => s.UpdateProblemClass((ProblemClass)item));
+          else if (item is Problem)
+            CallAdministrationService(s => s.UpdateProblem((Problem)item));
+          else if (item is ProblemParameter)
+            CallAdministrationService(s => s.UpdateProblemParameter((ProblemParameter)item));
+          else if (item is Result)
+            CallAdministrationService(s => s.UpdateResult((Result)item));
+          else if (item is Experiment)
+            item.Id = CallAdministrationService<long>(s => s.AddExperiment((Experiment)item));
+          else if (item is Run)
+            item.Id = CallAdministrationService<long>(s => s.AddRun((Run)item));
+        }
+        return true;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Store failed.", ex);
+        return false;
+      }
+    }
+    #endregion
+
+    #region DataType Methods
+    public DataType ConvertToDataType(Type type) {
+      DataType dataType = DataTypes.FirstOrDefault(x => x.TypeName == type.AssemblyQualifiedName);
+      if (dataType == null) {
+        dataType = new DataType();
+        dataType.Name = type.Name;
+        dataType.TypeName = type.AssemblyQualifiedName;
+        dataType.PlatformId = Platforms.FirstOrDefault(x => x.Name == "HeuristicLab 3.3").Id;
+
+        if (typeof(BoolValue).IsAssignableFrom(type))
+          dataType.SqlName = "bit";
+        else if (typeof(IntValue).IsAssignableFrom(type))
+          dataType.SqlName = "bigint";
+        else if (typeof(DoubleValue).IsAssignableFrom(type))
+          dataType.SqlName = "float";
+        else if (typeof(StringValue).IsAssignableFrom(type) || typeof(IStringConvertibleValue).IsAssignableFrom(type))
+          dataType.SqlName = "nvarchar";
+        else
+          dataType.SqlName = "varbinary";
+
+        dataType.Store();
+        DataTypes.Add(dataType);
+      }
+      return dataType;
+    }
+    #endregion
+
+    #region Algorithm Methods
+    public List<Guid> GetAlgorithmUsers(long algorithmId) {
+      try {
+        return CallAdministrationService<List<Guid>>(s => s.GetAlgorithmUsers(algorithmId));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh authorized algorithm users failed.", ex);
+        return null;
+      }
+    }
+    public bool UpdateAlgorithmUsers(long algorithmId, List<Guid> users) {
+      try {
+        CallAdministrationService(s => s.UpdateAlgorithmUsers(algorithmId, users));
+        return true;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Update authorized algorithm users failed.", ex);
+        return false;
+      }
+    }
+    public AlgorithmData GetAlgorithmData(long algorithmId) {
+      try {
+        return CallAdministrationService<AlgorithmData>(s => s.GetAlgorithmData(algorithmId));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh algorithm data failed.", ex);
+        return null;
+      }
+    }
+    public bool UpdateAlgorithmData(AlgorithmData algorithmData) {
+      try {
+        CallAdministrationService(s => s.UpdateAlgorithmData(algorithmData));
+        return true;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Update algorithm data failed.", ex);
+        return false;
+      }
+    }
+    #endregion
+
+    #region Problem Methods
+    public List<Guid> GetProblemUsers(long problemId) {
+      try {
+        return CallAdministrationService<List<Guid>>(s => s.GetProblemUsers(problemId));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh authorized problem users failed.", ex);
+        return null;
+      }
+    }
+    public bool UpdateProblemUsers(long problemId, List<Guid> users) {
+      try {
+        CallAdministrationService(s => s.UpdateProblemUsers(problemId, users));
+        return true;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Update authorized problem users failed.", ex);
+        return false;
+      }
+    }
+    public ProblemData GetProblemData(long problemId) {
+      try {
+        return CallAdministrationService<ProblemData>(s => s.GetProblemData(problemId));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh problem data failed.", ex);
+        return null;
+      }
+    }
+    public bool UpdateProblemData(ProblemData problemData) {
+      try {
+        CallAdministrationService(s => s.UpdateProblemData(problemData));
+        return true;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Update problem data failed.", ex);
+        return false;
+      }
+    }
+    #endregion
+
+    #region AlgorithmParameter Methods
+    public AlgorithmParameter GetAlgorithmParameter(long id) {
+      try {
+        return CallAdministrationService<AlgorithmParameter>(s => s.GetAlgorithmParameter(id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh algorithm parameter failed.", ex);
+        return null;
+      }
+    }
+    public ItemCollection<AlgorithmParameter> GetAlgorithmParameters(long algorithmId) {
+      try {
+        ItemCollection<AlgorithmParameter> parameters = new ItemCollection<AlgorithmParameter>();
+        parameters.AddRange(CallAdministrationService<List<AlgorithmParameter>>(s => s.GetAlgorithmParameters(algorithmId)).OrderBy(x => x.Name));
+        return parameters;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh algorithm parameters failed.", ex);
+        return null;
+      }
+    }
+    #endregion
+
+    #region ProblemParameter Methods
+    public ProblemParameter GetProblemParameter(long id) {
+      try {
+        return CallAdministrationService<ProblemParameter>(s => s.GetProblemParameter(id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh problem parameter failed.", ex);
+        return null;
+      }
+    }
+    public ItemCollection<ProblemParameter> GetProblemParameters(long problemId) {
+      try {
+        ItemCollection<ProblemParameter> parameters = new ItemCollection<ProblemParameter>();
+        parameters.AddRange(CallAdministrationService<List<ProblemParameter>>(s => s.GetProblemParameters(problemId)).OrderBy(x => x.Name));
+        return parameters;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh problem parameters failed.", ex);
+        return null;
+      }
+    }
+    #endregion
+
+    #region Result Methods
+    public Result GetResult(long id) {
+      try {
+        return CallAdministrationService<Result>(s => s.GetResult(id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh result failed.", ex);
+        return null;
+      }
+    }
+    public ItemCollection<Result> GetResults(long algorithmId) {
+      try {
+        ItemCollection<Result> results = new ItemCollection<Result>();
+        results.AddRange(CallAdministrationService<List<Result>>(s => s.GetResults(algorithmId)).OrderBy(x => x.Name));
+        return results;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh results failed.", ex);
+        return null;
+      }
+    }
+    #endregion
+
+    #region Experiment Methods
+    public Experiment GetExperiment(long id) {
+      try {
+        return CallAdministrationService<Experiment>(s => s.GetExperiment(id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh experiment failed.", ex);
+        return null;
+      }
+    }
+    public ItemCollection<Experiment> GetExperiments(long algorithmId, long problemId) {
+      try {
+        ItemCollection<Experiment> experiments = new ItemCollection<Experiment>();
+        experiments.AddRange(CallAdministrationService<List<Experiment>>(s => s.GetExperiments(algorithmId, problemId)));
+        experiments.ItemsRemoved += new CollectionItemsChangedEventHandler<Experiment>(experiments_ItemsRemoved);
+        return experiments;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh experiments failed.", ex);
+        return null;
+      }
+    }
+    #endregion
+
+    #region Run Methods
+    public ItemCollection<Run> GetRuns(long experimentId) {
+      try {
+        ItemCollection<Run> runs = new ItemCollection<Run>();
+        runs.AddRange(CallAdministrationService<List<Run>>(s => s.GetRuns(experimentId)).OrderByDescending(x => x.CreatedDate));
+        runs.ItemsRemoved += new CollectionItemsChangedEventHandler<Run>(runs_ItemsRemoved);
+        return runs;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh runs failed.", ex);
+        return null;
+      }
+    }
+    public bool AddRun(long algorithmId, long problemId, IAlgorithm algorithm) {
+      try {
+        IProblem problem = algorithm.Problem;
+
+        ItemCollection<AlgorithmParameter> algorithmParameters = GetAlgorithmParameters(algorithmId);
+        List<AlgorithmParameterValue> algorithmParameterValues = CollectAlgorithmParameterValues(algorithmId, algorithmParameters, algorithm, "");
+        ItemCollection<ProblemParameter> problemParameters = GetProblemParameters(problemId);
+        List<ProblemParameterValue> problemParameterValues = CollectProblemParamterValues(problemId, problemParameters, problem, "");
+        ItemCollection<Result> results = GetResults(algorithmId);
+        List<ResultValue> resultValues = CollectResultValues(algorithmId, results, algorithm);
+
+        Experiment exp = new Experiment();
+        exp.AlgorithmId = algorithmId;
+        exp.ProblemId = problemId;
+        exp.AlgorithmParameterValues = algorithmParameterValues;
+        exp.ProblemParameterValues = problemParameterValues;
+        exp.Store();
+
+        Run r = new Run();
+        r.ExperimentId = exp.Id;
+        r.ClientId = Guid.NewGuid();
+        r.CreatedDate = DateTime.Now;
+        r.RandomSeed = ((IntValue)((IValueParameter)algorithm.Parameters["Seed"]).Value).Value;
+        r.ResultValues = resultValues;
+        r.Store();
+
+        return true;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Store run failed.", ex);
+        return false;
+      }
+    }
+
+    private List<AlgorithmParameterValue> CollectAlgorithmParameterValues(long algorithmId, ItemCollection<AlgorithmParameter> parameters, IParameterizedItem item, string prefix) {
+      List<AlgorithmParameterValue> values = new List<AlgorithmParameterValue>();
+      foreach (IValueParameter param in item.Parameters.OfType<IValueParameter>()) {
+        if (param.GetsCollected && (param.Value != null) && (param.Name != "Seed")) {
+          AlgorithmParameter p = parameters.FirstOrDefault(x => x.Name == prefix + param.Name);
+          if (p == null) {
+            p = new AlgorithmParameter();
+            p.Name = prefix + param.Name;
+            p.Alias = prefix + param.Name;
+            p.Description = param.Description;
+            p.AlgorithmId = algorithmId;
+            p.DataTypeId = ConvertToDataType(param.DataType).Id;
+            p.Store();
+            parameters.Add(p);
+          }
+          AlgorithmParameterValue value = CreateAlgorithmParameterValue(param.Value);
+          value.AlgorithmParameterId = p.Id;
+          value.DataTypeId = ConvertToDataType(param.Value.GetType()).Id;
+          values.Add(value);
+        }
+
+        if (param.Value is IParameterizedItem)
+          values.AddRange(CollectAlgorithmParameterValues(algorithmId, parameters, (IParameterizedItem)param.Value, (string.IsNullOrEmpty(prefix) ? param.Name : prefix + param.Name) + "."));
+      }
+      return values;
+    }
+    private AlgorithmParameterValue CreateAlgorithmParameterValue(IItem item) {
+      if (item is BoolValue) {
+        AlgorithmParameterBoolValue value = new AlgorithmParameterBoolValue();
+        value.Value = ((BoolValue)item).Value;
+        return value;
+      } else if (item is DoubleValue) {
+        AlgorithmParameterFloatValue value = new AlgorithmParameterFloatValue();
+        value.Value = ((DoubleValue)item).Value;
+        return value;
+      } else if (item is IntValue) {
+        AlgorithmParameterIntValue value = new AlgorithmParameterIntValue();
+        value.Value = ((IntValue)item).Value;
+        return value;
+      } else if (item is StringValue) {
+        AlgorithmParameterStringValue value = new AlgorithmParameterStringValue();
+        value.Value = ((StringValue)item).Value;
+        return value;
+      } else {
+        AlgorithmParameterBlobValue value = new AlgorithmParameterBlobValue();
+        try {
+          using (MemoryStream stream = new MemoryStream()) {
+            XmlGenerator.Serialize(item, stream);
+            stream.Close();
+            value.Value = stream.ToArray();
+          }
+        }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(ex);
+        }
+        return value;
+      }
+    }
+    private List<ProblemParameterValue> CollectProblemParamterValues(long problemId, ItemCollection<ProblemParameter> parameters, IParameterizedItem item, string prefix) {
+      List<ProblemParameterValue> values = new List<ProblemParameterValue>();
+      foreach (IValueParameter param in item.Parameters.OfType<IValueParameter>()) {
+        if (param.GetsCollected && (param.Value != null)) {
+          ProblemParameter p = parameters.FirstOrDefault(x => x.Name == prefix + param.Name);
+          if (p == null) {
+            p = new ProblemParameter();
+            p.Name = prefix + param.Name;
+            p.Alias = prefix + param.Name;
+            p.Description = param.Description;
+            p.ProblemId = problemId;
+            p.DataTypeId = ConvertToDataType(param.DataType).Id;
+            p.Store();
+            parameters.Add(p);
+          }
+          ProblemParameterValue value = CreateProblemParameterValue(param.Value);
+          value.ProblemParameterId = p.Id;
+          value.DataTypeId = ConvertToDataType(param.Value.GetType()).Id;
+          values.Add(value);
+        }
+
+        if (param.Value is IParameterizedItem)
+          values.AddRange(CollectProblemParamterValues(problemId, parameters, (IParameterizedItem)param.Value, (string.IsNullOrEmpty(prefix) ? param.Name : prefix + param.Name) + "."));
+      }
+      return values;
+    }
+    private ProblemParameterValue CreateProblemParameterValue(IItem item) {
+      if (item is BoolValue) {
+        ProblemParameterBoolValue value = new ProblemParameterBoolValue();
+        value.Value = ((BoolValue)item).Value;
+        return value;
+      } else if (item is DoubleValue) {
+        ProblemParameterFloatValue value = new ProblemParameterFloatValue();
+        value.Value = ((DoubleValue)item).Value;
+        return value;
+      } else if (item is IntValue) {
+        ProblemParameterIntValue value = new ProblemParameterIntValue();
+        value.Value = ((IntValue)item).Value;
+        return value;
+      } else if (item is StringValue) {
+        ProblemParameterStringValue value = new ProblemParameterStringValue();
+        value.Value = ((StringValue)item).Value;
+        return value;
+      } else {
+        ProblemParameterBlobValue value = new ProblemParameterBlobValue();
+        try {
+          using (MemoryStream stream = new MemoryStream()) {
+            XmlGenerator.Serialize(item, stream);
+            stream.Close();
+            value.Value = stream.ToArray();
+          }
+        }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(ex);
+        }
+        return value;
+      }
+    }
+    private List<ResultValue> CollectResultValues(long algorithmId, ItemCollection<Result> results, IAlgorithm algorithm) {
+      List<ResultValue> values = new List<ResultValue>();
+      foreach (IResult result in algorithm.Results) {
+        if (result.Value != null) {
+          Result r = results.FirstOrDefault(x => x.Name == result.Name);
+          if (r == null) {
+            r = new Result();
+            r.Name = result.Name;
+            r.Alias = result.Name;
+            r.Description = result.Description;
+            r.AlgorithmId = algorithmId;
+            r.DataTypeId = ConvertToDataType(result.DataType).Id;
+            r.Store();
+            results.Add(r);
+          }
+          ResultValue value = CreateResultValue(result.Value);
+          value.ResultId = r.Id;
+          value.DataTypeId = ConvertToDataType(result.Value.GetType()).Id;
+          values.Add(value);
+        }
+      }
+      return values;
+    }
+    private ResultValue CreateResultValue(IItem item) {
+      if (item is BoolValue) {
+        ResultBoolValue value = new ResultBoolValue();
+        value.Value = ((BoolValue)item).Value;
+        return value;
+      } else if (item is DoubleValue) {
+        ResultFloatValue value = new ResultFloatValue();
+        value.Value = ((DoubleValue)item).Value;
+        return value;
+      } else if (item is IntValue) {
+        ResultIntValue value = new ResultIntValue();
+        value.Value = ((IntValue)item).Value;
+        return value;
+      } else if (item is StringValue) {
+        ResultStringValue value = new ResultStringValue();
+        value.Value = ((StringValue)item).Value;
+        return value;
+      } else {
+        ResultBlobValue value = new ResultBlobValue();
+        try {
+          using (MemoryStream stream = new MemoryStream()) {
+            XmlGenerator.Serialize(item, stream);
+            stream.Close();
+            value.Value = stream.ToArray();
+          }
+        }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(ex);
+        }
+        return value;
+      }
+    }
+    #endregion
+
+    #region Query Methods
+    private IEnumerable<Filter> filters;
+    public IEnumerable<Filter> GetFilters(bool refresh) {
+      if (refresh || (filters == null)) {
+        try {
+          filters = CallQueryService<List<Filter>>(s => s.GetFilters());
+        }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog("Get filters failed.", ex);
+          return Enumerable.Empty<Filter>();
+        }
+      }
+      return filters;
+    }
+    public IEnumerable<Filter> GetFilters() {
+      return GetFilters(false);
+    }
+    public long GetNumberOfQueryResults(Filter filter) {
+      try {
+        return CallQueryService<long>(x => x.GetNumberOfQueryResults(filter));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Get number of query results failed.", ex);
+        return -1;
+      }
+    }
+    public IEnumerable<long> GetQueryResultIds(Filter filter) {
+      try {
+        return CallQueryService<IEnumerable<long>>(x => x.GetQueryResultIds(filter));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Get query result ids failed.", ex);
+        return Enumerable.Empty<long>();
+      }
+    }
+    public IEnumerable<QueryResult> GetQueryResults(IEnumerable<long> ids) {
+      try {
+        return CallQueryService<IEnumerable<QueryResult>>(s => s.GetQueryResults(ids.ToList()));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Get query results failed.", ex);
+        return null;
+      }
+    }
+    #endregion
+
+    #region Events
+    public event EventHandler Refreshing;
+    private void OnRefreshing() {
+      EventHandler handler = Refreshing;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler Refreshed;
+    private void OnRefreshed() {
+      EventHandler handler = Refreshed;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    private void platforms_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Platform> e) {
+      try {
+        foreach (Platform p in e.Items)
+          CallAdministrationService(s => s.DeletePlatform(p.Id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
+      }
+    }
+    private void dataTypes_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<DataType> e) {
+      try {
+        foreach (DataType d in e.Items)
+          CallAdministrationService(s => s.DeleteDataType(d.Id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
+      }
+    }
+    private void algorithmClasses_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<AlgorithmClass> e) {
+      try {
+        foreach (AlgorithmClass a in e.Items)
+          CallAdministrationService(s => s.DeleteAlgorithmClass(a.Id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
+      }
+    }
+    private void algorithms_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Algorithm> e) {
+      try {
+        foreach (Algorithm a in e.Items)
+          CallAdministrationService(s => s.DeleteAlgorithm(a.Id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
+      }
+    }
+    private void problemClasses_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<ProblemClass> e) {
+      try {
+        foreach (ProblemClass p in e.Items)
+          CallAdministrationService(s => s.DeleteProblemClass(p.Id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
+      }
+    }
+    private void problems_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Problem> e) {
+      try {
+        foreach (Problem p in e.Items)
+          CallAdministrationService(s => s.DeleteProblem(p.Id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
+      }
+    }
+    private void experiments_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Experiment> e) {
+      try {
+        foreach (Experiment exp in e.Items)
+          CallAdministrationService(s => s.DeleteExperiment(exp.Id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
+      }
+    }
+    private void runs_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<Run> e) {
+      try {
+        foreach (Run r in e.Items)
+          CallAdministrationService(s => s.DeleteRun(r.Id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Delete failed.", ex);
+      }
+    }
+    #endregion
+
+    #region Helpers
+    private void CallAdministrationService(Action<IAdministrationService> call) {
+      AdministrationServiceClient client = ClientFactory.CreateClient<AdministrationServiceClient, IAdministrationService>();
+      try {
+        call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    private T CallAdministrationService<T>(Func<IAdministrationService, T> call) {
+      AdministrationServiceClient client = ClientFactory.CreateClient<AdministrationServiceClient, IAdministrationService>();
+      try {
+        return call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    private void CallQueryService(Action<IQueryService> call) {
+      QueryServiceClient client = ClientFactory.CreateClient<QueryServiceClient, IQueryService>();
+      try {
+        call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    private T CallQueryService<T>(Func<IQueryService, T> call) {
+      QueryServiceClient client = ClientFactory.CreateClient<QueryServiceClient, IQueryService>();
+      try {
+        return call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    private T CallAuthenticationService<T>(Func<IAuthenticationService, T> call) {
+      AuthenticationServiceClient client = ClientFactory.CreateClient<AuthenticationServiceClient, IAuthenticationService>();
+      try {
+        return call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/QueryMenuItem.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/QueryMenuItem.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/QueryMenuItem.cs	(revision 5604)
@@ -0,0 +1,42 @@
+﻿#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.Collections.Generic;
+using HeuristicLab.Optimizer;
+
+namespace HeuristicLab.Clients.OKB {
+  internal class QueryMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "&Query"; }
+    }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "&Services", "&OKB" }; }
+    }
+    public override int Position {
+      get { return 4220; }
+    }
+
+    public override void Execute() {
+      QueryView view = new QueryView();
+      view.Show();
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/CombinedFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/CombinedFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/CombinedFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,133 @@
+#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.Clients.OKB {
+  partial class CombinedFilterView {
+    /// <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) {
+        if (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() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CombinedFilterView));
+      this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+      this.filtersComboBox = new System.Windows.Forms.ComboBox();
+      this.addButton = new System.Windows.Forms.Button();
+      this.label = new System.Windows.Forms.Label();
+      this.tableLayoutPanel.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // tableLayoutPanel
+      // 
+      this.tableLayoutPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.tableLayoutPanel.ColumnCount = 2;
+      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+      this.tableLayoutPanel.Controls.Add(this.filtersComboBox, 1, 0);
+      this.tableLayoutPanel.Controls.Add(this.addButton, 0, 0);
+      this.tableLayoutPanel.Location = new System.Drawing.Point(21, 0);
+      this.tableLayoutPanel.Name = "tableLayoutPanel";
+      this.tableLayoutPanel.RowCount = 1;
+      this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
+      this.tableLayoutPanel.Size = new System.Drawing.Size(706, 327);
+      this.tableLayoutPanel.TabIndex = 1;
+      // 
+      // filtersComboBox
+      // 
+      this.filtersComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.filtersComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.filtersComboBox.FormattingEnabled = true;
+      this.filtersComboBox.Location = new System.Drawing.Point(33, 4);
+      this.filtersComboBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 3);
+      this.filtersComboBox.Name = "filtersComboBox";
+      this.filtersComboBox.Size = new System.Drawing.Size(670, 21);
+      this.filtersComboBox.TabIndex = 1;
+      // 
+      // addButton
+      // 
+      this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.addButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Add;
+      this.addButton.Location = new System.Drawing.Point(3, 3);
+      this.addButton.Name = "addButton";
+      this.addButton.Size = new System.Drawing.Size(24, 24);
+      this.addButton.TabIndex = 0;
+      this.addButton.UseVisualStyleBackColor = true;
+      this.addButton.Click += new System.EventHandler(this.addButton_Click);
+      // 
+      // label
+      // 
+      this.label.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)));
+      this.label.BackColor = System.Drawing.Color.NavajoWhite;
+      this.label.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.label.Location = new System.Drawing.Point(3, 31);
+      this.label.Name = "label";
+      this.label.Size = new System.Drawing.Size(15, 296);
+      this.label.TabIndex = 0;
+      this.label.Text = "L\r\nA\r\nB\r\nE\r\nL\r\n";
+      this.label.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+      // 
+      // CombinedFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.AutoScroll = true;
+      this.Controls.Add(this.tableLayoutPanel);
+      this.Controls.Add(this.label);
+      this.Name = "CombinedFilterView";
+      this.Size = new System.Drawing.Size(727, 327);
+      this.tableLayoutPanel.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
+    protected System.Windows.Forms.Button addButton;
+    protected System.Windows.Forms.ComboBox filtersComboBox;
+    protected System.Windows.Forms.Label label;
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/CombinedFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/CombinedFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/CombinedFilterView.cs	(revision 5604)
@@ -0,0 +1,136 @@
+#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;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.OKB {
+  [View("CombinedFilter View")]
+  [Content(typeof(CombinedFilter), true)]
+  public partial class CombinedFilterView : AsynchronousContentView {
+    public new CombinedFilter Content {
+      get { return (CombinedFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public CombinedFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnInitialized(System.EventArgs e) {
+      base.OnInitialized(e);
+      IEnumerable<Filter> availableFilters = OKBClient.Instance.GetFilters();
+      filtersComboBox.DataSource = availableFilters;
+      filtersComboBox.DisplayMember = "Label";
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      RemoveFilters();
+      label.Text = string.Empty;
+      if (Content != null) {
+        string nl = Environment.NewLine;
+        label.Text = Content.Operation == BooleanOperation.And ? "A" + nl + "N" + nl + "D" : "O" + nl + "R";
+
+        foreach (Filter filter in Content.Filters)
+          AddFilter(filter);
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      addButton.Enabled = Content != null && !ReadOnly && filtersComboBox.SelectedIndex != -1;
+      filtersComboBox.Enabled = Content != null && !ReadOnly && filtersComboBox.Items.Count > 0;
+      tableLayoutPanel.Enabled = Content != null && !ReadOnly;
+    }
+
+    private void AddFilter(Filter filter) {
+      Content.Filters.Add(filter);
+      int rowIndex = Content.Filters.Count;
+
+      tableLayoutPanel.SuspendLayout();
+      tableLayoutPanel.RowCount++;
+      tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
+
+      Button removeButton = new Button();
+      removeButton.Size = new System.Drawing.Size(24, 24);
+      removeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+      removeButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Remove;
+      removeButton.Tag = filter;
+      removeButton.Click += new System.EventHandler(removeButton_Click);
+      tableLayoutPanel.Controls.Add(removeButton, 0, rowIndex);
+
+      ContentView filterView = (ContentView)MainFormManager.CreateDefaultView(filter.GetType());
+      filterView.Content = filter;
+      filterView.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+      tableLayoutPanel.Controls.Add(filterView, 1, rowIndex);
+
+      tableLayoutPanel.ResumeLayout();
+    }
+    private void RemoveFilter(Filter filter) {
+      int rowIndex = Content.Filters.IndexOf(filter) + 1;
+      Content.Filters.Remove(filter);
+
+      tableLayoutPanel.SuspendLayout();
+      Control removeButton = tableLayoutPanel.GetControlFromPosition(0, rowIndex);
+      Control filterView = tableLayoutPanel.GetControlFromPosition(1, rowIndex);
+      tableLayoutPanel.Controls.Remove(removeButton);
+      removeButton.Dispose();
+      tableLayoutPanel.Controls.Remove(filterView);
+      filterView.Dispose();
+
+      for (int i = rowIndex + 1; i < tableLayoutPanel.RowCount; i++) {
+        tableLayoutPanel.SetRow(tableLayoutPanel.GetControlFromPosition(0, i), i - 1);
+        tableLayoutPanel.SetRow(tableLayoutPanel.GetControlFromPosition(1, i), i - 1);
+      }
+
+      tableLayoutPanel.RowCount--;
+      tableLayoutPanel.RowStyles.RemoveAt(rowIndex);
+      tableLayoutPanel.ResumeLayout();
+    }
+    private void RemoveFilters() {
+      tableLayoutPanel.SuspendLayout();
+      for (int i = tableLayoutPanel.RowCount - 1; i > 0; i--) {
+        Control removeButton = tableLayoutPanel.GetControlFromPosition(0, i);
+        Control filterView = tableLayoutPanel.GetControlFromPosition(1, i);
+        tableLayoutPanel.Controls.Remove(removeButton);
+        removeButton.Dispose();
+        tableLayoutPanel.Controls.Remove(filterView);
+        filterView.Dispose();
+        tableLayoutPanel.RowCount--;
+        tableLayoutPanel.RowStyles.RemoveAt(i);
+      }
+      tableLayoutPanel.ResumeLayout();
+    }
+
+    private void addButton_Click(object sender, System.EventArgs e) {
+      Filter filter = filtersComboBox.SelectedItem as Filter;
+      if (filter != null) AddFilter(filter.Clone());
+    }
+    private void removeButton_Click(object sender, System.EventArgs e) {
+      Filter filter = ((Button)sender).Tag as Filter;
+      if (filter != null) RemoveFilter(filter);
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/EqualityComparisonFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/EqualityComparisonFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/EqualityComparisonFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,105 @@
+#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.Clients.OKB {
+  partial class EqualityComparisonFilterView {
+    /// <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) {
+        if (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.comparisonComboBox = new System.Windows.Forms.ComboBox();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.comparisonComboBox);
+      // 
+      // comparisonComboBox
+      // 
+      this.comparisonComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.comparisonComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.comparisonComboBox.FormattingEnabled = true;
+      this.comparisonComboBox.Items.AddRange(new object[] {
+            "=",
+            "<>"});
+      this.comparisonComboBox.Location = new System.Drawing.Point(3, 2);
+      this.comparisonComboBox.Name = "comparisonComboBox";
+      this.comparisonComboBox.Size = new System.Drawing.Size(100, 21);
+      this.comparisonComboBox.TabIndex = 0;
+      this.comparisonComboBox.SelectedIndexChanged += new System.EventHandler(this.comparisonComboBox_SelectedIndexChanged);
+      // 
+      // EqualityComparisonFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "EqualityComparisonFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.ComboBox comparisonComboBox;
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/EqualityComparisonFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/EqualityComparisonFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/EqualityComparisonFilterView.cs	(revision 5604)
@@ -0,0 +1,63 @@
+#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.Clients.OKB {
+  [View("EqualityComparisonFilter View")]
+  public partial class EqualityComparisonFilterView : FilterView {
+    public new EqualityComparisonFilter Content {
+      get { return (EqualityComparisonFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public EqualityComparisonFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      comparisonComboBox.SelectedIndex = -1;
+      if (Content != null) {
+        if (Content.Comparison == EqualityComparison.Equal)
+          comparisonComboBox.SelectedItem = "=";
+        else if (Content.Comparison == EqualityComparison.NotEqual)
+          comparisonComboBox.SelectedItem = "<>";
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      comparisonComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    private void comparisonComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
+      if (Content != null) {
+        if (comparisonComboBox.SelectedItem == "=")
+          Content.Comparison = EqualityComparison.Equal;
+        else if (comparisonComboBox.SelectedItem == "<>")
+          Content.Comparison = EqualityComparison.NotEqual;
+      }
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/FilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/FilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/FilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,121 @@
+#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.Clients.OKB {
+  partial class FilterView {
+    /// <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) {
+        if (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.label = new System.Windows.Forms.Label();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // label
+      // 
+      this.label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.label.Location = new System.Drawing.Point(3, 2);
+      this.label.Name = "label";
+      this.label.Size = new System.Drawing.Size(94, 20);
+      this.label.TabIndex = 0;
+      this.label.Text = "Label";
+      this.label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
+      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer1.Name = "splitContainer1";
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.label);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
+      this.splitContainer1.Size = new System.Drawing.Size(500, 24);
+      this.splitContainer1.SplitterDistance = 100;
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+      this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer2.Name = "splitContainer2";
+      this.splitContainer2.Size = new System.Drawing.Size(396, 24);
+      this.splitContainer2.SplitterDistance = 106;
+      this.splitContainer2.TabIndex = 0;
+      // 
+      // FilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.splitContainer1);
+      this.Name = "FilterView";
+      this.Size = new System.Drawing.Size(500, 24);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.Label label;
+    protected System.Windows.Forms.SplitContainer splitContainer1;
+    protected System.Windows.Forms.SplitContainer splitContainer2;
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/FilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/FilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/FilterView.cs	(revision 5604)
@@ -0,0 +1,49 @@
+#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.Clients.OKB {
+  [View("Filter View")]
+  [Content(typeof(Filter), true)]
+  public partial class FilterView : AsynchronousContentView {
+    public new Filter Content {
+      get { return (Filter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public FilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      label.Text = Content == null ? string.Empty : Content.Label;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      label.Enabled = Content != null;
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameEqualityComparisonBoolFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameEqualityComparisonBoolFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameEqualityComparisonBoolFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,107 @@
+#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.Clients.OKB {
+  partial class NameEqualityComparisonBoolFilterView {
+    /// <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) {
+        if (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.valueComboBox = new System.Windows.Forms.ComboBox();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueComboBox);
+      // 
+      // valueComboBox
+      // 
+      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.valueComboBox.FormattingEnabled = true;
+      this.valueComboBox.Items.AddRange(new object[] {
+            "true",
+            "false"});
+      this.valueComboBox.Location = new System.Drawing.Point(3, 2);
+      this.valueComboBox.Name = "valueComboBox";
+      this.valueComboBox.Size = new System.Drawing.Size(280, 21);
+      this.valueComboBox.TabIndex = 0;
+      this.valueComboBox.SelectedIndexChanged += new System.EventHandler(this.valueComboBox_SelectedIndexChanged);
+      // 
+      // NameEqualityComparisonBoolFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "NameEqualityComparisonBoolFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.ComboBox valueComboBox;
+
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameEqualityComparisonBoolFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameEqualityComparisonBoolFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameEqualityComparisonBoolFilterView.cs	(revision 5604)
@@ -0,0 +1,58 @@
+#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.Clients.OKB {
+  [View("NameEqualityComparisonBoolFilter View")]
+  [Content(typeof(NameEqualityComparisonBoolFilter), true)]
+  public partial class NameEqualityComparisonBoolFilterView : EqualityComparisonFilterView {
+    public new NameEqualityComparisonBoolFilter Content {
+      get { return (NameEqualityComparisonBoolFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public NameEqualityComparisonBoolFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      valueComboBox.SelectedIndex = -1;
+      if (Content != null) {
+        valueComboBox.SelectedItem = Content.Value ? "true" : "false";
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    private void valueComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
+      if (Content != null) {
+        Content.Value = valueComboBox.SelectedItem == "true" ? true : false;
+      }
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonDoubleFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonDoubleFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonDoubleFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,116 @@
+#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.Clients.OKB {
+  partial class NameOrdinalComparisonDoubleFilterView {
+    /// <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) {
+        if (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.components = new System.ComponentModel.Container();
+      this.valueTextBox = new System.Windows.Forms.TextBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
+      // 
+      // valueTextBox
+      // 
+      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
+      this.valueTextBox.Name = "valueTextBox";
+      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
+      this.valueTextBox.TabIndex = 0;
+      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
+      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
+      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // NameOrdinalComparisonDoubleFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "NameOrdinalComparisonDoubleFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox valueTextBox;
+    private System.Windows.Forms.ErrorProvider errorProvider;
+
+
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonDoubleFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonDoubleFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonDoubleFilterView.cs	(revision 5604)
@@ -0,0 +1,75 @@
+#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.Clients.OKB {
+  [View("NameOrdinalComparisonDoubleFilter View")]
+  [Content(typeof(NameOrdinalComparisonDoubleFilter), true)]
+  public partial class NameOrdinalComparisonDoubleFilterView : OrdinalComparisonFilterView {
+    public new NameOrdinalComparisonDoubleFilter Content {
+      get { return (NameOrdinalComparisonDoubleFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public NameOrdinalComparisonDoubleFilterView() {
+      InitializeComponent();
+      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
+      errorProvider.SetIconPadding(valueTextBox, 2);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      valueTextBox.Text = Content == null ? string.Empty : Content.Value.ToString();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueTextBox.Enabled = Content != null;
+      valueTextBox.ReadOnly = ReadOnly;
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        label.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueTextBox.Text = Content.Value.ToString();
+        label.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
+      double val;
+      if (!double.TryParse(valueTextBox.Text, out val)) {
+        e.Cancel = true;
+        errorProvider.SetError(valueTextBox, "Invalid Double Value");
+        valueTextBox.SelectAll();
+      }
+    }
+    private void valueTextBox_Validated(object sender, System.EventArgs e) {
+      if (Content != null) {
+        Content.Value = double.Parse(valueTextBox.Text);
+        errorProvider.SetError(valueTextBox, string.Empty);
+      }
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonLongFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonLongFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonLongFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,116 @@
+#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.Clients.OKB {
+  partial class NameOrdinalComparisonLongFilterView {
+    /// <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) {
+        if (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.components = new System.ComponentModel.Container();
+      this.valueTextBox = new System.Windows.Forms.TextBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
+      // 
+      // valueTextBox
+      // 
+      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
+      this.valueTextBox.Name = "valueTextBox";
+      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
+      this.valueTextBox.TabIndex = 0;
+      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
+      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
+      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // NameOrdinalComparisonLongFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "NameOrdinalComparisonLongFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox valueTextBox;
+    private System.Windows.Forms.ErrorProvider errorProvider;
+
+
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonLongFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonLongFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameOrdinalComparisonLongFilterView.cs	(revision 5604)
@@ -0,0 +1,75 @@
+#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.Clients.OKB {
+  [View("NameOrdinalComparisonLongFilter View")]
+  [Content(typeof(NameOrdinalComparisonLongFilter), true)]
+  public partial class NameOrdinalComparisonLongFilterView : OrdinalComparisonFilterView {
+    public new NameOrdinalComparisonLongFilter Content {
+      get { return (NameOrdinalComparisonLongFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public NameOrdinalComparisonLongFilterView() {
+      InitializeComponent();
+      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
+      errorProvider.SetIconPadding(valueTextBox, 2);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      valueTextBox.Text = Content == null ? string.Empty : Content.Value.ToString();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueTextBox.Enabled = Content != null;
+      valueTextBox.ReadOnly = ReadOnly;
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        label.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueTextBox.Text = Content.Value.ToString();
+        label.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
+      long val;
+      if (!long.TryParse(valueTextBox.Text, out val)) {
+        e.Cancel = true;
+        errorProvider.SetError(valueTextBox, "Invalid Long Value");
+        valueTextBox.SelectAll();
+      }
+    }
+    private void valueTextBox_Validated(object sender, System.EventArgs e) {
+      if (Content != null) {
+        Content.Value = long.Parse(valueTextBox.Text);
+        errorProvider.SetError(valueTextBox, string.Empty);
+      }
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringAvailableValuesFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringAvailableValuesFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringAvailableValuesFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,106 @@
+#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.Clients.OKB {
+  partial class NameSetComparisonStringAvailableValuesFilterView {
+    /// <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) {
+        if (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.valueComboBox = new System.Windows.Forms.ComboBox();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueComboBox);
+      // 
+      // valueComboBox
+      // 
+      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueComboBox.FormattingEnabled = true;
+      this.valueComboBox.Location = new System.Drawing.Point(3, 2);
+      this.valueComboBox.MaxDropDownItems = 32;
+      this.valueComboBox.Name = "valueComboBox";
+      this.valueComboBox.Size = new System.Drawing.Size(280, 21);
+      this.valueComboBox.TabIndex = 0;
+      this.valueComboBox.Validated += new System.EventHandler(this.valueComboBox_Validated);
+      // 
+      // NameSetComparisonStringAvailableValuesFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "NameSetComparisonStringAvailableValuesFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.ComboBox valueComboBox;
+
+
+
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringAvailableValuesFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringAvailableValuesFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringAvailableValuesFilterView.cs	(revision 5604)
@@ -0,0 +1,65 @@
+#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.Clients.OKB {
+  [View("NameSetComparisonStringAvailableValuesFilter View")]
+  [Content(typeof(NameSetComparisonStringAvailableValuesFilter), true)]
+  public partial class NameSetComparisonStringAvailableValuesFilterView : SetComparisonFilterView {
+    public new NameSetComparisonStringAvailableValuesFilter Content {
+      get { return (NameSetComparisonStringAvailableValuesFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public NameSetComparisonStringAvailableValuesFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      valueComboBox.DataSource = Content == null ? null : Content.AvailableValues;
+      valueComboBox.Text = Content == null ? string.Empty : Content.Value;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        label.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueComboBox.Text = Content.Value;
+        label.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueComboBox_Validated(object sender, System.EventArgs e) {
+      if (Content != null) {
+        Content.Value = valueComboBox.Text;
+      }
+
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,105 @@
+#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.Clients.OKB {
+  partial class NameSetComparisonStringFilterView {
+    /// <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) {
+        if (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.valueTextBox = new System.Windows.Forms.TextBox();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
+      // 
+      // valueTextBox
+      // 
+      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
+      this.valueTextBox.Name = "valueTextBox";
+      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
+      this.valueTextBox.TabIndex = 0;
+      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
+      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
+      // 
+      // NameSetComparisonStringFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "NameSetComparisonStringFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox valueTextBox;
+
+
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/NameSetComparisonStringFilterView.cs	(revision 5604)
@@ -0,0 +1,64 @@
+#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.Clients.OKB {
+  [View("NameSetComparisonStringFilter View")]
+  [Content(typeof(NameSetComparisonStringFilter), true)]
+  public partial class NameSetComparisonStringFilterView : SetComparisonFilterView {
+    public new NameSetComparisonStringFilter Content {
+      get { return (NameSetComparisonStringFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public NameSetComparisonStringFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      valueTextBox.Text = Content == null ? string.Empty : Content.Value;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueTextBox.Enabled = Content != null;
+      valueTextBox.ReadOnly = ReadOnly;
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        label.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueTextBox.Text = Content.Value;
+        label.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueTextBox_Validated(object sender, System.EventArgs e) {
+      if (Content != null) {
+        Content.Value = valueTextBox.Text;
+      }
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,109 @@
+#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.Clients.OKB {
+  partial class OrdinalComparisonFilterView {
+    /// <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) {
+        if (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.comparisonComboBox = new System.Windows.Forms.ComboBox();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.comparisonComboBox);
+      // 
+      // comparisonComboBox
+      // 
+      this.comparisonComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.comparisonComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.comparisonComboBox.FormattingEnabled = true;
+      this.comparisonComboBox.Items.AddRange(new object[] {
+            "<",
+            "<=",
+            "=",
+            ">=",
+            ">",
+            "<>"});
+      this.comparisonComboBox.Location = new System.Drawing.Point(3, 2);
+      this.comparisonComboBox.Name = "comparisonComboBox";
+      this.comparisonComboBox.Size = new System.Drawing.Size(100, 21);
+      this.comparisonComboBox.TabIndex = 0;
+      this.comparisonComboBox.SelectedIndexChanged += new System.EventHandler(this.comparisonComboBox_SelectedIndexChanged);
+      // 
+      // OrdinalComparisonFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "OrdinalComparisonFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.ComboBox comparisonComboBox;
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonFilterView.cs	(revision 5604)
@@ -0,0 +1,80 @@
+#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.Clients.OKB {
+  [View("OrdinalComparisonFilter View")]
+  [Content(typeof(OrdinalComparisonFilter), true)]
+  public partial class OrdinalComparisonFilterView : FilterView {
+    public new OrdinalComparisonFilter Content {
+      get { return (OrdinalComparisonFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public OrdinalComparisonFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      comparisonComboBox.SelectedIndex = -1;
+      if (Content != null) {
+        if (Content.Comparison == OrdinalComparison.Less)
+          comparisonComboBox.SelectedItem = "<";
+        else if (Content.Comparison == OrdinalComparison.LessOrEqual)
+          comparisonComboBox.SelectedItem = "<=";
+        else if (Content.Comparison == OrdinalComparison.Equal)
+          comparisonComboBox.SelectedItem = "=";
+        else if (Content.Comparison == OrdinalComparison.GreaterOrEqual)
+          comparisonComboBox.SelectedItem = ">=";
+        else if (Content.Comparison == OrdinalComparison.Greater)
+          comparisonComboBox.SelectedItem = ">";
+        else if (Content.Comparison == OrdinalComparison.NotEqual)
+          comparisonComboBox.SelectedItem = "<>";
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      comparisonComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    private void comparisonComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
+      if (Content != null) {
+        if (comparisonComboBox.SelectedItem == "<")
+          Content.Comparison = OrdinalComparison.Less;
+        else if (comparisonComboBox.SelectedItem == "<=")
+          Content.Comparison = OrdinalComparison.LessOrEqual;
+        else if (comparisonComboBox.SelectedItem == "=")
+          Content.Comparison = OrdinalComparison.Equal;
+        else if (comparisonComboBox.SelectedItem == ">=")
+          Content.Comparison = OrdinalComparison.GreaterOrEqual;
+        else if (comparisonComboBox.SelectedItem == ">")
+          Content.Comparison = OrdinalComparison.Greater;
+        else if (comparisonComboBox.SelectedItem == "<>")
+          Content.Comparison = OrdinalComparison.NotEqual;
+      }
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonLongFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonLongFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonLongFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,116 @@
+#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.Clients.OKB {
+  partial class OrdinalComparisonLongFilterView {
+    /// <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) {
+        if (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.components = new System.ComponentModel.Container();
+      this.valueTextBox = new System.Windows.Forms.TextBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
+      // 
+      // valueTextBox
+      // 
+      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
+      this.valueTextBox.Name = "valueTextBox";
+      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
+      this.valueTextBox.TabIndex = 0;
+      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
+      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
+      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // OrdinalComparisonLongFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "OrdinalComparisonLongFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox valueTextBox;
+    private System.Windows.Forms.ErrorProvider errorProvider;
+
+
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonLongFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonLongFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonLongFilterView.cs	(revision 5604)
@@ -0,0 +1,75 @@
+#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.Clients.OKB {
+  [View("OrdinalComparisonLongFilter View")]
+  [Content(typeof(OrdinalComparisonLongFilter), true)]
+  public partial class OrdinalComparisonLongFilterView : OrdinalComparisonFilterView {
+    public new OrdinalComparisonLongFilter Content {
+      get { return (OrdinalComparisonLongFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public OrdinalComparisonLongFilterView() {
+      InitializeComponent();
+      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
+      errorProvider.SetIconPadding(valueTextBox, 2);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      valueTextBox.Text = Content == null ? string.Empty : Content.Value.ToString();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueTextBox.Enabled = Content != null;
+      valueTextBox.ReadOnly = ReadOnly;
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        label.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueTextBox.Text = Content.Value.ToString();
+        label.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
+      long val;
+      if (!long.TryParse(valueTextBox.Text, out val)) {
+        e.Cancel = true;
+        errorProvider.SetError(valueTextBox, "Invalid Long Value");
+        valueTextBox.SelectAll();
+      }
+    }
+    private void valueTextBox_Validated(object sender, System.EventArgs e) {
+      if (Content != null) {
+        Content.Value = long.Parse(valueTextBox.Text);
+        errorProvider.SetError(valueTextBox, string.Empty);
+      }
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.Designer.cs	(revision 5604)
@@ -0,0 +1,275 @@
+#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.Clients.OKB {
+  partial class QueryView {
+    /// <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) {
+        if (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.components = new System.ComponentModel.Container();
+      this.refreshResultsButton = new System.Windows.Forms.Button();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.runCollectionView = new HeuristicLab.Optimization.Views.RunCollectionView();
+      this.splitContainer = new System.Windows.Forms.SplitContainer();
+      this.filtersGroupBox = new System.Windows.Forms.GroupBox();
+      this.filterPanel = new System.Windows.Forms.Panel();
+      this.resultsGroupBox = new System.Windows.Forms.GroupBox();
+      this.deserializeBlobsCheckBox = new System.Windows.Forms.CheckBox();
+      this.resultsInfoPanel = new System.Windows.Forms.Panel();
+      this.abortButton = new System.Windows.Forms.Button();
+      this.resultsProgressBar = new System.Windows.Forms.ProgressBar();
+      this.resultsInfoLabel = new System.Windows.Forms.Label();
+      this.filtersInfoPanel = new System.Windows.Forms.Panel();
+      this.filtersInfoLabel = new System.Windows.Forms.Label();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
+      this.splitContainer.Panel1.SuspendLayout();
+      this.splitContainer.Panel2.SuspendLayout();
+      this.splitContainer.SuspendLayout();
+      this.filtersGroupBox.SuspendLayout();
+      this.resultsGroupBox.SuspendLayout();
+      this.resultsInfoPanel.SuspendLayout();
+      this.filtersInfoPanel.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // refreshResultsButton
+      // 
+      this.refreshResultsButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
+      this.refreshResultsButton.Location = new System.Drawing.Point(6, 19);
+      this.refreshResultsButton.Name = "refreshResultsButton";
+      this.refreshResultsButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshResultsButton.TabIndex = 0;
+      this.toolTip.SetToolTip(this.refreshResultsButton, "Refresh Results");
+      this.refreshResultsButton.UseVisualStyleBackColor = true;
+      this.refreshResultsButton.Click += new System.EventHandler(this.refreshResultsButton_Click);
+      // 
+      // runCollectionView
+      // 
+      this.runCollectionView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.runCollectionView.Caption = "RunCollection View";
+      this.runCollectionView.Content = null;
+      this.runCollectionView.Location = new System.Drawing.Point(6, 49);
+      this.runCollectionView.Name = "runCollectionView";
+      this.runCollectionView.ReadOnly = false;
+      this.runCollectionView.Size = new System.Drawing.Size(826, 223);
+      this.runCollectionView.TabIndex = 2;
+      // 
+      // splitContainer
+      // 
+      this.splitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.splitContainer.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer.Name = "splitContainer";
+      this.splitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer.Panel1
+      // 
+      this.splitContainer.Panel1.Controls.Add(this.filtersGroupBox);
+      // 
+      // splitContainer.Panel2
+      // 
+      this.splitContainer.Panel2.Controls.Add(this.resultsGroupBox);
+      this.splitContainer.Size = new System.Drawing.Size(838, 567);
+      this.splitContainer.SplitterDistance = 282;
+      this.splitContainer.TabIndex = 0;
+      // 
+      // filtersGroupBox
+      // 
+      this.filtersGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.filtersGroupBox.Controls.Add(this.filterPanel);
+      this.filtersGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.filtersGroupBox.Name = "filtersGroupBox";
+      this.filtersGroupBox.Size = new System.Drawing.Size(838, 279);
+      this.filtersGroupBox.TabIndex = 0;
+      this.filtersGroupBox.TabStop = false;
+      this.filtersGroupBox.Text = "Filters";
+      // 
+      // filterPanel
+      // 
+      this.filterPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.filterPanel.Location = new System.Drawing.Point(6, 19);
+      this.filterPanel.Name = "filterPanel";
+      this.filterPanel.Size = new System.Drawing.Size(826, 254);
+      this.filterPanel.TabIndex = 0;
+      // 
+      // resultsGroupBox
+      // 
+      this.resultsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.resultsGroupBox.Controls.Add(this.deserializeBlobsCheckBox);
+      this.resultsGroupBox.Controls.Add(this.refreshResultsButton);
+      this.resultsGroupBox.Controls.Add(this.runCollectionView);
+      this.resultsGroupBox.Location = new System.Drawing.Point(0, 3);
+      this.resultsGroupBox.Name = "resultsGroupBox";
+      this.resultsGroupBox.Size = new System.Drawing.Size(838, 278);
+      this.resultsGroupBox.TabIndex = 0;
+      this.resultsGroupBox.TabStop = false;
+      this.resultsGroupBox.Text = "Results";
+      // 
+      // deserializeBlobsCheckBox
+      // 
+      this.deserializeBlobsCheckBox.AutoSize = true;
+      this.deserializeBlobsCheckBox.Checked = true;
+      this.deserializeBlobsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
+      this.deserializeBlobsCheckBox.Location = new System.Drawing.Point(62, 24);
+      this.deserializeBlobsCheckBox.Name = "deserializeBlobsCheckBox";
+      this.deserializeBlobsCheckBox.Size = new System.Drawing.Size(106, 17);
+      this.deserializeBlobsCheckBox.TabIndex = 1;
+      this.deserializeBlobsCheckBox.Text = "&Deserialize Blobs";
+      this.deserializeBlobsCheckBox.UseVisualStyleBackColor = true;
+      // 
+      // resultsInfoPanel
+      // 
+      this.resultsInfoPanel.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
+      this.resultsInfoPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+      this.resultsInfoPanel.Controls.Add(this.abortButton);
+      this.resultsInfoPanel.Controls.Add(this.resultsProgressBar);
+      this.resultsInfoPanel.Controls.Add(this.resultsInfoLabel);
+      this.resultsInfoPanel.Location = new System.Drawing.Point(238, 339);
+      this.resultsInfoPanel.Name = "resultsInfoPanel";
+      this.resultsInfoPanel.Size = new System.Drawing.Size(362, 87);
+      this.resultsInfoPanel.TabIndex = 1;
+      this.resultsInfoPanel.Visible = false;
+      // 
+      // abortButton
+      // 
+      this.abortButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.abortButton.Location = new System.Drawing.Point(3, 58);
+      this.abortButton.Name = "abortButton";
+      this.abortButton.Size = new System.Drawing.Size(354, 23);
+      this.abortButton.TabIndex = 2;
+      this.abortButton.Text = "&Abort";
+      this.abortButton.UseVisualStyleBackColor = true;
+      this.abortButton.Click += new System.EventHandler(this.abortButton_Click);
+      // 
+      // resultsProgressBar
+      // 
+      this.resultsProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.resultsProgressBar.Enabled = false;
+      this.resultsProgressBar.Location = new System.Drawing.Point(3, 29);
+      this.resultsProgressBar.Name = "resultsProgressBar";
+      this.resultsProgressBar.Size = new System.Drawing.Size(354, 23);
+      this.resultsProgressBar.Step = 1;
+      this.resultsProgressBar.TabIndex = 1;
+      // 
+      // resultsInfoLabel
+      // 
+      this.resultsInfoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.resultsInfoLabel.Enabled = false;
+      this.resultsInfoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.resultsInfoLabel.Location = new System.Drawing.Point(3, 3);
+      this.resultsInfoLabel.Name = "resultsInfoLabel";
+      this.resultsInfoLabel.Size = new System.Drawing.Size(354, 23);
+      this.resultsInfoLabel.TabIndex = 0;
+      this.resultsInfoLabel.Text = "Loading ...";
+      this.resultsInfoLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+      // 
+      // filtersInfoPanel
+      // 
+      this.filtersInfoPanel.Anchor = System.Windows.Forms.AnchorStyles.Top;
+      this.filtersInfoPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+      this.filtersInfoPanel.Controls.Add(this.filtersInfoLabel);
+      this.filtersInfoPanel.Enabled = false;
+      this.filtersInfoPanel.Location = new System.Drawing.Point(238, 136);
+      this.filtersInfoPanel.Name = "filtersInfoPanel";
+      this.filtersInfoPanel.Size = new System.Drawing.Size(362, 33);
+      this.filtersInfoPanel.TabIndex = 0;
+      this.filtersInfoPanel.Visible = false;
+      // 
+      // filtersInfoLabel
+      // 
+      this.filtersInfoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.filtersInfoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.filtersInfoLabel.Location = new System.Drawing.Point(3, 4);
+      this.filtersInfoLabel.Name = "filtersInfoLabel";
+      this.filtersInfoLabel.Size = new System.Drawing.Size(354, 23);
+      this.filtersInfoLabel.TabIndex = 0;
+      this.filtersInfoLabel.Text = "Loading Filters ...";
+      this.filtersInfoLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+      // 
+      // QueryView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.filtersInfoPanel);
+      this.Controls.Add(this.resultsInfoPanel);
+      this.Controls.Add(this.splitContainer);
+      this.Name = "QueryView";
+      this.Size = new System.Drawing.Size(838, 567);
+      this.splitContainer.Panel1.ResumeLayout(false);
+      this.splitContainer.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
+      this.splitContainer.ResumeLayout(false);
+      this.filtersGroupBox.ResumeLayout(false);
+      this.resultsGroupBox.ResumeLayout(false);
+      this.resultsGroupBox.PerformLayout();
+      this.resultsInfoPanel.ResumeLayout(false);
+      this.filtersInfoPanel.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button refreshResultsButton;
+    private System.Windows.Forms.ToolTip toolTip;
+    private HeuristicLab.Optimization.Views.RunCollectionView runCollectionView;
+    private System.Windows.Forms.SplitContainer splitContainer;
+    private System.Windows.Forms.GroupBox filtersGroupBox;
+    private System.Windows.Forms.GroupBox resultsGroupBox;
+    private System.Windows.Forms.Panel filterPanel;
+    private System.Windows.Forms.CheckBox deserializeBlobsCheckBox;
+    private System.Windows.Forms.Panel resultsInfoPanel;
+    private System.Windows.Forms.ProgressBar resultsProgressBar;
+    private System.Windows.Forms.Label resultsInfoLabel;
+    private System.Windows.Forms.Button abortButton;
+    private System.Windows.Forms.Panel filtersInfoPanel;
+    private System.Windows.Forms.Label filtersInfoLabel;
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs	(revision 5604)
@@ -0,0 +1,184 @@
+#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;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.Xml;
+
+namespace HeuristicLab.Clients.OKB {
+  [View("OKB Query")]
+  [Content(typeof(OKBClient), false)]
+  public sealed partial class QueryView : HeuristicLab.MainForm.WindowsForms.View {
+    private CancellationTokenSource cancellationTokenSource;
+    private CombinedFilterView combinedFilterView;
+
+    public QueryView() {
+      InitializeComponent();
+    }
+
+    protected override void OnInitialized(EventArgs e) {
+      base.OnInitialized(e);
+      LoadFiltersAsync();
+    }
+
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      resultsGroupBox.Enabled = combinedFilterView != null;
+    }
+
+    #region Load Filters
+    private void LoadFiltersAsync() {
+      Cursor = Cursors.AppStarting;
+      filtersInfoPanel.Visible = true;
+      splitContainer.Enabled = false;
+
+      Task<CombinedFilter> task = Task.Factory.StartNew<CombinedFilter>(() => {
+        return OKBClient.Instance.GetFilters().OfType<CombinedFilter>().Where(x => x.Operation == BooleanOperation.And).FirstOrDefault();
+      });
+      task.ContinueWith(t => {
+        CombinedFilter filter = t.Result;
+        Invoke(new Action(() => {
+          if (filter != null) {
+            combinedFilterView = (CombinedFilterView)MainFormManager.CreateView(typeof(CombinedFilterView));
+            combinedFilterView.Content = (CombinedFilter)filter.Clone();
+            Control control = (Control)combinedFilterView;
+            control.Dock = DockStyle.Fill;
+            filterPanel.Controls.Add(control);
+          }
+          filtersInfoPanel.Visible = false;
+          splitContainer.Enabled = true;
+          this.Cursor = Cursors.Default;
+          SetEnabledStateOfControls();
+        }));
+      });
+    }
+    #endregion
+
+    #region Load Results
+    private void LoadResultsAsync(int batchSize) {
+      bool deserialize = deserializeBlobsCheckBox.Checked;
+
+      Cursor = Cursors.AppStarting;
+      resultsInfoLabel.Text = "Loading Results ...";
+      resultsProgressBar.Value = 0;
+      resultsProgressBar.Step = batchSize;
+      abortButton.Enabled = true;
+      resultsInfoPanel.Visible = true;
+      splitContainer.Enabled = false;
+      cancellationTokenSource = new CancellationTokenSource();
+      CancellationToken cancellationToken = cancellationTokenSource.Token;
+
+      Task task = Task.Factory.StartNew(() => {
+        var ids = OKBClient.Instance.GetQueryResultIds(combinedFilterView.Content);
+        int idsCount = ids.Count();
+
+        Invoke(new Action(() => {
+          resultsInfoLabel.Text = "Loaded 0 of " + idsCount.ToString() + " Results ...";
+          resultsProgressBar.Maximum = idsCount;
+        }));
+
+        RunCollection runs = new RunCollection();
+        runs.CollectionReset += new Collections.CollectionItemsChangedEventHandler<IRun>(runs_CollectionReset);
+        runCollectionView.Content = runs;
+        while (ids.Count() > 0) {
+          cancellationToken.ThrowIfCancellationRequested();
+          runs.AddRange(OKBClient.Instance.GetQueryResults(ids.Take(batchSize)).Select(x => ConvertToOptimizationRun(x, deserialize)));
+          ids = ids.Skip(batchSize);
+          Invoke(new Action(() => {
+            resultsInfoLabel.Text = "Loaded " + runs.Count + " of " + idsCount.ToString() + " Results ...";
+            resultsProgressBar.PerformStep();
+          }));
+        }
+      }, cancellationToken);
+      task.ContinueWith(t => {
+        Invoke(new Action(() => {
+          cancellationTokenSource.Dispose();
+          cancellationTokenSource = null;
+          resultsInfoPanel.Visible = false;
+          splitContainer.Enabled = true;
+          this.Cursor = Cursors.Default;
+          SetEnabledStateOfControls();
+        }));
+      });
+    }
+
+    void runs_CollectionReset(object sender, Collections.CollectionItemsChangedEventArgs<IRun> e) {
+    }
+    #endregion
+
+    private void refreshResultsButton_Click(object sender, EventArgs e) {
+      LoadResultsAsync(10);
+    }
+
+    private void abortButton_Click(object sender, EventArgs e) {
+      if (cancellationTokenSource != null) cancellationTokenSource.Cancel();
+      abortButton.Enabled = false;
+    }
+
+    private Optimization.IRun ConvertToOptimizationRun(QueryResult queryResult, bool deserialize) {
+      Optimization.Run run = new Optimization.Run();
+      foreach (QueryValue value in queryResult.AlgorithmParameters)
+        run.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
+      foreach (QueryValue value in queryResult.ProblemParameters)
+        run.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
+      foreach (QueryValue value in queryResult.Results)
+        run.Results.Add(value.Name, ConvertToItem(value, deserialize));
+      return run;
+    }
+
+    private IItem ConvertToItem(QueryValue value, bool deserialize) {
+      if (value is QueryBlobValue) {
+        if (deserialize) {
+          IItem item = null;
+          using (MemoryStream stream = new MemoryStream(((QueryBlobValue)value).Value)) {
+            try {
+              item = XmlParser.Deserialize<IItem>(stream);
+            }
+            catch (Exception) { }
+            stream.Close();
+          }
+          return item != null ? item : new StringValue(((QueryBlobValue)value).DataTypeName);
+        } else {
+          return new StringValue(((QueryBlobValue)value).DataTypeName);
+        }
+      } else if (value is QueryBoolValue) {
+        return new BoolValue(((QueryBoolValue)value).Value);
+      } else if (value is QueryFloatValue) {
+        return new DoubleValue(((QueryFloatValue)value).Value);
+      } else if (value is QueryIntValue) {
+        return new IntValue((int)((QueryIntValue)value).Value);
+      } else if (value is QueryStringValue) {
+        return new StringValue(((QueryStringValue)value).Value);
+      }
+      return null;
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,107 @@
+#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.Clients.OKB {
+  partial class SetComparisonFilterView {
+    /// <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) {
+        if (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.comparisonComboBox = new System.Windows.Forms.ComboBox();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.comparisonComboBox);
+      // 
+      // comparisonComboBox
+      // 
+      this.comparisonComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.comparisonComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.comparisonComboBox.FormattingEnabled = true;
+      this.comparisonComboBox.Items.AddRange(new object[] {
+            "=",
+            "<>",
+            "contains",
+            "not contains"});
+      this.comparisonComboBox.Location = new System.Drawing.Point(3, 2);
+      this.comparisonComboBox.Name = "comparisonComboBox";
+      this.comparisonComboBox.Size = new System.Drawing.Size(100, 21);
+      this.comparisonComboBox.TabIndex = 0;
+      this.comparisonComboBox.SelectedIndexChanged += new System.EventHandler(this.comparisonComboBox_SelectedIndexChanged);
+      // 
+      // SetComparisonFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "SetComparisonFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.ComboBox comparisonComboBox;
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonFilterView.cs	(revision 5604)
@@ -0,0 +1,72 @@
+#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.Clients.OKB {
+  [View("SetComparisonFilter View")]
+  [Content(typeof(SetComparisonFilter), true)]
+  public partial class SetComparisonFilterView : FilterView {
+    public new SetComparisonFilter Content {
+      get { return (SetComparisonFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public SetComparisonFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      comparisonComboBox.SelectedIndex = -1;
+      if (Content != null) {
+        if (Content.Comparison == SetComparison.Equal)
+          comparisonComboBox.SelectedItem = "=";
+        else if (Content.Comparison == SetComparison.NotEqual)
+          comparisonComboBox.SelectedItem = "<>";
+        else if (Content.Comparison == SetComparison.Contains)
+          comparisonComboBox.SelectedItem = "contains";
+        else if (Content.Comparison == SetComparison.NotContains)
+          comparisonComboBox.SelectedItem = "not contains";
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      comparisonComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    private void comparisonComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
+      if (Content != null) {
+        if (comparisonComboBox.SelectedItem == "=")
+          Content.Comparison = SetComparison.Equal;
+        else if (comparisonComboBox.SelectedItem == "<>")
+          Content.Comparison = SetComparison.NotEqual;
+        else if (comparisonComboBox.SelectedItem == "contains")
+          Content.Comparison = SetComparison.Contains;
+        else if (comparisonComboBox.SelectedItem == "not contains")
+          Content.Comparison = SetComparison.NotContains;
+      }
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringAvailableValuesFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringAvailableValuesFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringAvailableValuesFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,106 @@
+#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.Clients.OKB {
+  partial class SetComparisonStringAvailableValuesFilterView {
+    /// <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) {
+        if (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.valueComboBox = new System.Windows.Forms.ComboBox();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueComboBox);
+      // 
+      // valueComboBox
+      // 
+      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueComboBox.FormattingEnabled = true;
+      this.valueComboBox.Location = new System.Drawing.Point(3, 2);
+      this.valueComboBox.MaxDropDownItems = 32;
+      this.valueComboBox.Name = "valueComboBox";
+      this.valueComboBox.Size = new System.Drawing.Size(280, 21);
+      this.valueComboBox.TabIndex = 0;
+      this.valueComboBox.Validated += new System.EventHandler(this.valueComboBox_Validated);
+      // 
+      // SetComparisonStringAvailableValuesFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "SetComparisonStringAvailableValuesFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.ComboBox valueComboBox;
+
+
+
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringAvailableValuesFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringAvailableValuesFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringAvailableValuesFilterView.cs	(revision 5604)
@@ -0,0 +1,65 @@
+#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.Clients.OKB {
+  [View("SetComparisonStringAvailableValuesFilter View")]
+  [Content(typeof(SetComparisonStringAvailableValuesFilter), true)]
+  public partial class SetComparisonStringAvailableValuesFilterView : SetComparisonFilterView {
+    public new SetComparisonStringAvailableValuesFilter Content {
+      get { return (SetComparisonStringAvailableValuesFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public SetComparisonStringAvailableValuesFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      valueComboBox.DataSource = Content == null ? null : Content.AvailableValues;
+      valueComboBox.Text = Content == null ? string.Empty : Content.Value;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueComboBox.Enabled = Content != null && !ReadOnly;
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        label.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueComboBox.Text = Content.Value;
+        label.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueComboBox_Validated(object sender, System.EventArgs e) {
+      if (Content != null) {
+        Content.Value = valueComboBox.Text;
+      }
+
+    }
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringFilterView.Designer.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringFilterView.Designer.cs	(revision 5604)
@@ -0,0 +1,105 @@
+#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.Clients.OKB {
+  partial class SetComparisonStringFilterView {
+    /// <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) {
+        if (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.valueTextBox = new System.Windows.Forms.TextBox();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
+      // 
+      // valueTextBox
+      // 
+      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
+      this.valueTextBox.Name = "valueTextBox";
+      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
+      this.valueTextBox.TabIndex = 0;
+      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
+      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
+      // 
+      // SetComparisonStringFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "SetComparisonStringFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox valueTextBox;
+
+
+
+
+
+  }
+}
Index: /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringFilterView.cs	(revision 5604)
+++ /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/SetComparisonStringFilterView.cs	(revision 5604)
@@ -0,0 +1,64 @@
+#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.Clients.OKB {
+  [View("SetComparisonStringFilter View")]
+  [Content(typeof(SetComparisonStringFilter), true)]
+  public partial class SetComparisonStringFilterView : SetComparisonFilterView {
+    public new SetComparisonStringFilter Content {
+      get { return (SetComparisonStringFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public SetComparisonStringFilterView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      valueTextBox.Text = Content == null ? string.Empty : Content.Value;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueTextBox.Enabled = Content != null;
+      valueTextBox.ReadOnly = ReadOnly;
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        label.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueTextBox.Text = Content.Value;
+        label.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueTextBox_Validated(object sender, System.EventArgs e) {
+      if (Content != null) {
+        Content.Value = valueTextBox.Text;
+      }
+    }
+  }
+}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/QueryMenuItem.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/QueryMenuItem.cs	(revision 5603)
+++ 	(revision )
@@ -1,42 +1,0 @@
-﻿#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.Collections.Generic;
-using HeuristicLab.Optimizer;
-
-namespace HeuristicLab.Clients.OKB {
-  internal class QueryMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider {
-    public override string Name {
-      get { return "&Query"; }
-    }
-    public override IEnumerable<string> Structure {
-      get { return new string[] { "&Services", "&OKB" }; }
-    }
-    public override int Position {
-      get { return 4220; }
-    }
-
-    public override void Execute() {
-      QueryView view = new QueryView();
-      view.Show();
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/AlgorithmDataView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/AlgorithmDataView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,254 +1,0 @@
-#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.Clients.OKB {
-  partial class AlgorithmDataView {
-    /// <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) {
-        if (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.components = new System.ComponentModel.Container();
-      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
-      this.groupBox = new System.Windows.Forms.GroupBox();
-      this.noViewAvailableLabel = new System.Windows.Forms.Label();
-      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.dataTypeComboBox = new System.Windows.Forms.ComboBox();
-      this.newDataButton = new System.Windows.Forms.Button();
-      this.saveFileButton = new System.Windows.Forms.Button();
-      this.openFileButton = new System.Windows.Forms.Button();
-      this.fileTextBox = new System.Windows.Forms.TextBox();
-      this.refreshDataButton = new System.Windows.Forms.Button();
-      this.storeDataButton = new System.Windows.Forms.Button();
-      this.dataTypeLabel = new System.Windows.Forms.Label();
-      this.fileLabel = new System.Windows.Forms.Label();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.groupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // openFileDialog
-      // 
-      this.openFileDialog.FileName = "data";
-      this.openFileDialog.Filter = "All Files (*.*)|*.*";
-      this.openFileDialog.Title = "Load Algorithm Data";
-      // 
-      // saveFileDialog
-      // 
-      this.saveFileDialog.FileName = "data";
-      this.saveFileDialog.Filter = "All Files (*.*)|*.*";
-      this.saveFileDialog.Title = "Save Algorithm Data";
-      // 
-      // groupBox
-      // 
-      this.groupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.groupBox.Controls.Add(this.noViewAvailableLabel);
-      this.groupBox.Controls.Add(this.viewHost);
-      this.groupBox.Location = new System.Drawing.Point(0, 83);
-      this.groupBox.Name = "groupBox";
-      this.groupBox.Size = new System.Drawing.Size(633, 371);
-      this.groupBox.TabIndex = 19;
-      this.groupBox.TabStop = false;
-      this.groupBox.Text = "Data:";
-      // 
-      // noViewAvailableLabel
-      // 
-      this.noViewAvailableLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.noViewAvailableLabel.AutoSize = true;
-      this.noViewAvailableLabel.Location = new System.Drawing.Point(269, 179);
-      this.noViewAvailableLabel.Name = "noViewAvailableLabel";
-      this.noViewAvailableLabel.Size = new System.Drawing.Size(94, 13);
-      this.noViewAvailableLabel.TabIndex = 1;
-      this.noViewAvailableLabel.Text = "No view available.";
-      this.noViewAvailableLabel.Visible = false;
-      // 
-      // viewHost
-      // 
-      this.viewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.viewHost.Caption = "View";
-      this.viewHost.Content = null;
-      this.viewHost.Enabled = true;
-      this.viewHost.Location = new System.Drawing.Point(6, 19);
-      this.viewHost.Name = "viewHost";
-      this.viewHost.ReadOnly = false;
-      this.viewHost.Size = new System.Drawing.Size(621, 346);
-      this.viewHost.TabIndex = 0;
-      this.viewHost.ViewType = null;
-      // 
-      // dataTypeComboBox
-      // 
-      this.dataTypeComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataTypeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.dataTypeComboBox.FormattingEnabled = true;
-      this.dataTypeComboBox.Location = new System.Drawing.Point(66, 30);
-      this.dataTypeComboBox.Name = "dataTypeComboBox";
-      this.dataTypeComboBox.Size = new System.Drawing.Size(567, 21);
-      this.dataTypeComboBox.TabIndex = 16;
-      this.dataTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.dataTypeComboBox_SelectedIndexChanged);
-      // 
-      // newDataButton
-      // 
-      this.newDataButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.NewDocument;
-      this.newDataButton.Location = new System.Drawing.Point(90, 0);
-      this.newDataButton.Name = "newDataButton";
-      this.newDataButton.Size = new System.Drawing.Size(24, 24);
-      this.newDataButton.TabIndex = 12;
-      this.toolTip.SetToolTip(this.newDataButton, "Create New Algorithm Data");
-      this.newDataButton.UseVisualStyleBackColor = true;
-      this.newDataButton.Click += new System.EventHandler(this.newDataButton_Click);
-      // 
-      // saveFileButton
-      // 
-      this.saveFileButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Save;
-      this.saveFileButton.Location = new System.Drawing.Point(150, 0);
-      this.saveFileButton.Name = "saveFileButton";
-      this.saveFileButton.Size = new System.Drawing.Size(24, 24);
-      this.saveFileButton.TabIndex = 14;
-      this.toolTip.SetToolTip(this.saveFileButton, "Save Algorithm Data into File");
-      this.saveFileButton.UseVisualStyleBackColor = true;
-      this.saveFileButton.Click += new System.EventHandler(this.saveFileButton_Click);
-      // 
-      // openFileButton
-      // 
-      this.openFileButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Open;
-      this.openFileButton.Location = new System.Drawing.Point(120, 0);
-      this.openFileButton.Name = "openFileButton";
-      this.openFileButton.Size = new System.Drawing.Size(24, 24);
-      this.openFileButton.TabIndex = 13;
-      this.toolTip.SetToolTip(this.openFileButton, "Load Algorithm Data from File");
-      this.openFileButton.UseVisualStyleBackColor = true;
-      this.openFileButton.Click += new System.EventHandler(this.openFileButton_Click);
-      // 
-      // fileTextBox
-      // 
-      this.fileTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.fileTextBox.Location = new System.Drawing.Point(66, 57);
-      this.fileTextBox.Name = "fileTextBox";
-      this.fileTextBox.ReadOnly = true;
-      this.fileTextBox.Size = new System.Drawing.Size(567, 20);
-      this.fileTextBox.TabIndex = 18;
-      // 
-      // refreshDataButton
-      // 
-      this.refreshDataButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
-      this.refreshDataButton.Location = new System.Drawing.Point(0, 0);
-      this.refreshDataButton.Name = "refreshDataButton";
-      this.refreshDataButton.Size = new System.Drawing.Size(24, 24);
-      this.refreshDataButton.TabIndex = 10;
-      this.toolTip.SetToolTip(this.refreshDataButton, "Refresh Algorithm Data from OKB");
-      this.refreshDataButton.UseVisualStyleBackColor = true;
-      this.refreshDataButton.Click += new System.EventHandler(this.refreshDataButton_Click);
-      // 
-      // storeDataButton
-      // 
-      this.storeDataButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.PublishToWeb;
-      this.storeDataButton.Location = new System.Drawing.Point(30, 0);
-      this.storeDataButton.Name = "storeDataButton";
-      this.storeDataButton.Size = new System.Drawing.Size(24, 24);
-      this.storeDataButton.TabIndex = 11;
-      this.toolTip.SetToolTip(this.storeDataButton, "Store Algorithm Data in OKB");
-      this.storeDataButton.UseVisualStyleBackColor = true;
-      this.storeDataButton.Click += new System.EventHandler(this.storeDataButton_Click);
-      // 
-      // dataTypeLabel
-      // 
-      this.dataTypeLabel.AutoSize = true;
-      this.dataTypeLabel.Location = new System.Drawing.Point(3, 33);
-      this.dataTypeLabel.Name = "dataTypeLabel";
-      this.dataTypeLabel.Size = new System.Drawing.Size(57, 13);
-      this.dataTypeLabel.TabIndex = 15;
-      this.dataTypeLabel.Text = "&DataType:";
-      // 
-      // fileLabel
-      // 
-      this.fileLabel.AutoSize = true;
-      this.fileLabel.Location = new System.Drawing.Point(3, 60);
-      this.fileLabel.Name = "fileLabel";
-      this.fileLabel.Size = new System.Drawing.Size(26, 13);
-      this.fileLabel.TabIndex = 17;
-      this.fileLabel.Text = "&File:";
-      // 
-      // AlgorithmDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.Controls.Add(this.groupBox);
-      this.Controls.Add(this.dataTypeComboBox);
-      this.Controls.Add(this.newDataButton);
-      this.Controls.Add(this.saveFileButton);
-      this.Controls.Add(this.openFileButton);
-      this.Controls.Add(this.fileTextBox);
-      this.Controls.Add(this.refreshDataButton);
-      this.Controls.Add(this.storeDataButton);
-      this.Controls.Add(this.dataTypeLabel);
-      this.Controls.Add(this.fileLabel);
-      this.Name = "AlgorithmDataView";
-      this.Size = new System.Drawing.Size(633, 454);
-      this.groupBox.ResumeLayout(false);
-      this.groupBox.PerformLayout();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.OpenFileDialog openFileDialog;
-    private System.Windows.Forms.SaveFileDialog saveFileDialog;
-    private System.Windows.Forms.GroupBox groupBox;
-    private System.Windows.Forms.Label noViewAvailableLabel;
-    private MainForm.WindowsForms.ViewHost viewHost;
-    private System.Windows.Forms.ComboBox dataTypeComboBox;
-    private System.Windows.Forms.Button newDataButton;
-    private System.Windows.Forms.Button saveFileButton;
-    private System.Windows.Forms.Button openFileButton;
-    private System.Windows.Forms.TextBox fileTextBox;
-    private System.Windows.Forms.Button refreshDataButton;
-    private System.Windows.Forms.Button storeDataButton;
-    private System.Windows.Forms.Label dataTypeLabel;
-    private System.Windows.Forms.Label fileLabel;
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/AlgorithmDataView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/AlgorithmDataView.cs	(revision 5603)
+++ 	(revision )
@@ -1,247 +1,0 @@
-#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;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.IO;
-using System.Linq;
-using System.Windows.Forms;
-using HeuristicLab.Common;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.Xml;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Clients.OKB {
-  [View("AlgorithmData View")]
-  [Content(typeof(AlgorithmData), true)]
-  public partial class AlgorithmDataView : AsynchronousContentView {
-    private List<DataType> dataTypeComboBoxValues;
-
-    private long algorithmId;
-    public long AlgorithmId {
-      get { return algorithmId; }
-      set {
-        algorithmId = value;
-        if (Content != null) {
-          Content.AlgorithmId = value;
-          SetEnabledStateOfControls();
-        }
-      }
-    }
-
-    public new AlgorithmData Content {
-      get { return (AlgorithmData)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public AlgorithmDataView() {
-      InitializeComponent();
-    }
-
-    protected override void OnInitialized(System.EventArgs e) {
-      base.OnInitialized(e);
-      dataTypeComboBoxValues = OKBClient.Instance.DataTypes.ToList();
-      dataTypeComboBox.DataSource = dataTypeComboBoxValues;
-      dataTypeComboBox.SelectedIndex = -1;
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.PropertyChanged -= new PropertyChangedEventHandler(Content_PropertyChanged);
-      base.DeregisterContentEvents();
-    }
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.PropertyChanged += new PropertyChangedEventHandler(Content_PropertyChanged);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        dataTypeComboBox.SelectedIndex = -1;
-        viewHost.Content = null;
-        noViewAvailableLabel.Visible = false;
-      } else {
-        dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
-
-        using (MemoryStream stream = new MemoryStream(Content.Data)) {
-          try {
-            viewHost.Content = XmlParser.Deserialize<IContent>(stream);
-            noViewAvailableLabel.Visible = false;
-          }
-          catch (Exception) {
-            viewHost.Content = null;
-            noViewAvailableLabel.Visible = true;
-          }
-          stream.Close();
-        }
-      }
-      fileTextBox.Text = "-";
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      newDataButton.Enabled = !ReadOnly;
-      openFileButton.Enabled = !ReadOnly;
-      saveFileButton.Enabled = (Content != null) && (((Content.Data != null) && (Content.Data.Length != 0)) || (viewHost.Content != null));
-      storeDataButton.Enabled = saveFileButton.Enabled && (Content.AlgorithmId != 0) && !ReadOnly;
-      dataTypeComboBox.Enabled = Content != null && viewHost.Content == null && !ReadOnly;
-      fileTextBox.Enabled = Content != null;
-      groupBox.Enabled = Content != null;
-    }
-
-    private void Content_PropertyChanged(object sender, PropertyChangedEventArgs e) {
-      switch (e.PropertyName) {
-        case "DataTypeId":
-          dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
-          break;
-      }
-    }
-
-    private void refreshDataButton_Click(object sender, EventArgs e) {
-      BeginAsyncCall();
-      var call = new Action(delegate() {
-        AlgorithmData data = OKBClient.Instance.GetAlgorithmData(AlgorithmId);
-        Content = data;
-      });
-      call.BeginInvoke(delegate(IAsyncResult result) {
-        call.EndInvoke(result);
-        EndAsyncCall();
-      }, null);
-    }
-    private void storeDataButton_Click(object sender, EventArgs e) {
-      if (viewHost.Content != null) {
-        try {
-          using (MemoryStream stream = new MemoryStream()) {
-            IAlgorithm algorithm = viewHost.Content as IAlgorithm;
-            algorithm.Prepare(true);
-            XmlGenerator.Serialize(algorithm, stream);
-            stream.Close();
-            Content.Data = stream.ToArray();
-          }
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-      OKBClient.Instance.UpdateAlgorithmData(Content);
-    }
-    private void newDataButton_Click(object sender, EventArgs e) {
-      using (TypeSelectorDialog dialog = new TypeSelectorDialog()) {
-        dialog.Caption = "Select Algorithm";
-        dialog.TypeSelector.Caption = "Available Algorithms";
-        dialog.TypeSelector.Configure(typeof(IAlgorithm), false, true);
-        if (dialog.ShowDialog(this) == DialogResult.OK) {
-          try {
-            if (Content == null) Content = new AlgorithmData { AlgorithmId = AlgorithmId };
-            viewHost.Content = (IContent)dialog.TypeSelector.CreateInstanceOfSelectedType();
-            DataType dataType = OKBClient.Instance.ConvertToDataType(viewHost.Content.GetType());
-            dataTypeComboBoxValues = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
-            dataTypeComboBox.DataSource = dataTypeComboBoxValues;
-            dataTypeComboBox.SelectedItem = dataType;
-            fileTextBox.Text = "-";
-            noViewAvailableLabel.Visible = false;
-            SetEnabledStateOfControls();
-          }
-          catch (Exception ex) {
-            ErrorHandling.ShowErrorDialog(this, ex);
-          }
-        }
-      }
-    }
-    private void openFileButton_Click(object sender, EventArgs e) {
-      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          if (Content == null) Content = new AlgorithmData { AlgorithmId = AlgorithmId };
-          IAlgorithm algorithm = null;
-          try {
-            algorithm = XmlParser.Deserialize<IAlgorithm>(openFileDialog.FileName);
-          }
-          catch (Exception) { }
-
-          if (algorithm != null) {
-            viewHost.Content = algorithm;
-            noViewAvailableLabel.Visible = false;
-            DataType dataType = OKBClient.Instance.ConvertToDataType(viewHost.Content.GetType());
-            dataTypeComboBoxValues = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
-            dataTypeComboBox.DataSource = dataTypeComboBoxValues;
-            dataTypeComboBox.SelectedItem = dataType;
-          } else {
-            viewHost.Content = null;
-            noViewAvailableLabel.Visible = true;
-            using (FileStream stream = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read)) {
-              byte[] bytes = new byte[stream.Length];
-              stream.Read(bytes, 0, bytes.Length);
-              stream.Close();
-              Content.Data = bytes;
-            }
-          }
-          fileTextBox.Text = openFileDialog.FileName;
-          SetEnabledStateOfControls();
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-    private void saveFileButton_Click(object sender, EventArgs e) {
-      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          if (viewHost.Content != null) {
-            XmlGenerator.Serialize(viewHost.Content, saveFileDialog.FileName);
-          } else {
-            using (FileStream stream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write)) {
-              stream.Write(Content.Data, 0, Content.Data.Length);
-              stream.Close();
-            }
-          }
-          fileTextBox.Text = saveFileDialog.FileName;
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-    private void dataTypeComboBox_SelectedIndexChanged(object sender, EventArgs e) {
-      if (Content != null) Content.DataTypeId = ((DataType)dataTypeComboBox.SelectedItem).Id;
-    }
-
-    private void BeginAsyncCall() {
-      if (InvokeRequired)
-        Invoke(new Action(BeginAsyncCall));
-      else {
-        Cursor = Cursors.AppStarting;
-        Enabled = false;
-      }
-    }
-    private void EndAsyncCall() {
-      if (InvokeRequired)
-        Invoke(new Action(EndAsyncCall));
-      else {
-        Cursor = Cursors.Default;
-        Enabled = true;
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/CombinedFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/CombinedFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,133 +1,0 @@
-#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.Clients.OKB {
-  partial class CombinedFilterView {
-    /// <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) {
-        if (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() {
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CombinedFilterView));
-      this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
-      this.filtersComboBox = new System.Windows.Forms.ComboBox();
-      this.addButton = new System.Windows.Forms.Button();
-      this.label = new System.Windows.Forms.Label();
-      this.tableLayoutPanel.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // tableLayoutPanel
-      // 
-      this.tableLayoutPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.tableLayoutPanel.ColumnCount = 2;
-      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
-      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
-      this.tableLayoutPanel.Controls.Add(this.filtersComboBox, 1, 0);
-      this.tableLayoutPanel.Controls.Add(this.addButton, 0, 0);
-      this.tableLayoutPanel.Location = new System.Drawing.Point(21, 0);
-      this.tableLayoutPanel.Name = "tableLayoutPanel";
-      this.tableLayoutPanel.RowCount = 1;
-      this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
-      this.tableLayoutPanel.Size = new System.Drawing.Size(706, 327);
-      this.tableLayoutPanel.TabIndex = 1;
-      // 
-      // filtersComboBox
-      // 
-      this.filtersComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.filtersComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.filtersComboBox.FormattingEnabled = true;
-      this.filtersComboBox.Location = new System.Drawing.Point(33, 4);
-      this.filtersComboBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 3);
-      this.filtersComboBox.Name = "filtersComboBox";
-      this.filtersComboBox.Size = new System.Drawing.Size(670, 21);
-      this.filtersComboBox.TabIndex = 1;
-      // 
-      // addButton
-      // 
-      this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.addButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Add;
-      this.addButton.Location = new System.Drawing.Point(3, 3);
-      this.addButton.Name = "addButton";
-      this.addButton.Size = new System.Drawing.Size(24, 24);
-      this.addButton.TabIndex = 0;
-      this.addButton.UseVisualStyleBackColor = true;
-      this.addButton.Click += new System.EventHandler(this.addButton_Click);
-      // 
-      // label
-      // 
-      this.label.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)));
-      this.label.BackColor = System.Drawing.Color.NavajoWhite;
-      this.label.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.label.Location = new System.Drawing.Point(3, 31);
-      this.label.Name = "label";
-      this.label.Size = new System.Drawing.Size(15, 296);
-      this.label.TabIndex = 0;
-      this.label.Text = "L\r\nA\r\nB\r\nE\r\nL\r\n";
-      this.label.TextAlign = System.Drawing.ContentAlignment.TopCenter;
-      // 
-      // CombinedFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.AutoScroll = true;
-      this.Controls.Add(this.tableLayoutPanel);
-      this.Controls.Add(this.label);
-      this.Name = "CombinedFilterView";
-      this.Size = new System.Drawing.Size(727, 327);
-      this.tableLayoutPanel.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
-    protected System.Windows.Forms.Button addButton;
-    protected System.Windows.Forms.ComboBox filtersComboBox;
-    protected System.Windows.Forms.Label label;
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/CombinedFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/CombinedFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,136 +1,0 @@
-#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;
-using System.Collections.Generic;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Clients.OKB {
-  [View("CombinedFilter View")]
-  [Content(typeof(CombinedFilter), true)]
-  public partial class CombinedFilterView : AsynchronousContentView {
-    public new CombinedFilter Content {
-      get { return (CombinedFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public CombinedFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnInitialized(System.EventArgs e) {
-      base.OnInitialized(e);
-      IEnumerable<Filter> availableFilters = OKBClient.Instance.GetFilters();
-      filtersComboBox.DataSource = availableFilters;
-      filtersComboBox.DisplayMember = "Label";
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      RemoveFilters();
-      label.Text = string.Empty;
-      if (Content != null) {
-        string nl = Environment.NewLine;
-        label.Text = Content.Operation == BooleanOperation.And ? "A" + nl + "N" + nl + "D" : "O" + nl + "R";
-
-        foreach (Filter filter in Content.Filters)
-          AddFilter(filter);
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      addButton.Enabled = Content != null && !ReadOnly && filtersComboBox.SelectedIndex != -1;
-      filtersComboBox.Enabled = Content != null && !ReadOnly && filtersComboBox.Items.Count > 0;
-      tableLayoutPanel.Enabled = Content != null && !ReadOnly;
-    }
-
-    private void AddFilter(Filter filter) {
-      Content.Filters.Add(filter);
-      int rowIndex = Content.Filters.Count;
-
-      tableLayoutPanel.SuspendLayout();
-      tableLayoutPanel.RowCount++;
-      tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
-
-      Button removeButton = new Button();
-      removeButton.Size = new System.Drawing.Size(24, 24);
-      removeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right;
-      removeButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Remove;
-      removeButton.Tag = filter;
-      removeButton.Click += new System.EventHandler(removeButton_Click);
-      tableLayoutPanel.Controls.Add(removeButton, 0, rowIndex);
-
-      ContentView filterView = (ContentView)MainFormManager.CreateDefaultView(filter.GetType());
-      filterView.Content = filter;
-      filterView.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-      tableLayoutPanel.Controls.Add(filterView, 1, rowIndex);
-
-      tableLayoutPanel.ResumeLayout();
-    }
-    private void RemoveFilter(Filter filter) {
-      int rowIndex = Content.Filters.IndexOf(filter) + 1;
-      Content.Filters.Remove(filter);
-
-      tableLayoutPanel.SuspendLayout();
-      Control removeButton = tableLayoutPanel.GetControlFromPosition(0, rowIndex);
-      Control filterView = tableLayoutPanel.GetControlFromPosition(1, rowIndex);
-      tableLayoutPanel.Controls.Remove(removeButton);
-      removeButton.Dispose();
-      tableLayoutPanel.Controls.Remove(filterView);
-      filterView.Dispose();
-
-      for (int i = rowIndex + 1; i < tableLayoutPanel.RowCount; i++) {
-        tableLayoutPanel.SetRow(tableLayoutPanel.GetControlFromPosition(0, i), i - 1);
-        tableLayoutPanel.SetRow(tableLayoutPanel.GetControlFromPosition(1, i), i - 1);
-      }
-
-      tableLayoutPanel.RowCount--;
-      tableLayoutPanel.RowStyles.RemoveAt(rowIndex);
-      tableLayoutPanel.ResumeLayout();
-    }
-    private void RemoveFilters() {
-      tableLayoutPanel.SuspendLayout();
-      for (int i = tableLayoutPanel.RowCount - 1; i > 0; i--) {
-        Control removeButton = tableLayoutPanel.GetControlFromPosition(0, i);
-        Control filterView = tableLayoutPanel.GetControlFromPosition(1, i);
-        tableLayoutPanel.Controls.Remove(removeButton);
-        removeButton.Dispose();
-        tableLayoutPanel.Controls.Remove(filterView);
-        filterView.Dispose();
-        tableLayoutPanel.RowCount--;
-        tableLayoutPanel.RowStyles.RemoveAt(i);
-      }
-      tableLayoutPanel.ResumeLayout();
-    }
-
-    private void addButton_Click(object sender, System.EventArgs e) {
-      Filter filter = filtersComboBox.SelectedItem as Filter;
-      if (filter != null) AddFilter(filter.Clone());
-    }
-    private void removeButton_Click(object sender, System.EventArgs e) {
-      Filter filter = ((Button)sender).Tag as Filter;
-      if (filter != null) RemoveFilter(filter);
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/EqualityComparisonFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/EqualityComparisonFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,105 +1,0 @@
-#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.Clients.OKB {
-  partial class EqualityComparisonFilterView {
-    /// <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) {
-        if (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.comparisonComboBox = new System.Windows.Forms.ComboBox();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.TabIndex = 0;
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel1
-      // 
-      this.splitContainer2.Panel1.Controls.Add(this.comparisonComboBox);
-      // 
-      // comparisonComboBox
-      // 
-      this.comparisonComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.comparisonComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.comparisonComboBox.FormattingEnabled = true;
-      this.comparisonComboBox.Items.AddRange(new object[] {
-            "=",
-            "<>"});
-      this.comparisonComboBox.Location = new System.Drawing.Point(3, 2);
-      this.comparisonComboBox.Name = "comparisonComboBox";
-      this.comparisonComboBox.Size = new System.Drawing.Size(100, 21);
-      this.comparisonComboBox.TabIndex = 0;
-      this.comparisonComboBox.SelectedIndexChanged += new System.EventHandler(this.comparisonComboBox_SelectedIndexChanged);
-      // 
-      // EqualityComparisonFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "EqualityComparisonFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.ComboBox comparisonComboBox;
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/EqualityComparisonFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/EqualityComparisonFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,63 +1,0 @@
-#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.Clients.OKB {
-  [View("EqualityComparisonFilter View")]
-  public partial class EqualityComparisonFilterView : FilterView {
-    public new EqualityComparisonFilter Content {
-      get { return (EqualityComparisonFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public EqualityComparisonFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      comparisonComboBox.SelectedIndex = -1;
-      if (Content != null) {
-        if (Content.Comparison == EqualityComparison.Equal)
-          comparisonComboBox.SelectedItem = "=";
-        else if (Content.Comparison == EqualityComparison.NotEqual)
-          comparisonComboBox.SelectedItem = "<>";
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      comparisonComboBox.Enabled = Content != null && !ReadOnly;
-    }
-
-    private void comparisonComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
-      if (Content != null) {
-        if (comparisonComboBox.SelectedItem == "=")
-          Content.Comparison = EqualityComparison.Equal;
-        else if (comparisonComboBox.SelectedItem == "<>")
-          Content.Comparison = EqualityComparison.NotEqual;
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/FilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/FilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,121 +1,0 @@
-#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.Clients.OKB {
-  partial class FilterView {
-    /// <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) {
-        if (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.label = new System.Windows.Forms.Label();
-      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
-      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // label
-      // 
-      this.label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.label.Location = new System.Drawing.Point(3, 2);
-      this.label.Name = "label";
-      this.label.Size = new System.Drawing.Size(94, 20);
-      this.label.TabIndex = 0;
-      this.label.Text = "Label";
-      this.label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer1.Name = "splitContainer1";
-      // 
-      // splitContainer1.Panel1
-      // 
-      this.splitContainer1.Panel1.Controls.Add(this.label);
-      // 
-      // splitContainer1.Panel2
-      // 
-      this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
-      this.splitContainer1.Size = new System.Drawing.Size(500, 24);
-      this.splitContainer1.SplitterDistance = 100;
-      this.splitContainer1.TabIndex = 0;
-      // 
-      // splitContainer2
-      // 
-      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
-      this.splitContainer2.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer2.Name = "splitContainer2";
-      this.splitContainer2.Size = new System.Drawing.Size(396, 24);
-      this.splitContainer2.SplitterDistance = 106;
-      this.splitContainer2.TabIndex = 0;
-      // 
-      // FilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.splitContainer1);
-      this.Name = "FilterView";
-      this.Size = new System.Drawing.Size(500, 24);
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.Label label;
-    protected System.Windows.Forms.SplitContainer splitContainer1;
-    protected System.Windows.Forms.SplitContainer splitContainer2;
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/FilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/FilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,49 +1,0 @@
-#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.Clients.OKB {
-  [View("Filter View")]
-  [Content(typeof(Filter), true)]
-  public partial class FilterView : AsynchronousContentView {
-    public new Filter Content {
-      get { return (Filter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public FilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      label.Text = Content == null ? string.Empty : Content.Label;
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      label.Enabled = Content != null;
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameEqualityComparisonBoolFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameEqualityComparisonBoolFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,107 +1,0 @@
-#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.Clients.OKB {
-  partial class NameEqualityComparisonBoolFilterView {
-    /// <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) {
-        if (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.valueComboBox = new System.Windows.Forms.ComboBox();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.valueComboBox);
-      // 
-      // valueComboBox
-      // 
-      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.valueComboBox.FormattingEnabled = true;
-      this.valueComboBox.Items.AddRange(new object[] {
-            "true",
-            "false"});
-      this.valueComboBox.Location = new System.Drawing.Point(3, 2);
-      this.valueComboBox.Name = "valueComboBox";
-      this.valueComboBox.Size = new System.Drawing.Size(280, 21);
-      this.valueComboBox.TabIndex = 0;
-      this.valueComboBox.SelectedIndexChanged += new System.EventHandler(this.valueComboBox_SelectedIndexChanged);
-      // 
-      // NameEqualityComparisonBoolFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "NameEqualityComparisonBoolFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ComboBox valueComboBox;
-
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameEqualityComparisonBoolFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameEqualityComparisonBoolFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,58 +1,0 @@
-#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.Clients.OKB {
-  [View("NameEqualityComparisonBoolFilter View")]
-  [Content(typeof(NameEqualityComparisonBoolFilter), true)]
-  public partial class NameEqualityComparisonBoolFilterView : EqualityComparisonFilterView {
-    public new NameEqualityComparisonBoolFilter Content {
-      get { return (NameEqualityComparisonBoolFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public NameEqualityComparisonBoolFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      valueComboBox.SelectedIndex = -1;
-      if (Content != null) {
-        valueComboBox.SelectedItem = Content.Value ? "true" : "false";
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      valueComboBox.Enabled = Content != null && !ReadOnly;
-    }
-
-    private void valueComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
-      if (Content != null) {
-        Content.Value = valueComboBox.SelectedItem == "true" ? true : false;
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameOrdinalComparisonDoubleFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameOrdinalComparisonDoubleFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,116 +1,0 @@
-#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.Clients.OKB {
-  partial class NameOrdinalComparisonDoubleFilterView {
-    /// <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) {
-        if (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.components = new System.ComponentModel.Container();
-      this.valueTextBox = new System.Windows.Forms.TextBox();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
-      // 
-      // valueTextBox
-      // 
-      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
-      this.valueTextBox.Name = "valueTextBox";
-      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
-      this.valueTextBox.TabIndex = 0;
-      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
-      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
-      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
-      // 
-      // NameOrdinalComparisonDoubleFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "NameOrdinalComparisonDoubleFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      this.splitContainer2.Panel2.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox valueTextBox;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-
-
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameOrdinalComparisonDoubleFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameOrdinalComparisonDoubleFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,75 +1,0 @@
-#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.Clients.OKB {
-  [View("NameOrdinalComparisonDoubleFilter View")]
-  [Content(typeof(NameOrdinalComparisonDoubleFilter), true)]
-  public partial class NameOrdinalComparisonDoubleFilterView : OrdinalComparisonFilterView {
-    public new NameOrdinalComparisonDoubleFilter Content {
-      get { return (NameOrdinalComparisonDoubleFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public NameOrdinalComparisonDoubleFilterView() {
-      InitializeComponent();
-      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
-      errorProvider.SetIconPadding(valueTextBox, 2);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      valueTextBox.Text = Content == null ? string.Empty : Content.Value.ToString();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      valueTextBox.Enabled = Content != null;
-      valueTextBox.ReadOnly = ReadOnly;
-    }
-
-    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
-        label.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        valueTextBox.Text = Content.Value.ToString();
-        label.Focus();  // set focus on label to validate data
-      }
-    }
-    private void valueTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
-      double val;
-      if (!double.TryParse(valueTextBox.Text, out val)) {
-        e.Cancel = true;
-        errorProvider.SetError(valueTextBox, "Invalid Double Value");
-        valueTextBox.SelectAll();
-      }
-    }
-    private void valueTextBox_Validated(object sender, System.EventArgs e) {
-      if (Content != null) {
-        Content.Value = double.Parse(valueTextBox.Text);
-        errorProvider.SetError(valueTextBox, string.Empty);
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameOrdinalComparisonLongFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameOrdinalComparisonLongFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,116 +1,0 @@
-#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.Clients.OKB {
-  partial class NameOrdinalComparisonLongFilterView {
-    /// <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) {
-        if (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.components = new System.ComponentModel.Container();
-      this.valueTextBox = new System.Windows.Forms.TextBox();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
-      // 
-      // valueTextBox
-      // 
-      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
-      this.valueTextBox.Name = "valueTextBox";
-      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
-      this.valueTextBox.TabIndex = 0;
-      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
-      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
-      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
-      // 
-      // NameOrdinalComparisonLongFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "NameOrdinalComparisonLongFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      this.splitContainer2.Panel2.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox valueTextBox;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-
-
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameOrdinalComparisonLongFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameOrdinalComparisonLongFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,75 +1,0 @@
-#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.Clients.OKB {
-  [View("NameOrdinalComparisonLongFilter View")]
-  [Content(typeof(NameOrdinalComparisonLongFilter), true)]
-  public partial class NameOrdinalComparisonLongFilterView : OrdinalComparisonFilterView {
-    public new NameOrdinalComparisonLongFilter Content {
-      get { return (NameOrdinalComparisonLongFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public NameOrdinalComparisonLongFilterView() {
-      InitializeComponent();
-      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
-      errorProvider.SetIconPadding(valueTextBox, 2);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      valueTextBox.Text = Content == null ? string.Empty : Content.Value.ToString();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      valueTextBox.Enabled = Content != null;
-      valueTextBox.ReadOnly = ReadOnly;
-    }
-
-    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
-        label.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        valueTextBox.Text = Content.Value.ToString();
-        label.Focus();  // set focus on label to validate data
-      }
-    }
-    private void valueTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
-      long val;
-      if (!long.TryParse(valueTextBox.Text, out val)) {
-        e.Cancel = true;
-        errorProvider.SetError(valueTextBox, "Invalid Long Value");
-        valueTextBox.SelectAll();
-      }
-    }
-    private void valueTextBox_Validated(object sender, System.EventArgs e) {
-      if (Content != null) {
-        Content.Value = long.Parse(valueTextBox.Text);
-        errorProvider.SetError(valueTextBox, string.Empty);
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameSetComparisonStringAvailableValuesFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameSetComparisonStringAvailableValuesFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,106 +1,0 @@
-#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.Clients.OKB {
-  partial class NameSetComparisonStringAvailableValuesFilterView {
-    /// <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) {
-        if (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.valueComboBox = new System.Windows.Forms.ComboBox();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.valueComboBox);
-      // 
-      // valueComboBox
-      // 
-      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueComboBox.FormattingEnabled = true;
-      this.valueComboBox.Location = new System.Drawing.Point(3, 2);
-      this.valueComboBox.MaxDropDownItems = 32;
-      this.valueComboBox.Name = "valueComboBox";
-      this.valueComboBox.Size = new System.Drawing.Size(280, 21);
-      this.valueComboBox.TabIndex = 0;
-      this.valueComboBox.Validated += new System.EventHandler(this.valueComboBox_Validated);
-      // 
-      // NameSetComparisonStringAvailableValuesFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "NameSetComparisonStringAvailableValuesFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ComboBox valueComboBox;
-
-
-
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameSetComparisonStringAvailableValuesFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameSetComparisonStringAvailableValuesFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,65 +1,0 @@
-#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.Clients.OKB {
-  [View("NameSetComparisonStringAvailableValuesFilter View")]
-  [Content(typeof(NameSetComparisonStringAvailableValuesFilter), true)]
-  public partial class NameSetComparisonStringAvailableValuesFilterView : SetComparisonFilterView {
-    public new NameSetComparisonStringAvailableValuesFilter Content {
-      get { return (NameSetComparisonStringAvailableValuesFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public NameSetComparisonStringAvailableValuesFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      valueComboBox.DataSource = Content == null ? null : Content.AvailableValues;
-      valueComboBox.Text = Content == null ? string.Empty : Content.Value;
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      valueComboBox.Enabled = Content != null && !ReadOnly;
-    }
-
-    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
-        label.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        valueComboBox.Text = Content.Value;
-        label.Focus();  // set focus on label to validate data
-      }
-    }
-    private void valueComboBox_Validated(object sender, System.EventArgs e) {
-      if (Content != null) {
-        Content.Value = valueComboBox.Text;
-      }
-
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameSetComparisonStringFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameSetComparisonStringFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,105 +1,0 @@
-#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.Clients.OKB {
-  partial class NameSetComparisonStringFilterView {
-    /// <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) {
-        if (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.valueTextBox = new System.Windows.Forms.TextBox();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
-      // 
-      // valueTextBox
-      // 
-      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
-      this.valueTextBox.Name = "valueTextBox";
-      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
-      this.valueTextBox.TabIndex = 0;
-      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
-      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
-      // 
-      // NameSetComparisonStringFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "NameSetComparisonStringFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      this.splitContainer2.Panel2.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox valueTextBox;
-
-
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameSetComparisonStringFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/NameSetComparisonStringFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#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.Clients.OKB {
-  [View("NameSetComparisonStringFilter View")]
-  [Content(typeof(NameSetComparisonStringFilter), true)]
-  public partial class NameSetComparisonStringFilterView : SetComparisonFilterView {
-    public new NameSetComparisonStringFilter Content {
-      get { return (NameSetComparisonStringFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public NameSetComparisonStringFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      valueTextBox.Text = Content == null ? string.Empty : Content.Value;
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      valueTextBox.Enabled = Content != null;
-      valueTextBox.ReadOnly = ReadOnly;
-    }
-
-    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
-        label.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        valueTextBox.Text = Content.Value;
-        label.Focus();  // set focus on label to validate data
-      }
-    }
-    private void valueTextBox_Validated(object sender, System.EventArgs e) {
-      if (Content != null) {
-        Content.Value = valueTextBox.Text;
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/OrdinalComparisonFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/OrdinalComparisonFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,109 +1,0 @@
-#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.Clients.OKB {
-  partial class OrdinalComparisonFilterView {
-    /// <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) {
-        if (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.comparisonComboBox = new System.Windows.Forms.ComboBox();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.TabIndex = 0;
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel1
-      // 
-      this.splitContainer2.Panel1.Controls.Add(this.comparisonComboBox);
-      // 
-      // comparisonComboBox
-      // 
-      this.comparisonComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.comparisonComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.comparisonComboBox.FormattingEnabled = true;
-      this.comparisonComboBox.Items.AddRange(new object[] {
-            "<",
-            "<=",
-            "=",
-            ">=",
-            ">",
-            "<>"});
-      this.comparisonComboBox.Location = new System.Drawing.Point(3, 2);
-      this.comparisonComboBox.Name = "comparisonComboBox";
-      this.comparisonComboBox.Size = new System.Drawing.Size(100, 21);
-      this.comparisonComboBox.TabIndex = 0;
-      this.comparisonComboBox.SelectedIndexChanged += new System.EventHandler(this.comparisonComboBox_SelectedIndexChanged);
-      // 
-      // OrdinalComparisonFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "OrdinalComparisonFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.ComboBox comparisonComboBox;
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/OrdinalComparisonFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/OrdinalComparisonFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,80 +1,0 @@
-#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.Clients.OKB {
-  [View("OrdinalComparisonFilter View")]
-  [Content(typeof(OrdinalComparisonFilter), true)]
-  public partial class OrdinalComparisonFilterView : FilterView {
-    public new OrdinalComparisonFilter Content {
-      get { return (OrdinalComparisonFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public OrdinalComparisonFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      comparisonComboBox.SelectedIndex = -1;
-      if (Content != null) {
-        if (Content.Comparison == OrdinalComparison.Less)
-          comparisonComboBox.SelectedItem = "<";
-        else if (Content.Comparison == OrdinalComparison.LessOrEqual)
-          comparisonComboBox.SelectedItem = "<=";
-        else if (Content.Comparison == OrdinalComparison.Equal)
-          comparisonComboBox.SelectedItem = "=";
-        else if (Content.Comparison == OrdinalComparison.GreaterOrEqual)
-          comparisonComboBox.SelectedItem = ">=";
-        else if (Content.Comparison == OrdinalComparison.Greater)
-          comparisonComboBox.SelectedItem = ">";
-        else if (Content.Comparison == OrdinalComparison.NotEqual)
-          comparisonComboBox.SelectedItem = "<>";
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      comparisonComboBox.Enabled = Content != null && !ReadOnly;
-    }
-
-    private void comparisonComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
-      if (Content != null) {
-        if (comparisonComboBox.SelectedItem == "<")
-          Content.Comparison = OrdinalComparison.Less;
-        else if (comparisonComboBox.SelectedItem == "<=")
-          Content.Comparison = OrdinalComparison.LessOrEqual;
-        else if (comparisonComboBox.SelectedItem == "=")
-          Content.Comparison = OrdinalComparison.Equal;
-        else if (comparisonComboBox.SelectedItem == ">=")
-          Content.Comparison = OrdinalComparison.GreaterOrEqual;
-        else if (comparisonComboBox.SelectedItem == ">")
-          Content.Comparison = OrdinalComparison.Greater;
-        else if (comparisonComboBox.SelectedItem == "<>")
-          Content.Comparison = OrdinalComparison.NotEqual;
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/OrdinalComparisonLongFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/OrdinalComparisonLongFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,116 +1,0 @@
-#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.Clients.OKB {
-  partial class OrdinalComparisonLongFilterView {
-    /// <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) {
-        if (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.components = new System.ComponentModel.Container();
-      this.valueTextBox = new System.Windows.Forms.TextBox();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
-      // 
-      // valueTextBox
-      // 
-      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
-      this.valueTextBox.Name = "valueTextBox";
-      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
-      this.valueTextBox.TabIndex = 0;
-      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
-      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
-      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
-      // 
-      // OrdinalComparisonLongFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "OrdinalComparisonLongFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      this.splitContainer2.Panel2.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox valueTextBox;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-
-
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/OrdinalComparisonLongFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/OrdinalComparisonLongFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,75 +1,0 @@
-#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.Clients.OKB {
-  [View("OrdinalComparisonLongFilter View")]
-  [Content(typeof(OrdinalComparisonLongFilter), true)]
-  public partial class OrdinalComparisonLongFilterView : OrdinalComparisonFilterView {
-    public new OrdinalComparisonLongFilter Content {
-      get { return (OrdinalComparisonLongFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public OrdinalComparisonLongFilterView() {
-      InitializeComponent();
-      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
-      errorProvider.SetIconPadding(valueTextBox, 2);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      valueTextBox.Text = Content == null ? string.Empty : Content.Value.ToString();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      valueTextBox.Enabled = Content != null;
-      valueTextBox.ReadOnly = ReadOnly;
-    }
-
-    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
-        label.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        valueTextBox.Text = Content.Value.ToString();
-        label.Focus();  // set focus on label to validate data
-      }
-    }
-    private void valueTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
-      long val;
-      if (!long.TryParse(valueTextBox.Text, out val)) {
-        e.Cancel = true;
-        errorProvider.SetError(valueTextBox, "Invalid Long Value");
-        valueTextBox.SelectAll();
-      }
-    }
-    private void valueTextBox_Validated(object sender, System.EventArgs e) {
-      if (Content != null) {
-        Content.Value = long.Parse(valueTextBox.Text);
-        errorProvider.SetError(valueTextBox, string.Empty);
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/ProblemDataView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/ProblemDataView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,254 +1,0 @@
-#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.Clients.OKB {
-  partial class ProblemDataView {
-    /// <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) {
-        if (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.components = new System.ComponentModel.Container();
-      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
-      this.groupBox = new System.Windows.Forms.GroupBox();
-      this.noViewAvailableLabel = new System.Windows.Forms.Label();
-      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.dataTypeComboBox = new System.Windows.Forms.ComboBox();
-      this.newDataButton = new System.Windows.Forms.Button();
-      this.saveFileButton = new System.Windows.Forms.Button();
-      this.openFileButton = new System.Windows.Forms.Button();
-      this.fileTextBox = new System.Windows.Forms.TextBox();
-      this.refreshDataButton = new System.Windows.Forms.Button();
-      this.storeDataButton = new System.Windows.Forms.Button();
-      this.dataTypeLabel = new System.Windows.Forms.Label();
-      this.fileLabel = new System.Windows.Forms.Label();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.groupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // openFileDialog
-      // 
-      this.openFileDialog.FileName = "data";
-      this.openFileDialog.Filter = "All Files (*.*)|*.*";
-      this.openFileDialog.Title = "Load Problem Data";
-      // 
-      // saveFileDialog
-      // 
-      this.saveFileDialog.FileName = "data";
-      this.saveFileDialog.Filter = "All Files (*.*)|*.*";
-      this.saveFileDialog.Title = "Save Problem Data";
-      // 
-      // groupBox
-      // 
-      this.groupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.groupBox.Controls.Add(this.noViewAvailableLabel);
-      this.groupBox.Controls.Add(this.viewHost);
-      this.groupBox.Location = new System.Drawing.Point(0, 83);
-      this.groupBox.Name = "groupBox";
-      this.groupBox.Size = new System.Drawing.Size(633, 371);
-      this.groupBox.TabIndex = 19;
-      this.groupBox.TabStop = false;
-      this.groupBox.Text = "Data:";
-      // 
-      // noViewAvailableLabel
-      // 
-      this.noViewAvailableLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.noViewAvailableLabel.AutoSize = true;
-      this.noViewAvailableLabel.Location = new System.Drawing.Point(269, 179);
-      this.noViewAvailableLabel.Name = "noViewAvailableLabel";
-      this.noViewAvailableLabel.Size = new System.Drawing.Size(94, 13);
-      this.noViewAvailableLabel.TabIndex = 1;
-      this.noViewAvailableLabel.Text = "No view available.";
-      this.noViewAvailableLabel.Visible = false;
-      // 
-      // viewHost
-      // 
-      this.viewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.viewHost.Caption = "View";
-      this.viewHost.Content = null;
-      this.viewHost.Enabled = true;
-      this.viewHost.Location = new System.Drawing.Point(6, 19);
-      this.viewHost.Name = "viewHost";
-      this.viewHost.ReadOnly = false;
-      this.viewHost.Size = new System.Drawing.Size(621, 346);
-      this.viewHost.TabIndex = 0;
-      this.viewHost.ViewType = null;
-      // 
-      // dataTypeComboBox
-      // 
-      this.dataTypeComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataTypeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.dataTypeComboBox.FormattingEnabled = true;
-      this.dataTypeComboBox.Location = new System.Drawing.Point(66, 30);
-      this.dataTypeComboBox.Name = "dataTypeComboBox";
-      this.dataTypeComboBox.Size = new System.Drawing.Size(567, 21);
-      this.dataTypeComboBox.TabIndex = 16;
-      this.dataTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.dataTypeComboBox_SelectedIndexChanged);
-      // 
-      // newDataButton
-      // 
-      this.newDataButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.NewDocument;
-      this.newDataButton.Location = new System.Drawing.Point(90, 0);
-      this.newDataButton.Name = "newDataButton";
-      this.newDataButton.Size = new System.Drawing.Size(24, 24);
-      this.newDataButton.TabIndex = 12;
-      this.toolTip.SetToolTip(this.newDataButton, "Create New Problem Data");
-      this.newDataButton.UseVisualStyleBackColor = true;
-      this.newDataButton.Click += new System.EventHandler(this.newDataButton_Click);
-      // 
-      // saveFileButton
-      // 
-      this.saveFileButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Save;
-      this.saveFileButton.Location = new System.Drawing.Point(150, 0);
-      this.saveFileButton.Name = "saveFileButton";
-      this.saveFileButton.Size = new System.Drawing.Size(24, 24);
-      this.saveFileButton.TabIndex = 14;
-      this.toolTip.SetToolTip(this.saveFileButton, "Save Problem Data into File");
-      this.saveFileButton.UseVisualStyleBackColor = true;
-      this.saveFileButton.Click += new System.EventHandler(this.saveFileButton_Click);
-      // 
-      // openFileButton
-      // 
-      this.openFileButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Open;
-      this.openFileButton.Location = new System.Drawing.Point(120, 0);
-      this.openFileButton.Name = "openFileButton";
-      this.openFileButton.Size = new System.Drawing.Size(24, 24);
-      this.openFileButton.TabIndex = 13;
-      this.toolTip.SetToolTip(this.openFileButton, "Load Problem Data from File");
-      this.openFileButton.UseVisualStyleBackColor = true;
-      this.openFileButton.Click += new System.EventHandler(this.openFileButton_Click);
-      // 
-      // fileTextBox
-      // 
-      this.fileTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.fileTextBox.Location = new System.Drawing.Point(66, 57);
-      this.fileTextBox.Name = "fileTextBox";
-      this.fileTextBox.ReadOnly = true;
-      this.fileTextBox.Size = new System.Drawing.Size(567, 20);
-      this.fileTextBox.TabIndex = 18;
-      // 
-      // refreshDataButton
-      // 
-      this.refreshDataButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
-      this.refreshDataButton.Location = new System.Drawing.Point(0, 0);
-      this.refreshDataButton.Name = "refreshDataButton";
-      this.refreshDataButton.Size = new System.Drawing.Size(24, 24);
-      this.refreshDataButton.TabIndex = 10;
-      this.toolTip.SetToolTip(this.refreshDataButton, "Refresh Problem Data from OKB");
-      this.refreshDataButton.UseVisualStyleBackColor = true;
-      this.refreshDataButton.Click += new System.EventHandler(this.refreshDataButton_Click);
-      // 
-      // storeDataButton
-      // 
-      this.storeDataButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.PublishToWeb;
-      this.storeDataButton.Location = new System.Drawing.Point(30, 0);
-      this.storeDataButton.Name = "storeDataButton";
-      this.storeDataButton.Size = new System.Drawing.Size(24, 24);
-      this.storeDataButton.TabIndex = 11;
-      this.toolTip.SetToolTip(this.storeDataButton, "Store Problem Data in OKB");
-      this.storeDataButton.UseVisualStyleBackColor = true;
-      this.storeDataButton.Click += new System.EventHandler(this.storeDataButton_Click);
-      // 
-      // dataTypeLabel
-      // 
-      this.dataTypeLabel.AutoSize = true;
-      this.dataTypeLabel.Location = new System.Drawing.Point(3, 33);
-      this.dataTypeLabel.Name = "dataTypeLabel";
-      this.dataTypeLabel.Size = new System.Drawing.Size(57, 13);
-      this.dataTypeLabel.TabIndex = 15;
-      this.dataTypeLabel.Text = "&DataType:";
-      // 
-      // fileLabel
-      // 
-      this.fileLabel.AutoSize = true;
-      this.fileLabel.Location = new System.Drawing.Point(3, 60);
-      this.fileLabel.Name = "fileLabel";
-      this.fileLabel.Size = new System.Drawing.Size(26, 13);
-      this.fileLabel.TabIndex = 17;
-      this.fileLabel.Text = "&File:";
-      // 
-      // ProblemDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.Controls.Add(this.groupBox);
-      this.Controls.Add(this.dataTypeComboBox);
-      this.Controls.Add(this.newDataButton);
-      this.Controls.Add(this.saveFileButton);
-      this.Controls.Add(this.openFileButton);
-      this.Controls.Add(this.fileTextBox);
-      this.Controls.Add(this.refreshDataButton);
-      this.Controls.Add(this.storeDataButton);
-      this.Controls.Add(this.dataTypeLabel);
-      this.Controls.Add(this.fileLabel);
-      this.Name = "ProblemDataView";
-      this.Size = new System.Drawing.Size(633, 454);
-      this.groupBox.ResumeLayout(false);
-      this.groupBox.PerformLayout();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.OpenFileDialog openFileDialog;
-    private System.Windows.Forms.SaveFileDialog saveFileDialog;
-    private System.Windows.Forms.GroupBox groupBox;
-    private System.Windows.Forms.Label noViewAvailableLabel;
-    private MainForm.WindowsForms.ViewHost viewHost;
-    private System.Windows.Forms.ComboBox dataTypeComboBox;
-    private System.Windows.Forms.Button newDataButton;
-    private System.Windows.Forms.Button saveFileButton;
-    private System.Windows.Forms.Button openFileButton;
-    private System.Windows.Forms.TextBox fileTextBox;
-    private System.Windows.Forms.Button refreshDataButton;
-    private System.Windows.Forms.Button storeDataButton;
-    private System.Windows.Forms.Label dataTypeLabel;
-    private System.Windows.Forms.Label fileLabel;
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/ProblemDataView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/ProblemDataView.cs	(revision 5603)
+++ 	(revision )
@@ -1,246 +1,0 @@
-#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;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.IO;
-using System.Linq;
-using System.Windows.Forms;
-using HeuristicLab.Common;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.Xml;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Clients.OKB {
-  [View("ProblemData View")]
-  [Content(typeof(ProblemData), true)]
-  public partial class ProblemDataView : AsynchronousContentView {
-    private List<DataType> dataTypeComboBoxValues;
-
-    private long problemId;
-    public long ProblemId {
-      get { return problemId; }
-      set {
-        problemId = value;
-        if (Content != null) {
-          Content.ProblemId = value;
-          SetEnabledStateOfControls();
-        }
-      }
-    }
-
-    public new ProblemData Content {
-      get { return (ProblemData)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public ProblemDataView() {
-      InitializeComponent();
-    }
-
-    protected override void OnInitialized(System.EventArgs e) {
-      base.OnInitialized(e);
-      dataTypeComboBoxValues = OKBClient.Instance.DataTypes.ToList();
-      dataTypeComboBox.DataSource = dataTypeComboBoxValues;
-      dataTypeComboBox.SelectedIndex = -1;
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.PropertyChanged -= new PropertyChangedEventHandler(Content_PropertyChanged);
-      base.DeregisterContentEvents();
-    }
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.PropertyChanged += new PropertyChangedEventHandler(Content_PropertyChanged);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        dataTypeComboBox.SelectedIndex = -1;
-        viewHost.Content = null;
-        noViewAvailableLabel.Visible = false;
-      } else {
-        dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
-
-        using (MemoryStream stream = new MemoryStream(Content.Data)) {
-          try {
-            viewHost.Content = XmlParser.Deserialize<IContent>(stream);
-            noViewAvailableLabel.Visible = false;
-          }
-          catch (Exception) {
-            viewHost.Content = null;
-            noViewAvailableLabel.Visible = true;
-          }
-          stream.Close();
-        }
-      }
-      fileTextBox.Text = "-";
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      newDataButton.Enabled = !ReadOnly;
-      openFileButton.Enabled = !ReadOnly;
-      saveFileButton.Enabled = (Content != null) && (((Content.Data != null) && (Content.Data.Length != 0)) || (viewHost.Content != null));
-      storeDataButton.Enabled = saveFileButton.Enabled && (Content.ProblemId != 0) && !ReadOnly;
-      dataTypeComboBox.Enabled = Content != null && viewHost.Content == null && !ReadOnly;
-      fileTextBox.Enabled = Content != null;
-      groupBox.Enabled = Content != null;
-    }
-
-    private void Content_PropertyChanged(object sender, PropertyChangedEventArgs e) {
-      switch (e.PropertyName) {
-        case "DataTypeId":
-          dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
-          break;
-      }
-    }
-
-    private void refreshDataButton_Click(object sender, EventArgs e) {
-      BeginAsyncCall();
-      var call = new Action(delegate() {
-        ProblemData data = OKBClient.Instance.GetProblemData(ProblemId);
-        Content = data;
-      });
-      call.BeginInvoke(delegate(IAsyncResult result) {
-        call.EndInvoke(result);
-        EndAsyncCall();
-      }, null);
-    }
-    private void storeDataButton_Click(object sender, EventArgs e) {
-      if (viewHost.Content != null) {
-        try {
-          using (MemoryStream stream = new MemoryStream()) {
-            IProblem problem = viewHost.Content as IProblem;
-            XmlGenerator.Serialize(problem, stream);
-            stream.Close();
-            Content.Data = stream.ToArray();
-          }
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-      OKBClient.Instance.UpdateProblemData(Content);
-    }
-    private void newDataButton_Click(object sender, EventArgs e) {
-      using (TypeSelectorDialog dialog = new TypeSelectorDialog()) {
-        dialog.Caption = "Select Problem";
-        dialog.TypeSelector.Caption = "Available Problems";
-        dialog.TypeSelector.Configure(typeof(IProblem), false, true);
-        if (dialog.ShowDialog(this) == DialogResult.OK) {
-          try {
-            if (Content == null) Content = new ProblemData { ProblemId = ProblemId };
-            viewHost.Content = (IContent)dialog.TypeSelector.CreateInstanceOfSelectedType();
-            DataType dataType = OKBClient.Instance.ConvertToDataType(viewHost.Content.GetType());
-            dataTypeComboBoxValues = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
-            dataTypeComboBox.DataSource = dataTypeComboBoxValues;
-            dataTypeComboBox.SelectedItem = dataType;
-            fileTextBox.Text = "-";
-            noViewAvailableLabel.Visible = false;
-            SetEnabledStateOfControls();
-          }
-          catch (Exception ex) {
-            ErrorHandling.ShowErrorDialog(this, ex);
-          }
-        }
-      }
-    }
-    private void openFileButton_Click(object sender, EventArgs e) {
-      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          if (Content == null) Content = new ProblemData { ProblemId = ProblemId };
-          IProblem problem = null;
-          try {
-            problem = XmlParser.Deserialize<IProblem>(openFileDialog.FileName);
-          }
-          catch (Exception) { }
-
-          if (problem != null) {
-            viewHost.Content = problem;
-            noViewAvailableLabel.Visible = false;
-            DataType dataType = OKBClient.Instance.ConvertToDataType(viewHost.Content.GetType());
-            dataTypeComboBoxValues = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
-            dataTypeComboBox.DataSource = dataTypeComboBoxValues;
-            dataTypeComboBox.SelectedItem = dataType;
-          } else {
-            viewHost.Content = null;
-            noViewAvailableLabel.Visible = true;
-            using (FileStream stream = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read)) {
-              byte[] bytes = new byte[stream.Length];
-              stream.Read(bytes, 0, bytes.Length);
-              stream.Close();
-              Content.Data = bytes;
-            }
-          }
-          fileTextBox.Text = openFileDialog.FileName;
-          SetEnabledStateOfControls();
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-    private void saveFileButton_Click(object sender, EventArgs e) {
-      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          if (viewHost.Content != null) {
-            XmlGenerator.Serialize(viewHost.Content, saveFileDialog.FileName);
-          } else {
-            using (FileStream stream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write)) {
-              stream.Write(Content.Data, 0, Content.Data.Length);
-              stream.Close();
-            }
-          }
-          fileTextBox.Text = saveFileDialog.FileName;
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-    private void dataTypeComboBox_SelectedIndexChanged(object sender, EventArgs e) {
-      if (Content != null) Content.DataTypeId = ((DataType)dataTypeComboBox.SelectedItem).Id;
-    }
-
-    private void BeginAsyncCall() {
-      if (InvokeRequired)
-        Invoke(new Action(BeginAsyncCall));
-      else {
-        Cursor = Cursors.AppStarting;
-        Enabled = false;
-      }
-    }
-    private void EndAsyncCall() {
-      if (InvokeRequired)
-        Invoke(new Action(EndAsyncCall));
-      else {
-        Cursor = Cursors.Default;
-        Enabled = true;
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/QueryView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/QueryView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,275 +1,0 @@
-#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.Clients.OKB {
-  partial class QueryView {
-    /// <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) {
-        if (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.components = new System.ComponentModel.Container();
-      this.refreshResultsButton = new System.Windows.Forms.Button();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.runCollectionView = new HeuristicLab.Optimization.Views.RunCollectionView();
-      this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.filtersGroupBox = new System.Windows.Forms.GroupBox();
-      this.filterPanel = new System.Windows.Forms.Panel();
-      this.resultsGroupBox = new System.Windows.Forms.GroupBox();
-      this.deserializeBlobsCheckBox = new System.Windows.Forms.CheckBox();
-      this.resultsInfoPanel = new System.Windows.Forms.Panel();
-      this.abortButton = new System.Windows.Forms.Button();
-      this.resultsProgressBar = new System.Windows.Forms.ProgressBar();
-      this.resultsInfoLabel = new System.Windows.Forms.Label();
-      this.filtersInfoPanel = new System.Windows.Forms.Panel();
-      this.filtersInfoLabel = new System.Windows.Forms.Label();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
-      this.splitContainer.Panel1.SuspendLayout();
-      this.splitContainer.Panel2.SuspendLayout();
-      this.splitContainer.SuspendLayout();
-      this.filtersGroupBox.SuspendLayout();
-      this.resultsGroupBox.SuspendLayout();
-      this.resultsInfoPanel.SuspendLayout();
-      this.filtersInfoPanel.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // refreshResultsButton
-      // 
-      this.refreshResultsButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
-      this.refreshResultsButton.Location = new System.Drawing.Point(6, 19);
-      this.refreshResultsButton.Name = "refreshResultsButton";
-      this.refreshResultsButton.Size = new System.Drawing.Size(24, 24);
-      this.refreshResultsButton.TabIndex = 0;
-      this.toolTip.SetToolTip(this.refreshResultsButton, "Refresh Results");
-      this.refreshResultsButton.UseVisualStyleBackColor = true;
-      this.refreshResultsButton.Click += new System.EventHandler(this.refreshResultsButton_Click);
-      // 
-      // runCollectionView
-      // 
-      this.runCollectionView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.runCollectionView.Caption = "RunCollection View";
-      this.runCollectionView.Content = null;
-      this.runCollectionView.Location = new System.Drawing.Point(6, 49);
-      this.runCollectionView.Name = "runCollectionView";
-      this.runCollectionView.ReadOnly = false;
-      this.runCollectionView.Size = new System.Drawing.Size(826, 223);
-      this.runCollectionView.TabIndex = 2;
-      // 
-      // splitContainer
-      // 
-      this.splitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.splitContainer.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer.Name = "splitContainer";
-      this.splitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
-      // 
-      // splitContainer.Panel1
-      // 
-      this.splitContainer.Panel1.Controls.Add(this.filtersGroupBox);
-      // 
-      // splitContainer.Panel2
-      // 
-      this.splitContainer.Panel2.Controls.Add(this.resultsGroupBox);
-      this.splitContainer.Size = new System.Drawing.Size(838, 567);
-      this.splitContainer.SplitterDistance = 282;
-      this.splitContainer.TabIndex = 0;
-      // 
-      // filtersGroupBox
-      // 
-      this.filtersGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.filtersGroupBox.Controls.Add(this.filterPanel);
-      this.filtersGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.filtersGroupBox.Name = "filtersGroupBox";
-      this.filtersGroupBox.Size = new System.Drawing.Size(838, 279);
-      this.filtersGroupBox.TabIndex = 0;
-      this.filtersGroupBox.TabStop = false;
-      this.filtersGroupBox.Text = "Filters";
-      // 
-      // filterPanel
-      // 
-      this.filterPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.filterPanel.Location = new System.Drawing.Point(6, 19);
-      this.filterPanel.Name = "filterPanel";
-      this.filterPanel.Size = new System.Drawing.Size(826, 254);
-      this.filterPanel.TabIndex = 0;
-      // 
-      // resultsGroupBox
-      // 
-      this.resultsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.resultsGroupBox.Controls.Add(this.deserializeBlobsCheckBox);
-      this.resultsGroupBox.Controls.Add(this.refreshResultsButton);
-      this.resultsGroupBox.Controls.Add(this.runCollectionView);
-      this.resultsGroupBox.Location = new System.Drawing.Point(0, 3);
-      this.resultsGroupBox.Name = "resultsGroupBox";
-      this.resultsGroupBox.Size = new System.Drawing.Size(838, 278);
-      this.resultsGroupBox.TabIndex = 0;
-      this.resultsGroupBox.TabStop = false;
-      this.resultsGroupBox.Text = "Results";
-      // 
-      // deserializeBlobsCheckBox
-      // 
-      this.deserializeBlobsCheckBox.AutoSize = true;
-      this.deserializeBlobsCheckBox.Checked = true;
-      this.deserializeBlobsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.deserializeBlobsCheckBox.Location = new System.Drawing.Point(62, 24);
-      this.deserializeBlobsCheckBox.Name = "deserializeBlobsCheckBox";
-      this.deserializeBlobsCheckBox.Size = new System.Drawing.Size(106, 17);
-      this.deserializeBlobsCheckBox.TabIndex = 1;
-      this.deserializeBlobsCheckBox.Text = "&Deserialize Blobs";
-      this.deserializeBlobsCheckBox.UseVisualStyleBackColor = true;
-      // 
-      // resultsInfoPanel
-      // 
-      this.resultsInfoPanel.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
-      this.resultsInfoPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-      this.resultsInfoPanel.Controls.Add(this.abortButton);
-      this.resultsInfoPanel.Controls.Add(this.resultsProgressBar);
-      this.resultsInfoPanel.Controls.Add(this.resultsInfoLabel);
-      this.resultsInfoPanel.Location = new System.Drawing.Point(238, 339);
-      this.resultsInfoPanel.Name = "resultsInfoPanel";
-      this.resultsInfoPanel.Size = new System.Drawing.Size(362, 87);
-      this.resultsInfoPanel.TabIndex = 1;
-      this.resultsInfoPanel.Visible = false;
-      // 
-      // abortButton
-      // 
-      this.abortButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.abortButton.Location = new System.Drawing.Point(3, 58);
-      this.abortButton.Name = "abortButton";
-      this.abortButton.Size = new System.Drawing.Size(354, 23);
-      this.abortButton.TabIndex = 2;
-      this.abortButton.Text = "&Abort";
-      this.abortButton.UseVisualStyleBackColor = true;
-      this.abortButton.Click += new System.EventHandler(this.abortButton_Click);
-      // 
-      // resultsProgressBar
-      // 
-      this.resultsProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.resultsProgressBar.Enabled = false;
-      this.resultsProgressBar.Location = new System.Drawing.Point(3, 29);
-      this.resultsProgressBar.Name = "resultsProgressBar";
-      this.resultsProgressBar.Size = new System.Drawing.Size(354, 23);
-      this.resultsProgressBar.Step = 1;
-      this.resultsProgressBar.TabIndex = 1;
-      // 
-      // resultsInfoLabel
-      // 
-      this.resultsInfoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.resultsInfoLabel.Enabled = false;
-      this.resultsInfoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.resultsInfoLabel.Location = new System.Drawing.Point(3, 3);
-      this.resultsInfoLabel.Name = "resultsInfoLabel";
-      this.resultsInfoLabel.Size = new System.Drawing.Size(354, 23);
-      this.resultsInfoLabel.TabIndex = 0;
-      this.resultsInfoLabel.Text = "Loading ...";
-      this.resultsInfoLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-      // 
-      // filtersInfoPanel
-      // 
-      this.filtersInfoPanel.Anchor = System.Windows.Forms.AnchorStyles.Top;
-      this.filtersInfoPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-      this.filtersInfoPanel.Controls.Add(this.filtersInfoLabel);
-      this.filtersInfoPanel.Enabled = false;
-      this.filtersInfoPanel.Location = new System.Drawing.Point(238, 136);
-      this.filtersInfoPanel.Name = "filtersInfoPanel";
-      this.filtersInfoPanel.Size = new System.Drawing.Size(362, 33);
-      this.filtersInfoPanel.TabIndex = 0;
-      this.filtersInfoPanel.Visible = false;
-      // 
-      // filtersInfoLabel
-      // 
-      this.filtersInfoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.filtersInfoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.filtersInfoLabel.Location = new System.Drawing.Point(3, 4);
-      this.filtersInfoLabel.Name = "filtersInfoLabel";
-      this.filtersInfoLabel.Size = new System.Drawing.Size(354, 23);
-      this.filtersInfoLabel.TabIndex = 0;
-      this.filtersInfoLabel.Text = "Loading Filters ...";
-      this.filtersInfoLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-      // 
-      // QueryView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.filtersInfoPanel);
-      this.Controls.Add(this.resultsInfoPanel);
-      this.Controls.Add(this.splitContainer);
-      this.Name = "QueryView";
-      this.Size = new System.Drawing.Size(838, 567);
-      this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
-      this.splitContainer.ResumeLayout(false);
-      this.filtersGroupBox.ResumeLayout(false);
-      this.resultsGroupBox.ResumeLayout(false);
-      this.resultsGroupBox.PerformLayout();
-      this.resultsInfoPanel.ResumeLayout(false);
-      this.filtersInfoPanel.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button refreshResultsButton;
-    private System.Windows.Forms.ToolTip toolTip;
-    private HeuristicLab.Optimization.Views.RunCollectionView runCollectionView;
-    private System.Windows.Forms.SplitContainer splitContainer;
-    private System.Windows.Forms.GroupBox filtersGroupBox;
-    private System.Windows.Forms.GroupBox resultsGroupBox;
-    private System.Windows.Forms.Panel filterPanel;
-    private System.Windows.Forms.CheckBox deserializeBlobsCheckBox;
-    private System.Windows.Forms.Panel resultsInfoPanel;
-    private System.Windows.Forms.ProgressBar resultsProgressBar;
-    private System.Windows.Forms.Label resultsInfoLabel;
-    private System.Windows.Forms.Button abortButton;
-    private System.Windows.Forms.Panel filtersInfoPanel;
-    private System.Windows.Forms.Label filtersInfoLabel;
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/QueryView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/QueryView.cs	(revision 5603)
+++ 	(revision )
@@ -1,184 +1,0 @@
-#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;
-using System.IO;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.Xml;
-
-namespace HeuristicLab.Clients.OKB {
-  [View("OKB Query")]
-  [Content(typeof(OKBClient), false)]
-  public sealed partial class QueryView : HeuristicLab.MainForm.WindowsForms.View {
-    private CancellationTokenSource cancellationTokenSource;
-    private CombinedFilterView combinedFilterView;
-
-    public QueryView() {
-      InitializeComponent();
-    }
-
-    protected override void OnInitialized(EventArgs e) {
-      base.OnInitialized(e);
-      LoadFiltersAsync();
-    }
-
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      resultsGroupBox.Enabled = combinedFilterView != null;
-    }
-
-    #region Load Filters
-    private void LoadFiltersAsync() {
-      Cursor = Cursors.AppStarting;
-      filtersInfoPanel.Visible = true;
-      splitContainer.Enabled = false;
-
-      Task<CombinedFilter> task = Task.Factory.StartNew<CombinedFilter>(() => {
-        return OKBClient.Instance.GetFilters().OfType<CombinedFilter>().Where(x => x.Operation == BooleanOperation.And).FirstOrDefault();
-      });
-      task.ContinueWith(t => {
-        CombinedFilter filter = t.Result;
-        Invoke(new Action(() => {
-          if (filter != null) {
-            combinedFilterView = (CombinedFilterView)MainFormManager.CreateView(typeof(CombinedFilterView));
-            combinedFilterView.Content = (CombinedFilter)filter.Clone();
-            Control control = (Control)combinedFilterView;
-            control.Dock = DockStyle.Fill;
-            filterPanel.Controls.Add(control);
-          }
-          filtersInfoPanel.Visible = false;
-          splitContainer.Enabled = true;
-          this.Cursor = Cursors.Default;
-          SetEnabledStateOfControls();
-        }));
-      });
-    }
-    #endregion
-
-    #region Load Results
-    private void LoadResultsAsync(int batchSize) {
-      bool deserialize = deserializeBlobsCheckBox.Checked;
-
-      Cursor = Cursors.AppStarting;
-      resultsInfoLabel.Text = "Loading Results ...";
-      resultsProgressBar.Value = 0;
-      resultsProgressBar.Step = batchSize;
-      abortButton.Enabled = true;
-      resultsInfoPanel.Visible = true;
-      splitContainer.Enabled = false;
-      cancellationTokenSource = new CancellationTokenSource();
-      CancellationToken cancellationToken = cancellationTokenSource.Token;
-
-      Task task = Task.Factory.StartNew(() => {
-        var ids = OKBClient.Instance.GetQueryResultIds(combinedFilterView.Content);
-        int idsCount = ids.Count();
-
-        Invoke(new Action(() => {
-          resultsInfoLabel.Text = "Loaded 0 of " + idsCount.ToString() + " Results ...";
-          resultsProgressBar.Maximum = idsCount;
-        }));
-
-        RunCollection runs = new RunCollection();
-        runs.CollectionReset += new Collections.CollectionItemsChangedEventHandler<IRun>(runs_CollectionReset);
-        runCollectionView.Content = runs;
-        while (ids.Count() > 0) {
-          cancellationToken.ThrowIfCancellationRequested();
-          runs.AddRange(OKBClient.Instance.GetQueryResults(ids.Take(batchSize)).Select(x => ConvertToOptimizationRun(x, deserialize)));
-          ids = ids.Skip(batchSize);
-          Invoke(new Action(() => {
-            resultsInfoLabel.Text = "Loaded " + runs.Count + " of " + idsCount.ToString() + " Results ...";
-            resultsProgressBar.PerformStep();
-          }));
-        }
-      }, cancellationToken);
-      task.ContinueWith(t => {
-        Invoke(new Action(() => {
-          cancellationTokenSource.Dispose();
-          cancellationTokenSource = null;
-          resultsInfoPanel.Visible = false;
-          splitContainer.Enabled = true;
-          this.Cursor = Cursors.Default;
-          SetEnabledStateOfControls();
-        }));
-      });
-    }
-
-    void runs_CollectionReset(object sender, Collections.CollectionItemsChangedEventArgs<IRun> e) {
-    }
-    #endregion
-
-    private void refreshResultsButton_Click(object sender, EventArgs e) {
-      LoadResultsAsync(10);
-    }
-
-    private void abortButton_Click(object sender, EventArgs e) {
-      if (cancellationTokenSource != null) cancellationTokenSource.Cancel();
-      abortButton.Enabled = false;
-    }
-
-    private Optimization.IRun ConvertToOptimizationRun(QueryResult queryResult, bool deserialize) {
-      Optimization.Run run = new Optimization.Run();
-      foreach (QueryValue value in queryResult.AlgorithmParameters)
-        run.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
-      foreach (QueryValue value in queryResult.ProblemParameters)
-        run.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
-      foreach (QueryValue value in queryResult.Results)
-        run.Results.Add(value.Name, ConvertToItem(value, deserialize));
-      return run;
-    }
-
-    private IItem ConvertToItem(QueryValue value, bool deserialize) {
-      if (value is QueryBlobValue) {
-        if (deserialize) {
-          IItem item = null;
-          using (MemoryStream stream = new MemoryStream(((QueryBlobValue)value).Value)) {
-            try {
-              item = XmlParser.Deserialize<IItem>(stream);
-            }
-            catch (Exception) { }
-            stream.Close();
-          }
-          return item != null ? item : new StringValue(((QueryBlobValue)value).DataTypeName);
-        } else {
-          return new StringValue(((QueryBlobValue)value).DataTypeName);
-        }
-      } else if (value is QueryBoolValue) {
-        return new BoolValue(((QueryBoolValue)value).Value);
-      } else if (value is QueryFloatValue) {
-        return new DoubleValue(((QueryFloatValue)value).Value);
-      } else if (value is QueryIntValue) {
-        return new IntValue((int)((QueryIntValue)value).Value);
-      } else if (value is QueryStringValue) {
-        return new StringValue(((QueryStringValue)value).Value);
-      }
-      return null;
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,107 +1,0 @@
-#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.Clients.OKB {
-  partial class SetComparisonFilterView {
-    /// <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) {
-        if (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.comparisonComboBox = new System.Windows.Forms.ComboBox();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.TabIndex = 0;
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel1
-      // 
-      this.splitContainer2.Panel1.Controls.Add(this.comparisonComboBox);
-      // 
-      // comparisonComboBox
-      // 
-      this.comparisonComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.comparisonComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.comparisonComboBox.FormattingEnabled = true;
-      this.comparisonComboBox.Items.AddRange(new object[] {
-            "=",
-            "<>",
-            "contains",
-            "not contains"});
-      this.comparisonComboBox.Location = new System.Drawing.Point(3, 2);
-      this.comparisonComboBox.Name = "comparisonComboBox";
-      this.comparisonComboBox.Size = new System.Drawing.Size(100, 21);
-      this.comparisonComboBox.TabIndex = 0;
-      this.comparisonComboBox.SelectedIndexChanged += new System.EventHandler(this.comparisonComboBox_SelectedIndexChanged);
-      // 
-      // SetComparisonFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "SetComparisonFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.ComboBox comparisonComboBox;
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,72 +1,0 @@
-#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.Clients.OKB {
-  [View("SetComparisonFilter View")]
-  [Content(typeof(SetComparisonFilter), true)]
-  public partial class SetComparisonFilterView : FilterView {
-    public new SetComparisonFilter Content {
-      get { return (SetComparisonFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public SetComparisonFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      comparisonComboBox.SelectedIndex = -1;
-      if (Content != null) {
-        if (Content.Comparison == SetComparison.Equal)
-          comparisonComboBox.SelectedItem = "=";
-        else if (Content.Comparison == SetComparison.NotEqual)
-          comparisonComboBox.SelectedItem = "<>";
-        else if (Content.Comparison == SetComparison.Contains)
-          comparisonComboBox.SelectedItem = "contains";
-        else if (Content.Comparison == SetComparison.NotContains)
-          comparisonComboBox.SelectedItem = "not contains";
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      comparisonComboBox.Enabled = Content != null && !ReadOnly;
-    }
-
-    private void comparisonComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
-      if (Content != null) {
-        if (comparisonComboBox.SelectedItem == "=")
-          Content.Comparison = SetComparison.Equal;
-        else if (comparisonComboBox.SelectedItem == "<>")
-          Content.Comparison = SetComparison.NotEqual;
-        else if (comparisonComboBox.SelectedItem == "contains")
-          Content.Comparison = SetComparison.Contains;
-        else if (comparisonComboBox.SelectedItem == "not contains")
-          Content.Comparison = SetComparison.NotContains;
-      }
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonStringAvailableValuesFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonStringAvailableValuesFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,106 +1,0 @@
-#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.Clients.OKB {
-  partial class SetComparisonStringAvailableValuesFilterView {
-    /// <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) {
-        if (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.valueComboBox = new System.Windows.Forms.ComboBox();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.valueComboBox);
-      // 
-      // valueComboBox
-      // 
-      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueComboBox.FormattingEnabled = true;
-      this.valueComboBox.Location = new System.Drawing.Point(3, 2);
-      this.valueComboBox.MaxDropDownItems = 32;
-      this.valueComboBox.Name = "valueComboBox";
-      this.valueComboBox.Size = new System.Drawing.Size(280, 21);
-      this.valueComboBox.TabIndex = 0;
-      this.valueComboBox.Validated += new System.EventHandler(this.valueComboBox_Validated);
-      // 
-      // SetComparisonStringAvailableValuesFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "SetComparisonStringAvailableValuesFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ComboBox valueComboBox;
-
-
-
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonStringAvailableValuesFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonStringAvailableValuesFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,65 +1,0 @@
-#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.Clients.OKB {
-  [View("SetComparisonStringAvailableValuesFilter View")]
-  [Content(typeof(SetComparisonStringAvailableValuesFilter), true)]
-  public partial class SetComparisonStringAvailableValuesFilterView : SetComparisonFilterView {
-    public new SetComparisonStringAvailableValuesFilter Content {
-      get { return (SetComparisonStringAvailableValuesFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public SetComparisonStringAvailableValuesFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      valueComboBox.DataSource = Content == null ? null : Content.AvailableValues;
-      valueComboBox.Text = Content == null ? string.Empty : Content.Value;
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      valueComboBox.Enabled = Content != null && !ReadOnly;
-    }
-
-    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
-        label.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        valueComboBox.Text = Content.Value;
-        label.Focus();  // set focus on label to validate data
-      }
-    }
-    private void valueComboBox_Validated(object sender, System.EventArgs e) {
-      if (Content != null) {
-        Content.Value = valueComboBox.Text;
-      }
-
-    }
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonStringFilterView.Designer.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonStringFilterView.Designer.cs	(revision 5603)
+++ 	(revision )
@@ -1,105 +1,0 @@
-#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.Clients.OKB {
-  partial class SetComparisonStringFilterView {
-    /// <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) {
-        if (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.valueTextBox = new System.Windows.Forms.TextBox();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      // 
-      // splitContainer2
-      // 
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
-      // 
-      // valueTextBox
-      // 
-      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
-      this.valueTextBox.Name = "valueTextBox";
-      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
-      this.valueTextBox.TabIndex = 0;
-      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
-      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
-      // 
-      // SetComparisonStringFilterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "SetComparisonStringFilterView";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      this.splitContainer2.Panel2.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox valueTextBox;
-
-
-
-
-
-  }
-}
Index: anches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonStringFilterView.cs
===================================================================
--- /branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/SetComparisonStringFilterView.cs	(revision 5603)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#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.Clients.OKB {
-  [View("SetComparisonStringFilter View")]
-  [Content(typeof(SetComparisonStringFilter), true)]
-  public partial class SetComparisonStringFilterView : SetComparisonFilterView {
-    public new SetComparisonStringFilter Content {
-      get { return (SetComparisonStringFilter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public SetComparisonStringFilterView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      valueTextBox.Text = Content == null ? string.Empty : Content.Value;
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      valueTextBox.Enabled = Content != null;
-      valueTextBox.ReadOnly = ReadOnly;
-    }
-
-    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
-        label.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        valueTextBox.Text = Content.Value;
-        label.Focus();  // set focus on label to validate data
-      }
-    }
-    private void valueTextBox_Validated(object sender, System.EventArgs e) {
-      if (Content != null) {
-        Content.Value = valueTextBox.Text;
-      }
-    }
-  }
-}
