Rename preference page
diff --git a/org.eclipse.userstorage.ui/User Storage IDE.launch b/org.eclipse.userstorage.ui/User Storage IDE.launch
index dccb826..ccf5a46 100644
--- a/org.eclipse.userstorage.ui/User Storage IDE.launch
+++ b/org.eclipse.userstorage.ui/User Storage IDE.launch
@@ -21,6 +21,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.eclipse.userstorage.ui.showServices=false"/>
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.sdk.ide"/>
 <booleanAttribute key="show_selected_only" value="false"/>
diff --git a/org.eclipse.userstorage.ui/plugin.xml b/org.eclipse.userstorage.ui/plugin.xml
index 6c204d3..bbb7894 100644
--- a/org.eclipse.userstorage.ui/plugin.xml
+++ b/org.eclipse.userstorage.ui/plugin.xml
@@ -21,7 +21,7 @@
       <page category="org.eclipse.ui.preferencePages.Workbench"
             class="org.eclipse.userstorage.ui.internal.ServicesPreferencePage"
             id="org.eclipse.userstorage.ui.ServicesPreferencePage"
-            name="User Storage"/>
+            name="User Storage Service"/>
    </extension>
 
 </plugin>
diff --git a/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/ServiceSelectorComposite.java b/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/ServiceSelectorComposite.java
index 9b8d98c..5ea99bc 100644
--- a/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/ServiceSelectorComposite.java
+++ b/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/ServiceSelectorComposite.java
@@ -143,4 +143,15 @@
     IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
     return (IStorageService)selection.getFirstElement();
   }
+
+  public static boolean isShowServices()
+  {
+    String property = System.getProperty("org.eclipse.userstorage.ui.showServices", "auto");
+    if ("auto".equalsIgnoreCase(property))
+    {
+      return IStorageService.Registry.INSTANCE.getServices().length > 1;
+    }
+  
+    return Boolean.parseBoolean(property);
+  }
 }
diff --git a/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/internal/ServicesPreferencePage.java b/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/internal/ServicesPreferencePage.java
index d7f1b29..3034d78 100644
--- a/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/internal/ServicesPreferencePage.java
+++ b/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/internal/ServicesPreferencePage.java
@@ -11,9 +11,11 @@
 package org.eclipse.userstorage.ui.internal;
 
 import org.eclipse.userstorage.IStorageService;
+import org.eclipse.userstorage.IStorageService.Registry;
 import org.eclipse.userstorage.internal.Credentials;
 import org.eclipse.userstorage.internal.StorageService;
 import org.eclipse.userstorage.internal.util.StringUtil;
