private void show() {
    final IServerInternal server =
        (IServerInternal)
            ((SimpleUserNode) viewer.getTreeSelection().getFirstElement()).getRealObject();
    final RelationDataLoader dataLoader = new RelationDataLoader();
    WorkspaceJob loadDataAndShowWizardJob =
        new WorkspaceJob("Loading relations from server '" + server.getName() + "'") {
          @Override
          public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
            final List<RelationData> relationData = dataLoader.loadData(server, monitor);
            if (!dataLoader.isCanceled()) {
              Collections.sort(relationData);

              monitor.done();
              Display.getDefault()
                  .syncExec(
                      new Runnable() {
                        public void run() {
                          if (relationData.size() > 0) {
                            LoadRelationsWizard loadRelationsWizard =
                                new LoadRelationsWizard(relationData);
                            loadRelationsWizard.init(
                                PlatformUI.getWorkbench(), viewer.getTreeSelection());

                            WizardDialog dialog =
                                new WizardDialog(
                                    PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
                                    loadRelationsWizard);
                            dialog.create();
                            dialog.open();
                          } else {
                            MessageDialog.openInformation(
                                Display.getDefault().getActiveShell(),
                                "Load relations",
                                "No relation was found in server '" + server.getName() + "'.");
                          }
                        }
                      });
              return Status.OK_STATUS;
            } else {
              return Status.CANCEL_STATUS;
            }
          }

          @Override
          protected void canceling() {
            dataLoader.setCanceled(true);
          }
        };

    loadDataAndShowWizardJob.setUser(true);
    loadDataAndShowWizardJob.schedule();
  }