1 package org
.spearce
.egit
.ui
.internal
;
3 import java
.io
.ByteArrayInputStream
;
4 import java
.io
.IOException
;
5 import java
.io
.InputStream
;
7 import org
.eclipse
.compare
.BufferedContent
;
8 import org
.eclipse
.compare
.CompareUI
;
9 import org
.eclipse
.compare
.ITypedElement
;
10 import org
.eclipse
.compare
.structuremergeviewer
.IStructureComparator
;
11 import org
.eclipse
.core
.runtime
.CoreException
;
12 import org
.eclipse
.swt
.graphics
.Image
;
13 import org
.eclipse
.team
.core
.history
.IFileRevision
;
14 import org
.spearce
.egit
.core
.internal
.mapping
.GitFileRevision
;
15 import org
.spearce
.jgit
.lib
.FileTreeEntry
;
16 import org
.spearce
.jgit
.lib
.ObjectId
;
17 import org
.spearce
.jgit
.lib
.ObjectLoader
;
18 import org
.spearce
.jgit
.lib
.Tree
;
19 import org
.spearce
.jgit
.lib
.TreeEntry
;
21 public class GitResourceNode
extends BufferedContent
implements IStructureComparator
, ITypedElement
{
23 GitResourceNode
[] children
;
25 public GitResourceNode(TreeEntry e
) {
29 public GitResourceNode(IFileRevision file
) {
30 this(((GitFileRevision
)file
).getTreeEntry());
33 public Object
[] getChildren() {
36 if (entry
instanceof Tree
) {
39 children
= new GitResourceNode
[t
.memberCount()];
40 for (int i
=0; i
<children
.length
; ++i
) {
41 children
[i
] = new GitResourceNode(t
.members()[i
]);
43 } catch (IOException e
) {
44 // TODO: eclipse error handling
46 children
= new GitResourceNode
[0];
52 public boolean equals(Object obj
) {
53 return entry
.getId().equals(((GitResourceNode
)obj
).entry
.getId());
56 protected InputStream
createStream() throws CoreException
{
57 if (entry
instanceof FileTreeEntry
) {
59 ObjectId id
= entry
.getId();
60 ObjectLoader reader
= entry
.getRepository().openBlob(id
);
61 byte[] bytes
= reader
.getBytes();
62 return new ByteArrayInputStream(bytes
);
63 } catch (IOException e
) {
64 // TODO: eclipse error handling
72 public String
getName() {
74 return entry
.getFullName();
79 public Image
getImage() {
80 return CompareUI
.getImage(getType());
83 public String
getType() {
84 if (entry
instanceof Tree
)
85 return ITypedElement
.FOLDER_TYPE
;
88 String name
= entry
.getName();
90 int index
= name
.lastIndexOf('.');
92 return ""; //$NON-NLS-1$
93 if (index
== (name
.length() - 1))
94 return ""; //$NON-NLS-1$
95 return name
.substring(index
+ 1);