Author: stefanegli
Date: Mon Sep  9 09:48:35 2013
New Revision: 1521019

URL: http://svn.apache.org/r1521019
Log:
SLING-2985 : improvement in the content-browser: show relevant icon of a file 
based on jcr:content/jcr:mimeType set

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

Modified: 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1521019&r1=1521018&r2=1521019&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
 (original)
+++ 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
 Mon Sep  9 09:48:35 2013
@@ -46,11 +46,13 @@ import org.eclipse.core.runtime.IAdaptab
 import org.eclipse.core.runtime.IProgressMonitor;
 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;
 import org.eclipse.ui.IContributorResourceAdapter;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.model.WorkbenchLabelProvider;
 import org.eclipse.ui.views.properties.IPropertySource;
 import 
org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
@@ -351,6 +353,13 @@ public class JcrNode implements IAdaptab
                        } 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) {
@@ -374,6 +383,34 @@ public class JcrNode implements IAdaptab
                return WhitelabelSupport.JCR_NODE_ICON.createImage();
        }
 
+       private ImageDescriptor getImageDescriptor(String filename, String 
jcrMimeType) {
+               final String modifiedFilename;
+               if (jcrMimeType.equals("image/jpeg")) {
+                       modifiedFilename = filename + ".jpg";
+               } else if (jcrMimeType.startsWith("image/")) {
+                       modifiedFilename = filename + "." + 
(jcrMimeType.substring(jcrMimeType.indexOf("/")+1));
+               } else {
+                       return null;
+               }
+               return 
PlatformUI.getWorkbench().getEditorRegistry().getImageDescriptor(modifiedFilename,
 null);
+       }
+
+       private String getJcrContentProperty(String propertyKey) {
+               final Object[] chldrn = getChildren();
+               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 null;
+       }
+
        public String getName() {
                if (domNode!=null) {
                        return domNode.getNodeName();

Modified: 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/ModifiableProperties.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/ModifiableProperties.java?rev=1521019&r1=1521018&r2=1521019&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/ModifiableProperties.java
 (original)
+++ 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/ModifiableProperties.java
 Mon Sep  9 09:48:35 2013
@@ -62,6 +62,10 @@ public class ModifiableProperties implem
                return result.toArray(new IPropertyDescriptor[] {});
        }
 
+       public String getValue(String key) {
+               return properties.get(key);
+       }
+       
        @Override
        public Object getPropertyValue(Object id) {
                Map.Entry<String, String> entry = (Map.Entry<String, String>)id;


Reply via email to