Avoid NPE in QuickDiffProvider
[egit/imyousuf.git] / org.spearce.egit.ui / src / org / spearce / egit / ui / internal / decorators / GitQuickDiffProvider.java
blobb2d48cd50a6e1eb84dcd85effb32634cf76c2dc5
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;
12 import java.util.Map;
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;
28 /**
29 * This class provides input for the Eclipse Quick Diff feature.
31 public class GitQuickDiffProvider implements IQuickDiffReferenceProvider {
33 private String id;
35 private GitDocument document;
37 private IResource resource;
39 static Map<Repository,String> baseline = new WeakHashMap<Repository,String>();
41 /**
42 * Create the GitQuickDiffProvider instance
44 public GitQuickDiffProvider() {
45 Activator.trace("(GitQuickDiffProvider) constructor");
46 // Empty
49 public void dispose() {
50 Activator.trace("(GitQuickDiffProvider) dispose");
51 if (document != null)
52 document.dispose();
55 public String getId() {
56 return id;
59 public IDocument getReference(IProgressMonitor monitor)
60 throws CoreException {
61 Activator.trace("(GitQuickDiffProvider) file: " + resource);
62 if (resource == null)
63 return null;
64 RepositoryProvider provider = RepositoryProvider.getProvider(resource
65 .getProject());
66 if (provider != null) {
67 try {
68 document = GitDocument.create(resource);
69 } catch (IOException e) {
70 Activator.error(UIText.QuickDiff_failedLoading, e);
72 return document;
73 } else {
74 return null;
78 public boolean isEnabled() {
79 return true;
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) {
89 this.id = id;
92 /**
93 * Set a new baseline for quickdiff
95 * @param repository
96 * @param baseline any commit reference, ref, symref or sha-1
97 * @throws IOException
99 public static void setBaselineReference(final Repository repository, final String baseline) throws IOException {
100 GitQuickDiffProvider.baseline.put(repository, baseline);
101 GitDocument.refreshRelevant(repository);