public boolean performFinish()

in org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/internal/github/ui/RepositoryImportWizard.java [99:161]


	public boolean performFinish() {
		final SearchRepository[] repositories = repositorySearchWizardPage
				.getRepositories();
		String name = MessageFormat.format(
				Messages.RepositoryImportWizard_CloningRepositories,
				Integer.valueOf(repositories.length));
		Job job = new Job(name) {

			@Override
			protected IStatus run(IProgressMonitor monitor) {
				try {
					SubMonitor progress = SubMonitor.convert(monitor, name,
							repositories.length * 3);
					GitHubClient client = GitHub
							.configureClient(new GitHubClient());
					RepositoryService service = new RepositoryService(client);
					for (SearchRepository repo : repositories) {
						try {
							final String id = repo.getId();
							progress.subTask(MessageFormat.format(
									Messages.RepositoryImportWizard_CreatingOperation,
									id));
							CloneOperation op = createCloneOperation(repo,
									service);
							progress.worked(1);

							monitor.setTaskName(MessageFormat.format(
									Messages.RepositoryImportWizard_Cloning,
									id));
							op.run(progress.newChild(1));

							monitor.setTaskName(MessageFormat.format(
									Messages.RepositoryImportWizard_Registering,
									id));
							RepositoryUtil.INSTANCE
									.addConfiguredRepository(op.getGitDir());
							progress.worked(1);
						} catch (InvocationTargetException e) {
							GitHubUi.logError(e);
						} catch (InterruptedException e) {
							GitHubUi.logError(e);
						} catch (IOException e) {
							GitHubUi.logError(GitHubException.wrap(e));
						} catch (URISyntaxException e) {
							GitHubUi.logError(e);
						}
					}
					return Status.OK_STATUS;
				} finally {
					if (monitor != null) {
						monitor.done();
					}
				}
			}
		};
		IWorkbenchSiteProgressService progress = PlatformUI
				.getWorkbench().getService(IWorkbenchSiteProgressService.class);
		if (progress != null)
			progress.schedule(job);
		else
			job.schedule();
		return true;
	}