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 2014/06/11 15:33:07 UTC

svn commit: r1601891 - in /sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views: JcrEditingSupport.java PropertyTypeSupport.java

Author: stefanegli
Date: Wed Jun 11 13:33:06 2014
New Revision: 1601891

URL: http://svn.apache.org/r1601891
Log:
SLING-3659 : added combo-box to boolean property type

Modified:
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java?rev=1601891&r1=1601890&r2=1601891&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java Wed Jun 11 13:33:06 2014
@@ -94,13 +94,23 @@ public class JcrEditingSupport extends E
             }
             case VALUE: {
                 final int propertyType = getNode().getPropertyType(getPropertyName());
-                if ((propertyType!=-1) && (propertyType!=PropertyType.STRING)) {
-                    String rawValue = String.valueOf(me.getValue());
-                    int index = rawValue.indexOf("}");
-                    if (index!=-1) {
-                        String actualValue = rawValue.substring(index+1);
-                        return actualValue;
+                String rawValue = String.valueOf(me.getValue());
+                int index = rawValue.indexOf("}");
+                if (index!=-1) {
+                    rawValue = rawValue.substring(index+1);
+                }
+                if ((propertyType!=-1) && (propertyType==PropertyType.BOOLEAN)) {
+                    try{
+                        if (Boolean.parseBoolean(String.valueOf(rawValue))) {
+                            return 1;
+                        } else {
+                            return 0;
+                        }
+                    } catch(Exception e) {
+                        return 0;
                     }
+                } else if ((propertyType!=-1) && (propertyType!=PropertyType.STRING)) {
+                    return rawValue;
                 }
                 return String.valueOf(me.getValue());
             }
@@ -177,6 +187,13 @@ public class JcrEditingSupport extends E
 
             view.refreshContent();
         }
+
+        public int getPropertyType() {
+            IPropertyDescriptor pd = (IPropertyDescriptor) element;
+            Map.Entry me = (Entry) pd.getId();
+            String value = String.valueOf(me.getValue());
+            return PropertyTypeSupport.propertyTypeOfString(value);
+        }
     }
     
     private class NewRowField extends Field {
@@ -194,10 +211,27 @@ public class JcrEditingSupport extends E
         }
         
         @Override
+        public int getPropertyType() {
+            return newRow.getType();
+        }
+        
+        @Override
         public Object getValue() {
             if (columnId==ColumnId.NAME) {
                 return newRow.getName();
             } else if (columnId==ColumnId.VALUE) {
+                final int propertyType = newRow.getType();
+                if (propertyType==PropertyType.BOOLEAN) {
+                    try{
+                        if (Boolean.parseBoolean(String.valueOf(newRow.getValue()))) {
+                            return 1;
+                        } else {
+                            return 0;
+                        }
+                    } catch(Exception e) {
+                        return 0;
+                    }
+                }
                 return newRow.getValue();
             } else if (columnId==ColumnId.TYPE) {
                 final int propertyType = newRow.getType();
@@ -226,7 +260,7 @@ public class JcrEditingSupport extends E
             if (columnId==ColumnId.NAME) {
                 newRow.setName(String.valueOf(value));
             } else if (columnId==ColumnId.VALUE) {
-                newRow.setValue(String.valueOf(value));
+                newRow.setValue(PropertyTypeSupport.encodeValueAsString(value, getPropertyType()));
             } else if (columnId==ColumnId.TYPE) {
                 int propertyType = PropertyTypeSupport.propertyTypeOfIndex((Integer)value);
                 newRow.setType(propertyType);
@@ -266,6 +300,15 @@ public class JcrEditingSupport extends E
 
     @Override
     protected CellEditor getCellEditor(Object element) {
+        try{
+            return doGetCellEditor(element);
+        } catch(Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+    
+    protected CellEditor doGetCellEditor(Object element) {
         if (!canEdit(element)) {
             return null;
         }
@@ -286,9 +329,12 @@ public class JcrEditingSupport extends E
                 // then launch the MVPEditor instead of returning an editor here
                 return new MVNCellEditor(tableViewer.getTable(), getNode(), field.getPropertyName());
             }
-            if (getNode().getPropertyType(field.getPropertyName())==PropertyType.DATE) {
+            if (field.getPropertyType()==PropertyType.DATE) {
                 return new DateTimeCellEditor(tableViewer.getTable(), getNode(), field.getPropertyName());
             }
+            if (field.getPropertyType()==PropertyType.BOOLEAN) {
+                return new ComboBoxCellEditor(tableViewer.getTable(), new String[] {"false", "true"}, SWT.READ_ONLY);
+            }
             CellEditor editor;
             if (field.getPropertyName().equals("jcr:primaryType")) {
                 editor = new TextCellEditor(tableViewer.getTable()) {
@@ -375,8 +421,14 @@ public class JcrEditingSupport extends E
     void handleNewRowUpdate(NewRow newRow) {
         if (newRow.isComplete()) {
             tableViewer.remove(newRow);
-            JcrNode jcrNode = (JcrNode)tableViewer.getInput();
-            jcrNode.addProperty(String.valueOf(newRow.getName()), String.valueOf(newRow.getValue()));
+            final JcrNode jcrNode = (JcrNode)tableViewer.getInput();
+            final Integer type = newRow.getType();
+            String encodeValueAsString = PropertyTypeSupport.encodeValueAsString(newRow.getValue(), type);
+            if (type!=PropertyType.STRING && type!=PropertyType.NAME) {
+                encodeValueAsString = "{"+PropertyType.nameFromValue(type)+"}"+encodeValueAsString;
+            }
+            final String propertyName = String.valueOf(newRow.getName());
+            jcrNode.addProperty(propertyName, encodeValueAsString);
             view.refreshContent();
         } else {
             tableViewer.update(newRow, null);

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java?rev=1601891&r1=1601890&r2=1601891&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java Wed Jun 11 13:33:06 2014
@@ -95,7 +95,9 @@ public class PropertyTypeSupport {
 
     public static String encodeValueAsString(Object value, int propertyType) {
         switch(propertyType) {
-        case PropertyType.BOOLEAN:
+        case PropertyType.BOOLEAN: {
+            return Boolean.toString(value.equals((Integer)1));
+        }
         case PropertyType.DECIMAL:
         case PropertyType.DOUBLE:
         case PropertyType.LONG: