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
;
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
;
30 * This class provides input for the Eclipse Quick Diff feature.
32 public class GitQuickDiffProvider
implements IQuickDiffReferenceProvider
{
36 private GitDocument document
;
38 private IResource resource
;
40 static Map
<Repository
,String
> baseline
= new WeakHashMap
<Repository
,String
>();
43 * Create the GitQuickDiffProvider instance
45 public GitQuickDiffProvider() {
46 Activator
.trace("(GitQuickDiffProvider) constructor");
50 public void dispose() {
51 Activator
.trace("(GitQuickDiffProvider) dispose");
56 public String
getId() {
60 public IDocument
getReference(IProgressMonitor monitor
)
61 throws CoreException
{
62 Activator
.trace("(GitQuickDiffProvider) file: " + resource
);
65 RepositoryProvider provider
= RepositoryProvider
.getProvider(resource
67 if (provider
!= null) {
69 document
= GitDocument
.create(resource
);
70 } catch (IOException e
) {
71 Activator
.error(UIText
.QuickDiff_failedLoading
, e
);
79 public boolean isEnabled() {
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
) {
94 * Set a new baseline for quickdiff
97 * @param baseline any commit reference, ref, symref or sha-1
100 public static void setBaselineReference(final Repository repository
, final String baseline
) throws IOException
{
101 GitQuickDiffProvider
.baseline
.put(repository
, baseline
);
102 GitDocument
.refreshRelevant(repository
);