1 /*******************************************************************************
2 * Copyright (c) 2011, 2018 Benjamin Muskalla and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License 2.0
5 * which accompanies this distribution, and is available at
6 * https://www.eclipse.org/legal/epl-2.0/
8 * SPDX-License-Identifier: EPL-2.0
11 * Benjamin Muskalla <bmuskalla@tasktop.com> - initial API and implementation
12 *******************************************************************************/
13 package org
.eclipse
.egit
.ui
.internal
;
15 import org
.eclipse
.core
.resources
.IResource
;
16 import org
.eclipse
.egit
.core
.AdapterUtils
;
17 import org
.eclipse
.egit
.ui
.internal
.clone
.ProjectRecord
;
18 import org
.eclipse
.egit
.ui
.internal
.commit
.RepositoryCommit
;
19 import org
.eclipse
.egit
.ui
.internal
.repository
.tree
.RefNode
;
20 import org
.eclipse
.egit
.ui
.internal
.repository
.tree
.RepositoryTreeNodeType
;
21 import org
.eclipse
.egit
.ui
.internal
.synchronize
.model
.GitModelBlob
;
22 import org
.eclipse
.egit
.ui
.internal
.synchronize
.model
.GitModelCache
;
23 import org
.eclipse
.egit
.ui
.internal
.synchronize
.model
.GitModelCommit
;
24 import org
.eclipse
.egit
.ui
.internal
.synchronize
.model
.GitModelRepository
;
25 import org
.eclipse
.egit
.ui
.internal
.synchronize
.model
.GitModelTree
;
26 import org
.eclipse
.egit
.ui
.internal
.synchronize
.model
.GitModelWorkingTree
;
27 import org
.eclipse
.jface
.resource
.JFaceResources
;
28 import org
.eclipse
.jface
.resource
.LocalResourceManager
;
29 import org
.eclipse
.jface
.resource
.ResourceManager
;
30 import org
.eclipse
.jface
.viewers
.DelegatingStyledCellLabelProvider
.IStyledLabelProvider
;
31 import org
.eclipse
.jface
.viewers
.LabelProvider
;
32 import org
.eclipse
.jface
.viewers
.StyledString
;
33 import org
.eclipse
.jgit
.lib
.Constants
;
34 import org
.eclipse
.jgit
.lib
.Ref
;
35 import org
.eclipse
.jgit
.lib
.Repository
;
36 import org
.eclipse
.swt
.graphics
.Image
;
37 import org
.eclipse
.ui
.PlatformUI
;
38 import org
.eclipse
.ui
.ide
.IDE
.SharedImages
;
39 import org
.eclipse
.ui
.model
.WorkbenchLabelProvider
;
42 * Common label provider for git related model objects
45 public class GitLabelProvider
extends LabelProvider
implements
46 IStyledLabelProvider
{
48 private ResourceManager imageCache
;
50 private LabelProvider workbenchLabelProvider
;
53 public String
getText(Object element
) {
54 return GitLabels
.getPlainShortLabelExtended(element
);
58 public Image
getImage(Object element
) {
59 if (element
instanceof Repository
) {
60 return UIIcons
.getImage(getImageCache(),
61 RepositoryTreeNodeType
.REPO
.getIcon());
64 if (element
instanceof RefNode
) {
65 return getRefIcon(((RefNode
) element
).getObject());
68 if (element
instanceof Ref
) {
69 return getRefIcon((Ref
) element
);
72 if (element
instanceof GitModelBlob
|| element
instanceof GitModelTree
) {
73 Object adapter
= AdapterUtils
.adapt(element
, IResource
.class);
74 return getWorkbenchLabelProvider().getImage(adapter
);
77 if (element
instanceof GitModelCommit
78 || element
instanceof GitModelCache
79 || element
instanceof GitModelWorkingTree
80 || element
instanceof RepositoryCommit
)
81 return getChangesetIcon();
83 if (element
instanceof GitModelRepository
)
84 return getImage(((GitModelRepository
) element
).getRepository());
86 if (element
instanceof ProjectRecord
)
87 return PlatformUI
.getWorkbench().getSharedImages()
88 .getImage(SharedImages
.IMG_OBJ_PROJECT
);
90 return super.getImage(element
);
94 public StyledString
getStyledText(Object element
) {
95 return GitLabels
.getStyledLabelExtendedSafe(element
);
99 * Returns the common icon for a changeset.
103 protected Image
getChangesetIcon() {
104 return getImageCache().createImage(UIIcons
.CHANGESET
);
107 private Image
getRefIcon(Ref ref
) {
108 String name
= ref
.getName();
109 if (name
.startsWith(Constants
.R_HEADS
)
110 || name
.startsWith(Constants
.R_REMOTES
)) {
111 return UIIcons
.getImage(getImageCache(),
112 RepositoryTreeNodeType
.REF
.getIcon());
113 } else if (name
.startsWith(Constants
.R_TAGS
)) {
114 return UIIcons
.getImage(getImageCache(),
115 RepositoryTreeNodeType
.TAG
.getIcon());
117 return UIIcons
.getImage(getImageCache(),
118 RepositoryTreeNodeType
.ADDITIONALREF
.getIcon());
122 private LabelProvider
getWorkbenchLabelProvider() {
123 if (workbenchLabelProvider
== null)
124 workbenchLabelProvider
= new WorkbenchLabelProvider();
125 return workbenchLabelProvider
;
128 private ResourceManager
getImageCache() {
129 if (imageCache
== null)
130 imageCache
= new LocalResourceManager(JFaceResources
.getResources());
135 public void dispose() {
137 if (imageCache
!= null)
138 imageCache
.dispose();
139 if(workbenchLabelProvider
!= null)
140 workbenchLabelProvider
.dispose();