]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/SimpleDynamicPages.java
3 import java
.text
.DateFormat
;
4 import java
.text
.SimpleDateFormat
;
7 import javax
.jcr
.NodeIterator
;
8 import javax
.jcr
.Property
;
9 import javax
.jcr
.PropertyIterator
;
10 import javax
.jcr
.PropertyType
;
11 import javax
.jcr
.RepositoryException
;
12 import javax
.jcr
.Value
;
14 import org
.argeo
.jcr
.JcrUtils
;
15 import org
.eclipse
.rap
.rwt
.RWT
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.layout
.GridLayout
;
18 import org
.eclipse
.swt
.widgets
.Composite
;
19 import org
.eclipse
.swt
.widgets
.Control
;
20 import org
.eclipse
.swt
.widgets
.Label
;
22 public class SimpleDynamicPages
implements CmsUiProvider
{
25 public Control
createUi(Composite parent
, Node context
)
26 throws RepositoryException
{
28 throw new CmsException("Context cannot be null");
29 parent
.setLayout(new GridLayout(2, false));
32 if (!context
.getPath().equals("/")) {
33 new CmsLink("..", context
.getParent().getPath()).createUi(parent
,
35 new Label(parent
, SWT
.NONE
).setText(context
.getParent()
36 .getPrimaryNodeType().getName());
40 Label contextL
= new Label(parent
, SWT
.NONE
);
41 contextL
.setData(RWT
.MARKUP_ENABLED
, true);
42 contextL
.setText("<b>" + context
.getName() + "</b>");
43 new Label(parent
, SWT
.NONE
).setText(context
.getPrimaryNodeType()
47 // Label childrenL = new Label(parent, SWT.NONE);
48 // childrenL.setData(RWT.MARKUP_ENABLED, true);
49 // childrenL.setText("<i>Children:</i>");
50 // childrenL.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false,
53 for (NodeIterator nIt
= context
.getNodes(); nIt
.hasNext();) {
54 Node child
= nIt
.nextNode();
55 new CmsLink(child
.getName(), child
.getPath()).createUi(parent
,
58 new Label(parent
, SWT
.NONE
).setText(child
.getPrimaryNodeType()
63 // Label propsL = new Label(parent, SWT.NONE);
64 // propsL.setData(RWT.MARKUP_ENABLED, true);
65 // propsL.setText("<i>Properties:</i>");
66 // propsL.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false,
68 for (PropertyIterator pIt
= context
.getProperties(); pIt
.hasNext();) {
69 Property property
= pIt
.nextProperty();
71 Label label
= new Label(parent
, SWT
.NONE
);
72 label
.setText(property
.getName());
73 label
.setToolTipText(JcrUtils
74 .getPropertyDefinitionAsString(property
));
76 new Label(parent
, SWT
.NONE
).setText(getPropAsString(property
));
82 private String
getPropAsString(Property property
)
83 throws RepositoryException
{
85 DateFormat timeFormatter
= new SimpleDateFormat("");
86 if (property
.isMultiple()) {
87 result
= getMultiAsString(property
, ", ");
89 Value value
= property
.getValue();
90 if (value
.getType() == PropertyType
.BINARY
)
92 else if (value
.getType() == PropertyType
.DATE
)
93 result
= timeFormatter
.format(value
.getDate().getTime());
95 result
= value
.getString();
100 private String
getMultiAsString(Property property
, String separator
)
101 throws RepositoryException
{
102 if (separator
== null)
104 Value
[] values
= property
.getValues();
105 StringBuilder builder
= new StringBuilder();
106 for (Value val
: values
) {
107 String currStr
= val
.getString();
108 if (!"".equals(currStr
.trim()))
109 builder
.append(currStr
).append(separator
);
111 if (builder
.lastIndexOf(separator
) >= 0)
112 return builder
.substring(0, builder
.length() - separator
.length());
114 return builder
.toString();