Author: jonesde
Date: Mon May 31 22:40:19 2010
New Revision: 949880

URL: http://svn.apache.org/viewvc?rev=949880&view=rev
Log:
Changed the screenlet -> initially-collapsed attribute to support string 
expansion, includes xsd change; this allows custom logic to determine if the 
screenlet should appear collapsed or not

Modified:
    ofbiz/trunk/framework/widget/dtd/widget-screen.xsd
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java
    
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java

Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=949880&r1=949879&r2=949880&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original)
+++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Mon May 31 22:40:19 2010
@@ -915,8 +915,8 @@ under the License.
         <xs:attribute type="xs:string" name="title">
             <xs:annotation><xs:documentation>Title text to be placed in the 
screenlet title bar.</xs:documentation></xs:annotation>
         </xs:attribute>
-        <xs:attribute type="xs:string" name="id"/>
-        <xs:attribute type="xs:string" name="name"/>
+        <xs:attribute name="id" type="xs:string"/>
+        <xs:attribute name="name" type="xs:string"/>
         <xs:attribute name="collapsible" default="false">
             <xs:simpleType>
                 <xs:restriction base="xs:token">
@@ -925,14 +925,8 @@ under the License.
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
-        <xs:attribute name="initially-collapsed" default="false">
-            <xs:annotation><xs:documentation>When set to true, screenlet will 
be collapsed initially. Defaults to false.</xs:documentation></xs:annotation>
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
+        <xs:attribute name="initially-collapsed" type="xs:string" 
default="false">
+            <xs:annotation><xs:documentation>When set to true, screenlet will 
be collapsed initially. Can be an expanded string to get the value from a 
variable. Defaults to false.</xs:documentation></xs:annotation>
         </xs:attribute>
         <xs:attribute name="save-collapsed" default="true">
             <xs:annotation><xs:documentation>When set to true, screenlet 
collapse status is saved as user preference. Defaults to 
true.</xs:documentation></xs:annotation>

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java?rev=949880&r1=949879&r2=949880&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java 
(original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java Mon 
May 31 22:40:19 2010
@@ -77,6 +77,8 @@ public class WidgetFactory {
         try {
             return widgetConst.newInstance(modelScreen, element);
         } catch (Exception e) {
+            // log the original exception since the rethrown exception doesn't 
include much info about it and hides the cause
+            Debug.logError(e, "Error getting widget for element " + 
element.getTagName(), module);
             throw new IllegalArgumentException(e.getMessage() + " for element 
" + element.getTagName());
         }
     }

Modified: 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=949880&r1=949879&r2=949880&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java 
(original)
+++ 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java 
Mon May 31 22:40:19 2010
@@ -293,7 +293,7 @@ public abstract class ModelScreenWidget 
         protected Menu tabMenu = null;
         protected Form navigationForm = null;
         protected boolean collapsible = false;
-        protected boolean initiallyCollapsed = false;
+        protected FlexibleStringExpander initiallyCollapsed;
         protected boolean saveCollapsed = true;
         protected boolean padded = true;
         protected List<ModelScreenWidget> subWidgets;
@@ -302,8 +302,8 @@ public abstract class ModelScreenWidget 
             super(modelScreen, screenletElement);
             this.idExdr = 
FlexibleStringExpander.getInstance(screenletElement.getAttribute("id"));
             this.collapsible = 
"true".equals(screenletElement.getAttribute("collapsible"));
-            this.initiallyCollapsed = 
"true".equals(screenletElement.getAttribute("initially-collapsed"));
-            if (this.initiallyCollapsed) {
+            this.initiallyCollapsed = 
FlexibleStringExpander.getInstance(screenletElement.getAttribute("initially-collapsed"));
+            if ("true".equals(this.initiallyCollapsed.getOriginal())) {
                 this.collapsible = true;
             }
             // By default, for a collapsible screenlet, the collapsed/expanded 
status must be saved
@@ -388,7 +388,7 @@ public abstract class ModelScreenWidget 
                 return 
Boolean.valueOf((String)userPreferences.get(screenletId)).booleanValue() ;
             }
 
-            return this.initiallyCollapsed;
+            return "true".equals(this.initiallyCollapsed.expand(context));
         }
 
         public boolean saveCollapsed() {


Reply via email to