Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/AccessAdministrationClient.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/AccessAdministrationClient.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/AccessAdministrationClient.cs	(revision 7614)
@@ -0,0 +1,143 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.Clients.Common;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.Access.Administration {
+  [Item("AccessAdministrationClient", "AccessAdministration client.")]
+  public class AccessAdministrationClient : IContent {
+    private static AccessAdministrationClient instance;
+    public static AccessAdministrationClient Instance {
+      get {
+        if (instance == null) instance = new AccessAdministrationClient();
+        return instance;
+      }
+    }
+
+    #region Properties
+    private ItemList<User> users;
+    public ItemList<User> Users {
+      get {
+        return users;
+      }
+    }
+    #endregion
+
+    private AccessAdministrationClient() { }
+
+    #region Refresh
+    public void Refresh() {
+      users = new ItemList<User>();
+      users.AddRange(CallAccessService<ItemList<User>>(s => new ItemList<User>(s.GetAllUsers())));
+    }
+
+    public void RefreshAsync(Action<Exception> exceptionCallback) {
+      var call = new Func<Exception>(delegate() {
+        try {
+          OnRefreshing();
+          Refresh();
+        }
+        catch (Exception ex) {
+          return ex;
+        }
+        finally {
+          OnRefreshed();
+        }
+        return null;
+      });
+      call.BeginInvoke(delegate(IAsyncResult result) {
+        Exception ex = call.EndInvoke(result);
+        if (ex != null) exceptionCallback(ex);
+      }, null);
+    }
+    public void ExecuteActionAsync(Action action, Action<Exception> exceptionCallback) {
+      var call = new Func<Exception>(delegate() {
+        try {
+          OnRefreshing();
+          action();
+        }
+        catch (Exception ex) {
+          return ex;
+        }
+        finally {
+          OnRefreshed();
+        }
+        return null;
+      });
+      call.BeginInvoke(delegate(IAsyncResult result) {
+        Exception ex = call.EndInvoke(result);
+        if (ex != null) exceptionCallback(ex);
+      }, null);
+    }
+    #endregion
+
+    public static void Store(IAccessItem item) {
+      //TODO: storing
+    }
+
+    #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);
+    }
+    #endregion
+
+    #region Helpers
+    public static void CallAccessService(Action<IAccessService> call) {
+      AccessServiceClient client = ClientFactory.CreateClient<AccessServiceClient, IAccessService>();
+      try {
+        call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    public static T CallAccessService<T>(Func<IAccessService, T> call) {
+      AccessServiceClient client = ClientFactory.CreateClient<AccessServiceClient, IAccessService>();
+      try {
+        return call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/HeuristicLab.Clients.Access.Administration-3.3.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/HeuristicLab.Clients.Access.Administration-3.3.csproj	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/HeuristicLab.Clients.Access.Administration-3.3.csproj	(revision 7614)
@@ -0,0 +1,218 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{C9CF6AE8-4637-4A75-9141-042F479B5D50}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Clients.Access.Administration</RootNamespace>
+    <AssemblyName>HeuristicLab.Clients.Access.Administration-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Algorithms.Benchmarks-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Algorithms.Benchmarks-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Clients.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Clients.Common-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core.Views-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimizer-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimizer-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AccessAdministrationClient.cs" />
+    <Compile Include="MenuItems\UserAdministrationMenuItem.cs" />
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Views\RefreshableUserListView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\RefreshableUserListView.Designer.cs">
+      <DependentUpon>RefreshableUserListView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\RefreshableView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\RefreshableView.Designer.cs">
+      <DependentUpon>RefreshableView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\UserAdministrationDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Views\UserAdministrationDialog.Designer.cs">
+      <DependentUpon>UserAdministrationDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\UserListView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\UserListView.Designer.cs">
+      <DependentUpon>UserListView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\UserView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\UserView.Designer.cs">
+      <DependentUpon>UserView.cs</DependentUpon>
+    </Compile>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.0">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Clients.Access.Views\3.3\HeuristicLab.Clients.Access.Views-3.3.csproj">
+      <Project>{FE856595-64CD-46DA-9CD2-FFF3E6B0D4F2}</Project>
+      <Name>HeuristicLab.Clients.Access.Views-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Clients.Access\3.3\HeuristicLab.Clients.Access-3.3.csproj">
+      <Project>{494F87F4-0F25-4D33-A382-10CDB2174D48}</Project>
+      <Name>HeuristicLab.Clients.Access-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <PropertyGroup>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/MenuItems/UserAdministrationMenuItem.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/MenuItems/UserAdministrationMenuItem.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/MenuItems/UserAdministrationMenuItem.cs	(revision 7614)
@@ -0,0 +1,42 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Access.Administration {
+  public class UserAdministrationMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "&User Administration"; }
+    }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "&Services", "&Access" }; }
+    }
+    public override void Execute() {
+      using (UserAdministrationDialog dialog = new UserAdministrationDialog()) {
+        dialog.ShowDialog();
+      }
+    }
+    public override int Position {
+      get { return 10000; }
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Plugin.cs.frame
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Plugin.cs.frame	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Plugin.cs.frame	(revision 7614)
@@ -0,0 +1,47 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Clients.Access.Administration {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Clients.Access.Administration plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Clients.Access.Administration", "3.3.6.$WCREV$")]
+  [PluginFile("HeuristicLab.Clients.Access.Administration-3.3.dll", PluginFileType.Assembly)]  
+  [PluginDependency("HeuristicLab.Clients.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Algorithms.Benchmarks", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Optimizer", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]  
+  [PluginDependency("HeuristicLab.Clients.Access", "3.3")]
+  [PluginDependency("HeuristicLab.Clients.Access.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  public class HeuristicLabClientsAccessAdministrationPlugin : PluginBase {
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Properties/AssemblyInfo.cs.frame	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Properties/AssemblyInfo.cs.frame	(revision 7614)
@@ -0,0 +1,57 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Services.Access.Administration")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2012 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("7032d7ba-4799-4708-803d-9f6cb3feed35")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.6.$WCREV$")]
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableUserListView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableUserListView.Designer.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableUserListView.Designer.cs	(revision 7614)
@@ -0,0 +1,59 @@
+﻿namespace HeuristicLab.Clients.Access.Administration {
+  partial class RefreshableUserListView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.userListView = new HeuristicLab.Clients.Access.Administration.UserListView();
+      this.SuspendLayout();
+      // 
+      // userListView
+      // 
+      this.userListView.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.userListView.Caption = "UserList View";
+      this.userListView.Content = null;
+      this.userListView.Location = new System.Drawing.Point(3, 33);
+      this.userListView.Name = "userListView";
+      this.userListView.ReadOnly = false;
+      this.userListView.Size = new System.Drawing.Size(559, 375);
+      this.userListView.TabIndex = 2;
+      // 
+      // RefreshableUserListView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.userListView);
+      this.Name = "RefreshableUserListView";
+      this.Size = new System.Drawing.Size(565, 411);
+      this.Controls.SetChildIndex(this.userListView, 0);
+      this.Controls.SetChildIndex(this.refreshButton, 0);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private UserListView userListView;
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableUserListView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableUserListView.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableUserListView.cs	(revision 7614)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Access.Administration {
+  public partial class RefreshableUserListView : RefreshableView {
+    public RefreshableUserListView() {
+      InitializeComponent();
+    }
+
+    protected override void RefreshData() {
+      Content.Refresh();
+      userListView.Content = Content.Users;
+    }
+
+
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableView.Designer.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableView.Designer.cs	(revision 7614)
@@ -0,0 +1,55 @@
+﻿namespace HeuristicLab.Clients.Access.Administration {
+  partial class RefreshableView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RefreshableView));
+      this.refreshButton = new System.Windows.Forms.Button();
+      this.SuspendLayout();
+      // 
+      // refreshButton
+      // 
+      this.refreshButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
+      this.refreshButton.Location = new System.Drawing.Point(3, 3);
+      this.refreshButton.Name = "refreshButton";
+      this.refreshButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshButton.TabIndex = 1;
+      this.refreshButton.UseVisualStyleBackColor = true;
+      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
+      // 
+      // RefreshableView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.refreshButton);
+      this.Name = "RefreshableView";
+      this.Size = new System.Drawing.Size(506, 254);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.Button refreshButton;
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableView.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/RefreshableView.cs	(revision 7614)
@@ -0,0 +1,80 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.Access.Administration {
+  [View("Refreshable View")]
+  [Content(typeof(AccessAdministrationClient), true)]
+  public partial class RefreshableView : AsynchronousContentView {
+    public new AccessAdministrationClient Content {
+      get { return (AccessAdministrationClient)base.Content; }
+      set { base.Content = value; }
+    }
+    public RefreshableView() {
+      InitializeComponent();
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.Refreshing -= new EventHandler(Content_Refreshing);
+      Content.Refreshed -= new EventHandler(Content_Refreshed);
+      base.DeregisterContentEvents();
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.Refreshing += new EventHandler(Content_Refreshing);
+      Content.Refreshed += new EventHandler(Content_Refreshed);
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      refreshButton.Enabled = Content != null;
+    }
+
+    protected virtual void Content_Refreshing(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_Refreshing), sender, e);
+      } else {
+        Cursor = Cursors.AppStarting;
+        refreshButton.Enabled = false;
+      }
+    }
+
+    protected virtual void Content_Refreshed(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_Refreshed), sender, e);
+      } else {
+        Cursor = Cursors.Default;
+        refreshButton.Enabled = true;
+      }
+    }
+
+    protected virtual void RefreshData() { }
+
+    protected void refreshButton_Click(object sender, System.EventArgs e) {
+      RefreshData();
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserAdministrationDialog.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserAdministrationDialog.Designer.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserAdministrationDialog.Designer.cs	(revision 7614)
@@ -0,0 +1,64 @@
+﻿namespace HeuristicLab.Clients.Access.Administration {
+  partial class UserAdministrationDialog {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form 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.refreshableUserListView = new HeuristicLab.Clients.Access.Administration.RefreshableUserListView();
+      this.SuspendLayout();
+      // 
+      // refreshableUserListView
+      // 
+      this.refreshableUserListView.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.refreshableUserListView.Caption = "View";
+      this.refreshableUserListView.Content = null;
+      this.refreshableUserListView.Location = new System.Drawing.Point(12, 12);
+      this.refreshableUserListView.Name = "refreshableUserListView";
+      this.refreshableUserListView.ReadOnly = false;
+      this.refreshableUserListView.Size = new System.Drawing.Size(782, 402);
+      this.refreshableUserListView.TabIndex = 0;
+      // 
+      // UserAdministrationDialog
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(806, 426);
+      this.Controls.Add(this.refreshableUserListView);
+      this.MaximizeBox = false;
+      this.MinimizeBox = false;
+      this.Name = "UserAdministrationDialog";
+      this.ShowIcon = false;
+      this.ShowInTaskbar = false;
+      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+      this.Text = "User Administration";
+      this.Load += new System.EventHandler(this.UserAdministrationDialog_Load);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private RefreshableUserListView refreshableUserListView;
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserAdministrationDialog.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserAdministrationDialog.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserAdministrationDialog.cs	(revision 7614)
@@ -0,0 +1,36 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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;
+
+namespace HeuristicLab.Clients.Access.Administration {
+  public partial class UserAdministrationDialog : Form {
+    public UserAdministrationDialog() {
+      InitializeComponent();
+    }
+
+    private void UserAdministrationDialog_Load(object sender, System.EventArgs e) {
+      if (!DesignMode) {
+        refreshableUserListView.Content = AccessAdministrationClient.Instance;
+      }
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserListView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserListView.Designer.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserListView.Designer.cs	(revision 7614)
@@ -0,0 +1,32 @@
+﻿namespace HeuristicLab.Clients.Access.Administration {
+  partial class UserListView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+    }
+
+    #endregion
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserListView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserListView.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserListView.cs	(revision 7614)
@@ -0,0 +1,36 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.Access.Administration {
+  [View("UserList View")]
+  [Content(typeof(IItemList<User>), true)]
+  public partial class UserListView : ItemListView<User> {
+    public UserListView() {
+      InitializeComponent();
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.Designer.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.Designer.cs	(revision 7614)
@@ -0,0 +1,90 @@
+﻿namespace HeuristicLab.Clients.Access.Administration {
+  partial class UserView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.label1 = new System.Windows.Forms.Label();
+      this.label2 = new System.Windows.Forms.Label();
+      this.userNameTextBox = new System.Windows.Forms.TextBox();
+      this.fullNameTextBox = new System.Windows.Forms.TextBox();
+      this.SuspendLayout();
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(3, 6);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(63, 13);
+      this.label1.TabIndex = 0;
+      this.label1.Text = "User Name:";
+      // 
+      // label2
+      // 
+      this.label2.AutoSize = true;
+      this.label2.Location = new System.Drawing.Point(3, 32);
+      this.label2.Name = "label2";
+      this.label2.Size = new System.Drawing.Size(57, 13);
+      this.label2.TabIndex = 1;
+      this.label2.Text = "Full Name:";
+      // 
+      // userNameTextBox
+      // 
+      this.userNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.userNameTextBox.Location = new System.Drawing.Point(72, 3);
+      this.userNameTextBox.Name = "userNameTextBox";
+      this.userNameTextBox.Size = new System.Drawing.Size(289, 20);
+      this.userNameTextBox.TabIndex = 2;
+      // 
+      // fullNameTextBox
+      // 
+      this.fullNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.fullNameTextBox.Location = new System.Drawing.Point(72, 29);
+      this.fullNameTextBox.Name = "fullNameTextBox";
+      this.fullNameTextBox.Size = new System.Drawing.Size(289, 20);
+      this.fullNameTextBox.TabIndex = 3;
+      // 
+      // UserView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.fullNameTextBox);
+      this.Controls.Add(this.userNameTextBox);
+      this.Controls.Add(this.label2);
+      this.Controls.Add(this.label1);
+      this.Name = "UserView";
+      this.Size = new System.Drawing.Size(364, 106);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.Label label2;
+    private System.Windows.Forms.TextBox userNameTextBox;
+    private System.Windows.Forms.TextBox fullNameTextBox;
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.cs	(revision 7614)
@@ -0,0 +1,50 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Clients.Access.Administration {
+  [View("User View")]
+  [Content(typeof(User), true)]
+  public partial class UserView : ItemView {
+    public new User Content {
+      get { return (User)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public UserView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+
+      if (Content == null) {
+        userNameTextBox.Clear();
+        fullNameTextBox.Clear();
+      } else {
+        userNameTextBox.Text = Content.UserName;
+        fullNameTextBox.Text = Content.FullName;
+      }
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/UserViews/UserInformationDialog.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/UserViews/UserInformationDialog.Designer.cs	(revision 7613)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/UserViews/UserInformationDialog.Designer.cs	(revision 7614)
@@ -67,4 +67,5 @@
       this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
       this.Text = "User Information";
+      this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.UserInformationDialog_FormClosing);
       this.ResumeLayout(false);
 
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/UserViews/UserInformationDialog.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/UserViews/UserInformationDialog.cs	(revision 7613)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/UserViews/UserInformationDialog.cs	(revision 7614)
@@ -32,5 +32,15 @@
       if (!DesignMode) {
         refreshableLightweightUserInformationView.Content = AccessClient.Instance;
+        AccessClient.Instance.Refreshing += new System.EventHandler(Instance_Refreshing);
+        AccessClient.Instance.Refreshed += new System.EventHandler(Instance_Refreshed);
       }
+    }
+
+    void Instance_Refreshed(object sender, System.EventArgs e) {
+      closeButton.Enabled = true;
+    }
+
+    void Instance_Refreshing(object sender, System.EventArgs e) {
+      closeButton.Enabled = false;
     }
 
@@ -38,4 +48,9 @@
       Close();
     }
+
+    private void UserInformationDialog_FormClosing(object sender, FormClosingEventArgs e) {
+      AccessClient.Instance.Refreshing -= new System.EventHandler(Instance_Refreshing);
+      AccessClient.Instance.Refreshed -= new System.EventHandler(Instance_Refreshed);
+    }
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/HeuristicLab.Clients.Access-3.3.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/HeuristicLab.Clients.Access-3.3.csproj	(revision 7613)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/HeuristicLab.Clients.Access-3.3.csproj	(revision 7614)
@@ -101,4 +101,5 @@
     <Compile Include="ServiceClients\ClientGroup.cs" />
     <Compile Include="ServiceClients\Client.cs" />
+    <Compile Include="ServiceClients\User.cs" />
     <Compile Include="ServiceClients\Role.cs" />
     <Compile Include="ServiceClients\Resource.cs" />
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/User.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/User.cs	(revision 7614)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/User.cs	(revision 7614)
@@ -0,0 +1,50 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.Access {
+  [Item("User ", "A user.")]
+  public partial class User {
+    protected User(User original, Cloner cloner)
+      : base(original, cloner) {
+      //TODO: add cloning
+      throw new NotImplementedException();
+    }
+
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.User; }
+    }
+
+    public User() { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new User(this, cloner);
+    }
+
+    public override string ToString() {
+      return UserName + "(" + FullName + ")";
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access.sln
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access.sln	(revision 7613)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access.sln	(revision 7614)
@@ -21,4 +21,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Clients.Access.Views-3.3", "HeuristicLab.Clients.Access.Views\3.3\HeuristicLab.Clients.Access.Views-3.3.csproj", "{FE856595-64CD-46DA-9CD2-FFF3E6B0D4F2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Clients.Access.Administration-3.3", "HeuristicLab.Clients.Access.Administration\3.3\HeuristicLab.Clients.Access.Administration-3.3.csproj", "{C9CF6AE8-4637-4A75-9141-042F479B5D50}"
 EndProject
 Global
@@ -95,4 +97,14 @@
 		{FE856595-64CD-46DA-9CD2-FFF3E6B0D4F2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{FE856595-64CD-46DA-9CD2-FFF3E6B0D4F2}.Release|x86.ActiveCfg = Release|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{C9CF6AE8-4637-4A75-9141-042F479B5D50}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 7613)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 7614)
@@ -143,5 +143,5 @@
 
     public void DeleteClient(DT.Client client) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
@@ -200,5 +200,5 @@
 
     public void DeleteClientGroup(DT.ClientGroup clientGroup) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
@@ -293,5 +293,5 @@
 
     public void DeleteClientLog(DT.ClientLog log) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
@@ -324,5 +324,5 @@
       }
 
-      if (aspUser == null || aspMembership == null) {
+      if (aspUser != null || aspMembership != null) {
         using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
           var query = from u in context.UserGroupBases.OfType<DA.User>()
@@ -444,4 +444,6 @@
 
     public IEnumerable<DT.User> GetAllUsers() {
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+
       List<Guid> accessUserGuids = null;
 
@@ -456,4 +458,6 @@
 
     public IEnumerable<DT.User> GetUsers(IEnumerable<Guid> ids) {
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+
       List<Guid> accessUserGuids = null;
 
@@ -490,5 +494,5 @@
 
     public DT.User AddUser(DT.User user) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       DA.User accessUser;
@@ -537,5 +541,5 @@
 
     public void DeleteUser(DT.User user) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       if (user.Id != null && user.Id != Guid.Empty) {
@@ -561,5 +565,5 @@
 
     public void UpdateUser(DT.User user) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       AddUser(user);
@@ -567,5 +571,5 @@
 
     public void AddUserToRole(DT.Role role, DT.User user) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       //TODO: usernames and rolenames have to be unique!
@@ -577,5 +581,5 @@
 
     public void RemoveUserFromRole(DT.Role role, DT.User user) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       MembershipUser msUser = Membership.GetUser((object)user.Id);
@@ -594,5 +598,5 @@
 
     public string ResetPassword(Guid userId) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       MembershipUser msUser = Membership.GetUser(userId);
@@ -653,5 +657,5 @@
 
     public void DeleteUserGroup(DT.UserGroup group) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
@@ -762,5 +766,5 @@
 
     public DT.Role AddRole(DT.Role role) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       Roles.CreateRole(role.Name);
@@ -769,5 +773,5 @@
 
     public void DeleteRole(DT.Role role) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       Roles.DeleteRole(role.Name);
@@ -800,5 +804,5 @@
 
     public void RemoveRoleFromGroup(DT.UserGroup userGroup, DT.Role role) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       Guid[] userIds;
@@ -830,5 +834,5 @@
 
     public IEnumerable<DT.ClientError> GetClientErrors() {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
@@ -840,5 +844,5 @@
 
     public IEnumerable<DT.ClientError> GetLastClientErrors(DateTime startDate) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
@@ -851,5 +855,5 @@
 
     public void DeleteError(DT.ClientError error) {
-      roleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
+      RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs	(revision 7613)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs	(revision 7614)
@@ -292,4 +292,5 @@
         FullName = source.FullName,
         UserName = aspUserSource.UserName,
+        //TODO: check if the roles and groups are include in source
         Roles = roles.Select(x => Convert.ToDto(x)).ToArray(),
         Groups = groups.Select(x => Convert.ToDto(x)).ToArray()