+import org.eclipse.userstorage.ui.ServiceSelectorComposite;
 
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.layout.TableColumnLayout;
@@ -48,6 +50,8 @@
 {
   public static final String ID = "org.eclipse.userstorage.ui.ServicesPreferencePage";
 
+  private static final Registry REGISTRY = IStorageService.Registry.INSTANCE;
+
   private Map<IStorageService, Credentials> credentialsMap = new HashMap<IStorageService, Credentials>();
 
   private TableViewer servicesViewer;
@@ -62,7 +66,7 @@
 
   public ServicesPreferencePage()
   {
-    super("User Storage");
+    super("User Storage Service");
   }
 
   @Override
@@ -91,39 +95,42 @@
   @Override
   protected Control createContents(final Composite parent)
   {
+    final ServicesContentProvider contentProvider = ServiceSelectorComposite.isShowServices() ? new ServicesContentProvider() : null;
+
     final Composite mainArea = createArea(parent, 2);
     mainArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
     Composite leftArea = createArea(mainArea, 1);
     leftArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
-    Label servicesLabel = new Label(leftArea, SWT.NONE);
-    servicesLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-    servicesLabel.setText("Services:");
-
-    final ServicesContentProvider contentProvider = new ServicesContentProvider();
-
-    TableColumnLayout tableLayout = new TableColumnLayout();
-    Composite tableComposite = new Composite(leftArea, SWT.NONE);
-    tableComposite.setLayout(tableLayout);
-    tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-    servicesViewer = new TableViewer(tableComposite, SWT.BORDER);
-    servicesViewer.setContentProvider(contentProvider);
-    servicesViewer.setLabelProvider(new ServicesLabelProvider());
-    servicesViewer.setInput(IStorageService.Registry.INSTANCE);
-    servicesViewer.addSelectionChangedListener(new ISelectionChangedListener()
+    if (contentProvider != null)
     {
-      @Override
-      public void selectionChanged(SelectionChangedEvent event)
-      {
-        IStructuredSelection selection = (IStructuredSelection)event.getSelection();
-        setSelectedService((IStorageService)selection.getFirstElement());
-      }
-    });
+      Label servicesLabel = new Label(leftArea, SWT.NONE);
+      servicesLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+      servicesLabel.setText("Services:");
 
-    TableColumn tableColumn = new TableColumn(servicesViewer.getTable(), SWT.LEFT);
-    tableLayout.setColumnData(tableColumn, new ColumnWeightData(100));
+      TableColumnLayout tableLayout = new TableColumnLayout();
+      Composite tableComposite = new Composite(leftArea, SWT.NONE);
+      tableComposite.setLayout(tableLayout);
+      tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+      servicesViewer = new TableViewer(tableComposite, SWT.BORDER);
+      servicesViewer.setContentProvider(contentProvider);
+      servicesViewer.setLabelProvider(new ServicesLabelProvider());
+      servicesViewer.setInput(REGISTRY);
+      servicesViewer.addSelectionChangedListener(new ISelectionChangedListener()
+      {
+        @Override
+        public void selectionChanged(SelectionChangedEvent event)
+        {
+          IStructuredSelection selection = (IStructuredSelection)event.getSelection();
+          setSelectedService((IStorageService)selection.getFirstElement());
+        }
+      });
+
+      TableColumn tableColumn = new TableColumn(servicesViewer.getTable(), SWT.LEFT);
+      tableLayout.setColumnData(tableColumn, new ColumnWeightData(100));
+    }
 
     credentialsComposite = new CredentialsComposite(leftArea, SWT.NONE, 0, 0, false)
     {
@@ -141,108 +148,112 @@
 
     credentialsComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
 
-    Composite rightArea = createArea(mainArea, 1);
-    rightArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
-
-    new Label(rightArea, SWT.NONE);
-
-    addButton = new Button(rightArea, SWT.NONE);
-    addButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-    addButton.setText("Add...");
-    addButton.addSelectionListener(new SelectionAdapter()
+    if (contentProvider != null)
     {
-      @Override
-      public void widgetSelected(SelectionEvent e)
+      Composite rightArea = createArea(mainArea, 1);
+      rightArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+
+      new Label(rightArea, SWT.NONE);
+
+      addButton = new Button(rightArea, SWT.NONE);
+      addButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+      addButton.setText("Add...");
+      addButton.addSelectionListener(new SelectionAdapter()
       {
-        AddServiceDialog dialog = new AddServiceDialog(getShell());
-        if (dialog.open() == AddServiceDialog.OK)
+        @Override
+        public void widgetSelected(SelectionEvent e)
         {
-          String serviceLabel = dialog.getServiceLabel();
-          URI serviceURI = dialog.getServiceURI();
-          URI createAccountURI = dialog.getCreateAccountURI();
-          URI editAccountURI = dialog.getEditAccountURI();
-          URI recoverPasswordURI = dialog.getRecoverPasswordURI();
-
-          IStorageService.Registry.INSTANCE.addService(serviceLabel, serviceURI, createAccountURI, editAccountURI, recoverPasswordURI);
-        }
-      }
-    });
-
-    removeButton = new Button(rightArea, SWT.NONE);
-    removeButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-    removeButton.setText("Remove");
-    removeButton.addSelectionListener(new SelectionAdapter()
-    {
-      @Override
-      public void widgetSelected(SelectionEvent e)
-      {
-        if (selectedService instanceof IStorageService.Dynamic)
-        {
-          IStorageService.Dynamic dynamicService = (IStorageService.Dynamic)selectedService;
-          Object[] elements = contentProvider.getElements(null);
-          final int currentIndex = getCurrentIndex(elements, dynamicService);
-
-          if (MessageDialog.openQuestion(getShell(), "Remove Service", "Do you really want to remove the '" + dynamicService.getServiceLabel() + "' service?"))
+          AddServiceDialog dialog = new AddServiceDialog(getShell());
+          if (dialog.open() == AddServiceDialog.OK)
           {
-            dynamicService.remove();
+            String serviceLabel = dialog.getServiceLabel();
+            URI serviceURI = dialog.getServiceURI();
+            URI createAccountURI = dialog.getCreateAccountURI();
+            URI editAccountURI = dialog.getEditAccountURI();
+            URI recoverPasswordURI = dialog.getRecoverPasswordURI();
 
-            final Control control = servicesViewer.getControl();
-            control.getDisplay().asyncExec(new Runnable()
+            REGISTRY.addService(serviceLabel, serviceURI, createAccountURI, editAccountURI, recoverPasswordURI);
+          }
+        }
+      });
+
+      removeButton = new Button(rightArea, SWT.NONE);
+      removeButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+      removeButton.setText("Remove");
+      removeButton.addSelectionListener(new SelectionAdapter()
+      {
+        @Override
+        public void widgetSelected(SelectionEvent e)
+        {
+          if (selectedService instanceof IStorageService.Dynamic)
+          {
+            IStorageService.Dynamic dynamicService = (IStorageService.Dynamic)selectedService;
+            Object[] elements = contentProvider.getElements(null);
+            final int currentIndex = getCurrentIndex(elements, dynamicService);
+
+            if (MessageDialog.openQuestion(getShell(), "Remove Service",
+                "Do you really want to remove the '" + dynamicService.getServiceLabel() + "' service?"))
             {
-              @Override
-              public void run()
-              {
-                if (!control.isDisposed())
-                {
-                  Object[] elements = contentProvider.getElements(null);
-                  if (elements.length != 0)
-                  {
-                    int newIndex = currentIndex;
-                    if (newIndex >= elements.length)
-                    {
-                      newIndex = elements.length - 1;
-                    }
+              dynamicService.remove();
 
-                    setSelectedService((IStorageService)elements[newIndex]);
+              final Control control = servicesViewer.getControl();
+              control.getDisplay().asyncExec(new Runnable()
+              {
+                @Override
+                public void run()
+                {
+                  if (!control.isDisposed())
+                  {
+                    Object[] elements = contentProvider.getElements(null);
+                    if (elements.length != 0)
+                    {
+                      int newIndex = currentIndex;
+                      if (newIndex >= elements.length)
+                      {
+                        newIndex = elements.length - 1;
+                      }
+
+                      setSelectedService((IStorageService)elements[newIndex]);
+                    }
                   }
                 }
-              }
-            });
+              });
+            }
           }
         }
-      }
 
-      private int getCurrentIndex(Object[] elements, IStorageService service)
-      {
-        for (int i = 0; i < elements.length; i++)
+        private int getCurrentIndex(Object[] elements, IStorageService service)
         {
-          Object element = elements[i];
-          if (element == service)
+          for (int i = 0; i < elements.length; i++)
           {
-            return i;
+            Object element = elements[i];
+            if (element == service)
+            {
+              return i;
+            }
           }
+
+          return 0;
         }
+      });
 
-        return 0;
-      }
-    });
-
-    Button refreshButton = new Button(rightArea, SWT.NONE);
-    refreshButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-    refreshButton.setText("Refresh");
-    refreshButton.addSelectionListener(new SelectionAdapter()
-    {
-      @Override
-      public void widgetSelected(SelectionEvent e)
+      Button refreshButton = new Button(rightArea, SWT.NONE);
+      refreshButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+      refreshButton.setText("Refresh");
+      refreshButton.addSelectionListener(new SelectionAdapter()
       {
-        IStorageService.Registry.INSTANCE.refresh();
-      }
-    });
+        @Override
+        public void widgetSelected(SelectionEvent e)
+        {
+          REGISTRY.refresh();
+        }
+      });
 
-    Object[] elements = contentProvider.getElements(null);
-    if (elements.length != 0)
-    {
-      setSelectedService((IStorageService)elements[0]);
+      Object[] elements = contentProvider.getElements(null);
+      if (elements.length != 0)
+      {
+        setSelectedService((IStorageService)elements[0]);
+      }
     }
 
     return mainArea;
@@ -321,7 +332,7 @@
   private void updateEnablement()
   {
     boolean dirty = false;
-    for (IStorageService service : IStorageService.Registry.INSTANCE.getServices())
+    for (IStorageService service : REGISTRY.getServices())
     {
       Credentials localCredentials = credentialsMap.get(service);
       String localUsername = "";