1 package org
.argeo
.slc
.client
.ui
.dist
.providers
;
3 import java
.text
.DateFormat
;
4 import java
.text
.SimpleDateFormat
;
7 import javax
.jcr
.Property
;
8 import javax
.jcr
.RepositoryException
;
10 import org
.argeo
.ArgeoException
;
11 import org
.argeo
.jcr
.JcrUtils
;
12 import org
.argeo
.slc
.client
.ui
.dist
.DistConstants
;
13 import org
.argeo
.slc
.client
.ui
.dist
.DistImages
;
14 import org
.argeo
.slc
.jcr
.SlcTypes
;
15 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
16 import org
.eclipse
.jface
.viewers
.ViewerCell
;
17 import org
.eclipse
.swt
.graphics
.Image
;
19 public class ArtifactLabelProvider
extends ColumnLabelProvider
implements
20 DistConstants
, SlcTypes
{
22 // To be able to change column order easily
23 public static final int COLUMN_TREE
= 0;
24 public static final int COLUMN_DATE
= 1;
25 public static final int COLUMN_SIZE
= 2;
28 protected static DateFormat timeFormatter
= new SimpleDateFormat(
31 public void update(ViewerCell cell
) {
32 int colIndex
= cell
.getColumnIndex();
33 Object element
= cell
.getElement();
34 cell
.setText(getColumnText(element
, colIndex
));
35 if (element
instanceof Node
&& colIndex
== 0) {
36 Node node
= (Node
) element
;
38 if (node
.isNodeType(SLC_ARTIFACT_BASE
))
39 cell
.setImage(DistImages
.IMG_ARTIFACT_BASE
);
40 else if (node
.isNodeType(SLC_ARTIFACT_VERSION_BASE
))
41 cell
.setImage(DistImages
.IMG_ARTIFACT_VERSION_BASE
);
42 } catch (RepositoryException e
) {
49 public Image
getImage(Object element
) {
51 if (element
instanceof Node
) {
52 Node node
= (Node
) element
;
54 if (node
.isNodeType(SLC_ARTIFACT_BASE
)) {
55 return DistImages
.IMG_ARTIFACT_BASE
;
56 } else if (node
.isNodeType(SLC_ARTIFACT_VERSION_BASE
)) {
57 return DistImages
.IMG_ARTIFACT_VERSION_BASE
;
59 } catch (RepositoryException e
) {
66 public String
getColumnText(Object element
, int columnIndex
) {
68 if (element
instanceof Node
) {
69 Node node
= (Node
) element
;
70 switch (columnIndex
) {
72 return node
.getName();
74 long size
= JcrUtils
.getNodeApproxSize(node
) / 1024;
76 return size
/ 1024 + " MB";
80 if (node
.hasProperty(Property
.JCR_LAST_MODIFIED
))
81 return timeFormatter
.format(node
82 .getProperty(Property
.JCR_LAST_MODIFIED
)
83 .getDate().getTime());
88 } catch (RepositoryException re
) {
89 throw new ArgeoException(
90 "Unexepected error while getting property values", re
);