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 * See LICENSE for the full license text, also available.
8 *******************************************************************************/
9 package org
.spearce
.egit
.ui
.internal
.decorators
;
11 import java
.io
.IOException
;
13 import java
.util
.WeakHashMap
;
15 import org
.eclipse
.core
.resources
.IResource
;
16 import org
.eclipse
.core
.runtime
.CoreException
;
17 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
18 import org
.eclipse
.jface
.text
.IDocument
;
19 import org
.eclipse
.team
.core
.RepositoryProvider
;
20 import org
.eclipse
.ui
.IEditorInput
;
21 import org
.eclipse
.ui
.ide
.ResourceUtil
;
22 import org
.eclipse
.ui
.texteditor
.ITextEditor
;
23 import org
.eclipse
.ui
.texteditor
.quickdiff
.IQuickDiffReferenceProvider
;
24 import org
.spearce
.egit
.ui
.Activator
;
25 import org
.spearce
.egit
.ui
.UIText
;
26 import org
.spearce
.jgit
.lib
.Repository
;
29 * This class provides input for the Eclipse Quick Diff feature.
31 public class GitQuickDiffProvider
implements IQuickDiffReferenceProvider
{
35 private GitDocument document
;
37 private IResource resource
;
39 static Map
<Repository
,String
> baseline
= new WeakHashMap
<Repository
,String
>();
42 * Create the GitQuickDiffProvider instance
44 public GitQuickDiffProvider() {
45 Activator
.trace("(GitQuickDiffProvider) constructor");
49 public void dispose() {
50 Activator
.trace("(GitQuickDiffProvider) dispose");
55 public String
getId() {
59 public IDocument
getReference(IProgressMonitor monitor
)
60 throws CoreException
{
61 Activator
.trace("(GitQuickDiffProvider) file: " + resource
);
64 RepositoryProvider provider
= RepositoryProvider
.getProvider(resource
66 if (provider
!= null) {
68 document
= GitDocument
.create(resource
);
69 } catch (IOException e
) {
70 Activator
.error(UIText
.QuickDiff_failedLoading
, e
);
78 public boolean isEnabled() {
82 public void setActiveEditor(ITextEditor editor
) {
83 Activator
.trace("(GitQuickDiffProvider) setActiveEditor: " + editor
.getTitle());
84 IEditorInput editorInput
= editor
.getEditorInput();
85 resource
= ResourceUtil
.getResource(editorInput
);
88 public void setId(String id
) {
93 * Set a new baseline for quickdiff
96 * @param baseline any commit reference, ref, symref or sha-1
99 public static void setBaselineReference(final Repository repository
, final String baseline
) throws IOException
{
100 GitQuickDiffProvider
.baseline
.put(repository
, baseline
);
101 GitDocument
.refreshRelevant(repository
);