Add a core bundle to keep separation between Workbench and web clean
[gpl/argeo-suite.git] / org.argeo.suite.workbench.rap / src / org / argeo / suite / workbench / fs / FsSingleColumnLabelProvider.java
diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/fs/FsSingleColumnLabelProvider.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/fs/FsSingleColumnLabelProvider.java
new file mode 100644 (file)
index 0000000..d3c62ff
--- /dev/null
@@ -0,0 +1,56 @@
+package org.argeo.suite.workbench.fs;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.nodetype.NodeType;
+
+import org.argeo.connect.people.PeopleNames;
+import org.argeo.connect.ui.ConnectUiUtils;
+import org.argeo.suite.SuiteException;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Provide a single column label provider for file and directory lists. Icon and
+ * displayed text vary with the element node type
+ */
+public class FsSingleColumnLabelProvider extends LabelProvider implements PeopleNames {
+       private static final long serialVersionUID = -8895136766988459632L;
+
+       public FsSingleColumnLabelProvider() {
+       }
+
+       @Override
+       public String getText(Object element) {
+               try {
+                       Node entity = (Node) element;
+                       String result;
+                       if (entity.isNodeType(NodeType.NT_FILE))
+                               result = entity.getName();
+                       // result = ConnectJcrUtils.get(entity, Property.JCR_TITLE);
+                       else if (entity.isNodeType(NodeType.NT_FOLDER))
+                               result = entity.getName();
+                       // result = ConnectJcrUtils.get(entity, Property.JCR_TITLE);
+                       else
+                               result = "";
+                       return ConnectUiUtils.replaceAmpersand(result);
+               } catch (RepositoryException re) {
+                       throw new SuiteException("Unable to get formatted value for node", re);
+               }
+       }
+
+       /** Overwrite this method to provide project specific images */
+       @Override
+       public Image getImage(Object element) {
+               try {
+                       Node entity = (Node) element;
+                       if (entity.isNodeType(NodeType.NT_FILE))
+                               return FsImages.ICON_FILE;
+                       else if (entity.isNodeType(NodeType.NT_FOLDER))
+                               return FsImages.ICON_FOLDER;
+                       return null;
+               } catch (RepositoryException re) {
+                       throw new SuiteException("Cannot get icon for " + element, re);
+               }
+       }
+}