public void taskActivated()

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);
		}
	}