2
* org.vcs.bazaar.eclipse (c) Vectrace 2006-jun-08
5
package org.vcs.bazaar.eclipse.team;
7
import org.eclipse.core.resources.IProject;
8
import org.eclipse.core.resources.IResource;
9
import org.eclipse.jface.viewers.IDecoration;
10
import org.eclipse.jface.viewers.ILabelProviderListener;
11
import org.eclipse.jface.viewers.ILightweightLabelDecorator;
12
import org.eclipse.jface.viewers.LabelProvider;
13
import org.eclipse.team.core.RepositoryProvider;
14
import org.eclipse.ui.IWorkbench;
15
import org.eclipse.ui.PlatformUI;
21
public class DecoratorStatus extends LabelProvider implements
22
ILightweightLabelDecorator {
27
public DecoratorStatus() {
29
// System.out.println("BazaarEclipsePlugin:DecoratorStatus.DecoratorStatus()");
32
public static void refresh() {
33
IWorkbench workbench = PlatformUI.getWorkbench();
34
String decoratorId = DecoratorStatus.class.getName();
35
workbench.getDecoratorManager().update(decoratorId);
41
* @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object,
42
* org.eclipse.jface.viewers.IDecoration)
45
public void decorate(Object element, IDecoration decoration) {
46
IResource objectResource;
47
IProject objectProject;
48
RepositoryProvider RepoProvider;
50
objectResource = (IResource) element;
51
if (objectResource == null) {
55
objectProject = objectResource.getProject();
56
if (RepositoryProvider.isShared(objectProject)) {
58
RepoProvider = RepositoryProvider.getProvider(objectProject);
59
if (!(RepoProvider instanceof BazaarTeamProvider)) {
60
// Resource not unsing this plugin
64
// Not a Shared Project
68
// Decorating a Project
69
if (objectResource.getType() == IResource.PROJECT) {
70
// decoration.addSuffix( "{PROJECT}" );
73
// Decorating a Folder
74
if (objectResource.getType() == IResource.FOLDER) {
75
// Folders should not be decorated..
76
// decoration.addSuffix( "{FOLDER}" );
79
if (objectResource.getType() == IResource.FILE) {
80
// Only files are decorated
81
// decoration.addPrefix("{nofile->}" );
86
proj = objectResource.getProject();
87
Repository = BazaarUtilities.getRepositoryPath(proj);
88
if (Repository == null) {
89
Repository = "."; // never leave this empty add a . to point
92
// Setup and run command
93
// System.out.println("hg --cwd " + Repository + " status");
95
FullPath = (objectResource.getLocation()).toString();
96
if (FullPath.indexOf(".bzr") == -1) // Do not decorate the stuff
99
String launchCmd[] = { BazaarUtilities.getBzrExecutable(), "status", FullPath };
100
String output = BazaarUtilities.ExecuteCommand(launchCmd, false);
101
if (output != null) {
102
if (output.length() != 0) {
103
// decoration.addSuffix( "{" + output.substring(0,1) +
105
// System.out.println("BazaarEclipsePlugin:DecoratorStatus.decorate("
106
// + element.toString() + ", "+ output.substring(0,1) +
108
decoration.addOverlay(DecoratorImages.getImageDescriptor(output));
110
// Managed and unchanged (No output from status)
111
// System.out.println("BazaarEclipsePlugin:DecoratorStatus.decorate("
112
// + element.toString() + ", No output (managed?))");
113
decoration.addOverlay(DecoratorImages.managedDescriptor);
119
// System.out.println("BazaarEclipsePlugin:DecoratorStatus.decorate(" +
120
// element.toString() + ", "+ decoration.toString() + ")");
126
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
128
public void addListener(ILabelProviderListener listener) {
129
// System.out.println("BazaarEclipsePlugin:DecoratorStatus.addListener()");
136
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
138
public void dispose() {
139
// System.out.println("BazaarEclipsePlugin:DecoratorStatus.dispose()");
146
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
149
public boolean isLabelProperty(Object element, String property) {
150
// System.out.println("BazaarEclipsePlugin:DecoratorStatus.isLabelProperty()");
157
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
159
public void removeListener(ILabelProviderListener listener) {
160
// System.out.println("BazaarEclipsePlugin:DecoratorStatus.removeListener()");