Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientInformationDialog.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientInformationDialog.Designer.cs	(revision 7932)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientInformationDialog.Designer.cs	(revision 7933)
@@ -24,5 +24,10 @@
     /// </summary>
     private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClientInformationDialog));
       this.clientView = new HeuristicLab.Clients.Access.Views.ClientView();
+      this.refreshButton = new System.Windows.Forms.Button();
+      this.okButton = new System.Windows.Forms.Button();
+      this.registerClientButton = new System.Windows.Forms.Button();
+      this.infoLabel = new System.Windows.Forms.Label();
       this.SuspendLayout();
       // 
@@ -33,9 +38,54 @@
       this.clientView.Caption = "Client View";
       this.clientView.Content = null;
-      this.clientView.Location = new System.Drawing.Point(12, 12);
+      this.clientView.Location = new System.Drawing.Point(12, 42);
       this.clientView.Name = "clientView";
       this.clientView.ReadOnly = false;
-      this.clientView.Size = new System.Drawing.Size(528, 452);
+      this.clientView.Size = new System.Drawing.Size(653, 315);
       this.clientView.TabIndex = 0;
+      // 
+      // refreshButton
+      // 
+      this.refreshButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
+      this.refreshButton.Location = new System.Drawing.Point(12, 12);
+      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);
+      // 
+      // okButton
+      // 
+      this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.okButton.Location = new System.Drawing.Point(590, 363);
+      this.okButton.Name = "okButton";
+      this.okButton.Size = new System.Drawing.Size(75, 23);
+      this.okButton.TabIndex = 2;
+      this.okButton.Text = "OK";
+      this.okButton.UseVisualStyleBackColor = true;
+      this.okButton.Click += new System.EventHandler(this.okButton_Click);
+      // 
+      // registerClientButton
+      // 
+      this.registerClientButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.registerClientButton.Location = new System.Drawing.Point(13, 362);
+      this.registerClientButton.Name = "registerClientButton";
+      this.registerClientButton.Size = new System.Drawing.Size(84, 23);
+      this.registerClientButton.TabIndex = 3;
+      this.registerClientButton.Text = "Register client";
+      this.registerClientButton.UseVisualStyleBackColor = true;
+      this.registerClientButton.Visible = false;
+      this.registerClientButton.Click += new System.EventHandler(this.registerClientButton_Click);
+      // 
+      // infoLabel
+      // 
+      this.infoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.infoLabel.AutoSize = true;
+      this.infoLabel.Location = new System.Drawing.Point(103, 367);
+      this.infoLabel.Name = "infoLabel";
+      this.infoLabel.Size = new System.Drawing.Size(434, 13);
+      this.infoLabel.TabIndex = 4;
+      this.infoLabel.Text = "Your client isn\'t registered yet. Click on the Register client button to use addi" +
+          "tional services.";
+      this.infoLabel.Visible = false;
       // 
       // ClientInformationDialog
@@ -43,5 +93,9 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(552, 345);
+      this.ClientSize = new System.Drawing.Size(677, 398);
+      this.Controls.Add(this.infoLabel);
+      this.Controls.Add(this.registerClientButton);
+      this.Controls.Add(this.okButton);
+      this.Controls.Add(this.refreshButton);
       this.Controls.Add(this.clientView);
       this.MaximizeBox = false;
@@ -54,4 +108,5 @@
       this.TopMost = true;
       this.ResumeLayout(false);
+      this.PerformLayout();
 
     }
@@ -60,4 +115,8 @@
 
     private ClientView clientView;
+    private System.Windows.Forms.Button refreshButton;
+    private System.Windows.Forms.Button okButton;
+    private System.Windows.Forms.Button registerClientButton;
+    private System.Windows.Forms.Label infoLabel;
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientInformationDialog.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientInformationDialog.cs	(revision 7932)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientInformationDialog.cs	(revision 7933)
@@ -20,4 +20,6 @@
 #endregion
 
+using System;
+using System.Threading.Tasks;
 using System.Windows.Forms;
 
@@ -28,8 +30,36 @@
     }
 
-    protected override void OnLoad(System.EventArgs e) {
-      base.OnLoad(e);
+    private void okButton_Click(object sender, System.EventArgs e) {
+      Close();
+    }
 
-      clientView.Content = ClientInformation.Instance.ClientInfo;
+    private void refreshButton_Click(object sender, System.EventArgs e) {
+      Refresh();
+    }
+
+    private void registerClientButton_Click(object sender, EventArgs e) {
+      using (ClientRegistrationDialog regDialog = new ClientRegistrationDialog()) {
+        regDialog.ShowDialog(this);
+        Refresh();
+      }
+    }
+
+    private void Refresh() {
+      clientView.StartProgressView();
+      Task.Factory.StartNew(new Action(delegate {
+        ClientInformation.Instance.Refresh();
+        clientView.Content = ClientInformation.Instance.ClientInfo;
+        clientView.FinishProgressView();
+        EnableRegistration();
+      }));
+    }
+
+    private void EnableRegistration() {
+      if (InvokeRequired) {
+        Invoke(new Action(EnableRegistration));
+      } else {
+        registerClientButton.Visible = !ClientInformation.Instance.ClientExists;
+        infoLabel.Visible = !ClientInformation.Instance.ClientExists;
+      }
     }
   }
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientView.Designer.cs	(revision 7932)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientView.Designer.cs	(revision 7933)
@@ -155,4 +155,5 @@
       this.txtName.Location = new System.Drawing.Point(110, 3);
       this.txtName.Name = "txtName";
+      this.txtName.ReadOnly = true;
       this.txtName.Size = new System.Drawing.Size(265, 20);
       this.txtName.TabIndex = 12;
