Initial EGit contribution to eclipse.org
[egit.git] / org.eclipse.egit.ui / src / org / eclipse / egit / ui / internal / decorators / GitQuickDiffProvider.java
blobb8920f96a22510fba5c38ae2add7dbc1b05e3dad
1 /*******************************************************************************
2 * Copyright (C) 2007, Robin Rosenberg <robin.rosenberg@dewire.com>
3 * Copyright (C) 2007, Shawn O. Pearce <spearce@spearce.org>
5 * All rights reserved. This program and the accompanying materials
6 * are made available under the terms of the Eclipse Public License v1.0
7 * which accompanies this distribution, and is available at
8 * http://www.eclipse.org/legal/epl-v10.html
9 *******************************************************************************/
10 package org.eclipse.egit.ui.internal.decorators;
12 import java.io.IOException;
13 import java.util.Map;
14 import java.util.WeakHashMap;
16 import org.eclipse.core.resources.IResource;
17 import org.eclipse.core.runtime.CoreException;
18 import org.eclipse.core.runtime.IProgressMonitor;
19 import org.eclipse.egit.ui.Activator;
20 import org.eclipse.egit.ui.UIText;
21 import org.eclipse.jface.text.IDocument;
22 import org.eclipse.team.core.RepositoryProvider;
23 import org.eclipse.ui.IEditorInput;
24 import org.eclipse.ui.ide.ResourceUtil;
25 import org.eclipse.ui.texteditor.ITextEditor;
26 import org.eclipse.ui.texteditor.quickdiff.IQuickDiffReferenceProvider;
27 import org.eclipse.jgit.lib.Repository;
29 /**
30 * This class provides input for the Eclipse Quick Diff feature.
32 public class GitQuickDiffProvider implements IQuickDiffReferenceProvider {
34 private String id;
36 private GitDocument document;
38 private IResource resource;
40 static Map<Repository,String> baseline = new WeakHashMap<Repository,String>();
42 /**
43 * Create the GitQuickDiffProvider instance
45 public GitQuickDiffProvider() {
46 Activator.trace("(GitQuickDiffProvider) constructor");
47 // Empty
50 public void dispose() {
51 Activator.trace("(GitQuickDiffProvider) dispose");
52 if (document != null)
53 document.dispose();
56 public String getId() {
57 return id;
60 public IDocument getReference(IProgressMonitor monitor)
61 throws CoreException {
62 Activator.trace("(GitQuickDiffProvider) file: " + resource);
63 if (resource == null)
64 return null;
65 RepositoryProvider provider = RepositoryProvider.getProvider(resource
66 .getProject());
67 if (provider != null) {
68 try {
69 document = GitDocument.create(resource);
70 } catch (IOException e) {
71 Activator.error(UIText.QuickDiff_failedLoading, e);
73 return document;
74 } else {
75 return null;
79 public boolean isEnabled() {
80 return true;
83 public void setActiveEditor(ITextEditor editor) {
84 Activator.trace("(GitQuickDiffProvider) setActiveEditor: " + editor.getTitle());
85 IEditorInput editorInput = editor.getEditorInput();
86 resource = ResourceUtil.getResource(editorInput);
89 public void setId(String id) {
90 this.id = id;
93 /**
94 * Set a new baseline for quickdiff
96 * @param repository
97 * @param baseline any commit reference, ref, symref or sha-1
98 * @throws IOException
100 public static void setBaselineReference(final Repository repository, final String baseline) throws IOException {
101 GitQuickDiffProvider.baseline.put(repository, baseline);
102 GitDocument.refreshRelevant(repository);