You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2013/09/20 11:09:41 UTC

svn commit: r1524956 - /sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java

Author: stefanegli
Date: Fri Sep 20 09:09:40 2013
New Revision: 1524956

URL: http://svn.apache.org/r1524956
Log:
SLING-2985 : content-browser improvement: icons calculation based on node/mime type

Modified:
    sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java

Modified: sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1524956&r1=1524955&r2=1524956&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java Fri Sep 20 09:09:40 2013
@@ -20,12 +20,10 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 import javax.xml.parsers.ParserConfigurationException;
@@ -33,6 +31,7 @@ import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
 import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
+import org.apache.sling.ide.eclipse.core.ProjectUtil;
 import org.apache.sling.ide.eclipse.ui.WhitelabelSupport;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
@@ -48,7 +47,6 @@ import org.eclipse.core.runtime.IProgres
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IActionFilter;
@@ -391,46 +389,46 @@ public class JcrNode implements IAdaptab
 	}
 
 	public Image getImage() {
-		if (resource!=null) {
-			if (resource instanceof IFolder) {
-				Image folderImage = workbenchLabelProvider.getImage(resource);
-				if (domNode==null && false) {
-					// then make it greyscale
-					folderImage = new
-							Image(folderImage.getDevice(), folderImage,SWT.IMAGE_GRAY);
-				}
-				return folderImage;
-			} else
-				try {
-					if (!isVaultFile(resource)){
-						final String jcrMimeType = getJcrContentProperty("jcr:mimeType");
-						if (jcrMimeType!=null && jcrMimeType.length()!=0) {
-							ImageDescriptor desc = getImageDescriptor(resource.getName(), jcrMimeType);
-							if (desc!=null) {
-								return desc.createImage();
-							}
-						}
-						return workbenchLabelProvider.getImage(resource);
-					}
-				} catch (ParserConfigurationException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (SAXException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (IOException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (CoreException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
+		boolean plainFolder = resource!=null && (resource instanceof IFolder);
+		String primaryType = getProperty("jcr:primaryType");
+		boolean typeFolder = primaryType!=null && ((primaryType.equals("nt:folder") || primaryType.equals("sling:Folder")));
+		boolean typeFile = primaryType!=null && ((primaryType.equals("nt:file") || primaryType.equals("nt:resource") || primaryType.equals("sling:File")));
+		boolean typeUnstructured = primaryType!=null && ((primaryType.equals("nt:unstructured")));
+		
+		boolean isVaultFile = false;
+		try {
+			isVaultFile = resource!=null && !isVaultFile(resource);
+		} catch (Exception e) {
+			// this empty catch is okay
+		}
+		
+		String mimeType = null;
+		if (isVaultFile) {
+			mimeType = getJcrContentProperty("jcr:mimeType");
+			if (mimeType == null) {
+				mimeType = getProperty("jcr:mimeType");
+			}
+		}
+		
+		if (typeUnstructured) {
+			return WhitelabelSupport.JCR_NODE_ICON.createImage();
+		} else if (plainFolder || typeFolder) {
+			return workbenchLabelProvider.getImage(ProjectUtil.getSyncDirectory(getProject()));
+		} else if (typeFile && resource!=null) {
+			if (mimeType!=null && mimeType.length()!=0) {
+				ImageDescriptor desc = getImageDescriptor(resource.getName(), mimeType);
+				if (desc!=null) {
+					return desc.createImage();
 				}
+			}
+			if (isVaultFile) {
+				return WhitelabelSupport.JCR_NODE_ICON.createImage();
+			}
+			return workbenchLabelProvider.getImage(resource);
+		} else {
+			return WhitelabelSupport.JCR_NODE_ICON.createImage();
 		}
-		//if (domNode!=null && children!=null && children.size()>0) {
-		//	return workbenchLabelProvider.getImage(domNode);
-		//}
 		
-		return WhitelabelSupport.JCR_NODE_ICON.createImage();
 	}
 
 	private ImageDescriptor getImageDescriptor(String filename, String jcrMimeType) {
@@ -450,12 +448,17 @@ public class JcrNode implements IAdaptab
 		for (int i = 0; i < chldrn.length; i++) {
 			JcrNode jcrNode = (JcrNode) chldrn[i];
 			if ("jcr:content".equals(jcrNode.getName())) {
-				if (jcrNode.properties!=null) {
-					Object propertyValue = jcrNode.properties.getValue(propertyKey);
-					if (propertyValue!=null) {
-						return String.valueOf(propertyValue);
-					}
-				}
+				return jcrNode.getProperty(propertyKey);
+			}
+		}
+		return null;
+	}
+
+	private String getProperty(String propertyKey) {
+		if (properties!=null) {
+			Object propertyValue = properties.getValue(propertyKey);
+			if (propertyValue!=null) {
+				return String.valueOf(propertyValue);
 			}
 		}
 		return null;