@@ -164,4 +165,5 @@
       this.txtDescription.Location = new System.Drawing.Point(111, 29);
       this.txtDescription.Name = "txtDescription";
+      this.txtDescription.ReadOnly = true;
       this.txtDescription.Size = new System.Drawing.Size(264, 20);
       this.txtDescription.TabIndex = 13;
@@ -173,4 +175,5 @@
       this.txtVersion.Location = new System.Drawing.Point(111, 55);
       this.txtVersion.Name = "txtVersion";
+      this.txtVersion.ReadOnly = true;
       this.txtVersion.Size = new System.Drawing.Size(264, 20);
       this.txtVersion.TabIndex = 14;
@@ -182,4 +185,5 @@
       this.txtTimestamp.Location = new System.Drawing.Point(110, 107);
       this.txtTimestamp.Name = "txtTimestamp";
+      this.txtTimestamp.ReadOnly = true;
       this.txtTimestamp.Size = new System.Drawing.Size(265, 20);
       this.txtTimestamp.TabIndex = 15;
@@ -191,4 +195,5 @@
       this.txtMemory.Location = new System.Drawing.Point(110, 81);
       this.txtMemory.Name = "txtMemory";
+      this.txtMemory.ReadOnly = true;
       this.txtMemory.Size = new System.Drawing.Size(265, 20);
       this.txtMemory.TabIndex = 16;
@@ -200,4 +205,5 @@
       this.txtNumberOfCores.Location = new System.Drawing.Point(110, 133);
       this.txtNumberOfCores.Name = "txtNumberOfCores";
+      this.txtNumberOfCores.ReadOnly = true;
       this.txtNumberOfCores.Size = new System.Drawing.Size(265, 20);
       this.txtNumberOfCores.TabIndex = 17;
@@ -209,4 +215,5 @@
       this.txtClientType.Location = new System.Drawing.Point(111, 185);
       this.txtClientType.Name = "txtClientType";
+      this.txtClientType.ReadOnly = true;
       this.txtClientType.Size = new System.Drawing.Size(264, 20);
       this.txtClientType.TabIndex = 18;
@@ -218,4 +225,5 @@
       this.txtClientConfiguration.Location = new System.Drawing.Point(110, 237);
       this.txtClientConfiguration.Name = "txtClientConfiguration";
+      this.txtClientConfiguration.ReadOnly = true;
       this.txtClientConfiguration.Size = new System.Drawing.Size(265, 20);
       this.txtClientConfiguration.TabIndex = 19;
@@ -227,4 +235,5 @@
       this.txtProcessor.Location = new System.Drawing.Point(111, 159);
       this.txtProcessor.Name = "txtProcessor";
+      this.txtProcessor.ReadOnly = true;
       this.txtProcessor.Size = new System.Drawing.Size(264, 20);
       this.txtProcessor.TabIndex = 20;
@@ -236,4 +245,5 @@
       this.txtOS.Location = new System.Drawing.Point(111, 211);
       this.txtOS.Name = "txtOS";
+      this.txtOS.ReadOnly = true;
       this.txtOS.Size = new System.Drawing.Size(264, 20);
       this.txtOS.TabIndex = 21;
@@ -245,4 +255,5 @@
       this.txtPerformanceValue.Location = new System.Drawing.Point(110, 263);
       this.txtPerformanceValue.Name = "txtPerformanceValue";
+      this.txtPerformanceValue.ReadOnly = true;
       this.txtPerformanceValue.Size = new System.Drawing.Size(265, 20);
       this.txtPerformanceValue.TabIndex = 23;
@@ -263,4 +274,5 @@
       this.txtId.Location = new System.Drawing.Point(111, 289);
       this.txtId.Name = "txtId";
+      this.txtId.ReadOnly = true;
       this.txtId.Size = new System.Drawing.Size(264, 20);
       this.txtId.TabIndex = 25;
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientView.cs	(revision 7932)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/ClientViews/ClientView.cs	(revision 7933)
@@ -20,6 +20,8 @@
 #endregion
 
+using System;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.Clients.Access.Views {
@@ -31,4 +33,6 @@
       set { base.Content = value; }
     }
+
+    private ProgressView progressView;
 
     public ClientView() {
@@ -73,4 +77,28 @@
       }
     }
+
+    public void StartProgressView() {
+      if (InvokeRequired) {
+        Invoke(new Action(StartProgressView));
+      } else {
+        if (progressView == null) {
+          IProgress prog = new Progress();
+          prog.Status = "Downloading client information. Please be patient.";
+          progressView = new ProgressView(this, prog);
+        }
+      }
+    }
+
+    public void FinishProgressView() {
+      if (InvokeRequired) {
+        Invoke(new Action(FinishProgressView));
+      } else {
+        if (progressView != null) {
+          progressView.Finish();
+          progressView = null;
+          SetEnabledStateOfControls();
+        }
+      }
+    }
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/MenuItems/ClientInfoMenuItem.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/MenuItems/ClientInfoMenuItem.cs	(revision 7932)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Views/3.3/MenuItems/ClientInfoMenuItem.cs	(revision 7933)
@@ -32,12 +32,6 @@
     }
     public override void Execute() {
-      if (ClientInformation.Instance.ClientExists) {
-        using (ClientInformationDialog dialog = new ClientInformationDialog()) {
-          dialog.ShowDialog();
-        }
-      } else {
-        using (ClientRegistrationDialog regDialog = new ClientRegistrationDialog()) {
-          regDialog.ShowDialog();
-        }
+      using (ClientInformationDialog dialog = new ClientInformationDialog()) {
+        dialog.ShowDialog();
       }
     }
