	public final boolean performFinish() {
		final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
				this.repository.getKind());
		final String taskId = getTaskId();
		try {
			getContainer().run(true, false, new IRunnableWithProgress() {
				public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
					monitor.beginTask("Retrieving task...", IProgressMonitor.UNKNOWN);
					try {
						newTask = connector.createTaskFromExistingKey(repository, taskId, null);
						if (newTask instanceof AbstractRepositoryTask) {
							TasksUiPlugin.getSynchronizationManager().synchronize(connector, (AbstractRepositoryTask)newTask, true, null);
						}
					} catch (Exception e) {
						throw new InvocationTargetException(e);
					} finally {
						monitor.done();
					}
				}
			});
		} catch (InvocationTargetException e) {
			String message = e.getCause() != null ? e.getCause().getMessage() : "None provided";
			MessageDialog.openWarning(this.getShell(), "Add Existing Task Failed",
					"Unable to retrieve existing task from repository, error was: \n\n" + message);
		} catch (InterruptedException e) {
			return true;
		}
		if (newTask != null && TaskListView.getFromActivePerspective() != null) {
			Object selectedObject = ((IStructuredSelection) TaskListView.getFromActivePerspective().getViewer()
					.getSelection()).getFirstElement();
			if (selectedObject instanceof TaskCategory) {
				TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(((TaskCategory) selectedObject),
						newTask);
			} else {
				TasksUiPlugin.getTaskListManager().getTaskList().moveToRoot(newTask);
			}
			if (TaskListView.getFromActivePerspective() != null) {
				TaskListView.getFromActivePerspective().getViewer().setSelection(new StructuredSelection(newTask));
			}
			TaskUiUtil.openEditor(newTask, false);
		} else {
			MessageDialog.openWarning(this.getShell(), "Add Existing Task Failed",
					"Unable to retrieve task from repository.");
		}
		return true;
	}

	public final boolean performFinish() {
		final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
				this.repository.getKind());
		final String taskId = getTaskId();
		try {
			getContainer().run(true, false, new IRunnableWithProgress() {
				public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
					monitor.beginTask("Retrieving task...", IProgressMonitor.UNKNOWN);
					try {
						newTask = connector.createTaskFromExistingKey(repository, taskId, null);
						if (newTask instanceof AbstractRepositoryTask) {
							TasksUiPlugin.getSynchronizationManager().synchronize(connector, (AbstractRepositoryTask)newTask, true, null);
						}
					} catch (Exception e) {
						throw new InvocationTargetException(e);
					} finally {
						monitor.done();
					}
				}
			});
		} catch (InvocationTargetException e) {
			String message = e.getCause() != null ? e.getCause().getMessage() : "None provided";
			MessageDialog.openWarning(this.getShell(), "Add Existing Task Failed",
					"Unable to retrieve existing task from repository, error was: \n\n" + message);
			return false;
		} catch (InterruptedException e) {
			return true;
		}
		if (newTask != null && TaskListView.getFromActivePerspective() != null) {
			Object selectedObject = ((IStructuredSelection) TaskListView.getFromActivePerspective().getViewer()
					.getSelection()).getFirstElement();
			if (selectedObject instanceof TaskCategory) {
				TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(((TaskCategory) selectedObject),
						newTask);
			} else {
				TasksUiPlugin.getTaskListManager().getTaskList().moveToRoot(newTask);
			}
			if (TaskListView.getFromActivePerspective() != null) {
				TaskListView.getFromActivePerspective().getViewer().setSelection(new StructuredSelection(newTask));
			}
			TaskUiUtil.openEditor(newTask, false);
		} else {
			MessageDialog.openWarning(this.getShell(), "Add Existing Task Failed",
					"Unable to retrieve task from repository.");
		}
		return true;
	}
