in org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/internal/github/ui/pr/PullRequestContextSynchronizer.java [52:100]
public void taskActivated(ITask task) {
if (task == null)
return;
if (!PullRequestConnector.KIND.equals(task.getConnectorKind()))
return;
IInteractionContext context = ContextCore.getContextManager()
.getActiveContext();
if (context == null)
return;
try {
TaskData data = TasksUi.getTaskDataManager().getTaskData(task);
PullRequestComposite prComp = PullRequestConnector
.getPullRequest(data);
if (prComp == null)
return;
PullRequest request = prComp.getRequest();
Repository repository = PullRequestUtils.getRepository(request);
if (repository == null)
return;
try (RevWalk walk = new RevWalk(repository);
TreeWalk diffs = new TreeWalk(walk.getObjectReader())) {
diffs.setFilter(TreeFilter.ANY_DIFF);
diffs.setRecursive(true);
diffs.addTree(walk.parseCommit(
ObjectId.fromString(request.getHead().getSha())).getTree());
diffs.addTree(walk.parseCommit(
ObjectId.fromString(request.getBase().getSha())).getTree());
Set<IResource> resources = new HashSet<>();
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
String base = repository.getWorkTree().getAbsolutePath() + "/"; //$NON-NLS-1$
while (diffs.next()) {
IFile file = root.getFileForLocation(Path.fromOSString(base
+ diffs.getPathString()));
if (file != null)
resources.add(file);
}
if (!resources.isEmpty())
ResourcesUi.addResourceToContext(resources,
InteractionEvent.Kind.SELECTION);
}
} catch (MissingObjectException ignored) {
// Ignored
} catch (IOException e) {
GitHubUi.logError(e);
} catch (CoreException e) {
GitHubUi.logError(e);
}
}