in org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/internal/github/ui/gist/CloneGistHandler.java [140:197]
private Job createCloneJob(final ExecutionEvent event, final TaskData data) {
Job job = new Job(Messages.CloneGistHandler_TaskCloning) {
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
final String name = getGistName(data);
CloneOperation operation = createCloneOperation(data, name);
operation.addPostCloneTask(new PostCloneTask() {
@Override
public void execute(Repository repository,
IProgressMonitor monitor) throws CoreException {
if (monitor.isCanceled())
return;
monitor.setTaskName(Messages.CloneGistHandler_TaskRegisteringRepository);
RepositoryUtil.INSTANCE.addConfiguredRepository(
repository.getDirectory());
}
});
operation.addPostCloneTask(new PostCloneTask() {
@Override
public void execute(final Repository repository,
IProgressMonitor monitor) throws CoreException {
IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor)
throws CoreException {
if (monitor.isCanceled())
return;
createProject(repository.getDirectory()
.getParentFile(), name, repository,
monitor);
}
};
ResourcesPlugin.getWorkspace().run(runnable,
monitor);
}
});
operation.run(monitor);
} catch (Exception e) {
displayError(event, e);
Activator.logError("Error cloning gist", e); //$NON-NLS-1$
} finally {
fireHandlerChanged(new HandlerEvent(CloneGistHandler.this,
true, false));
}
return Status.OK_STATUS;
}
};
return job;
}