You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by jl...@apache.org on 2006/06/18 16:54:29 UTC

svn commit: r415144 - in /myfaces/tomahawk/trunk: core/src/main/java/org/apache/myfaces/custom/schedule/ core/src/main/java/org/apache/myfaces/custom/schedule/renderer/ core/src/site/xdoc/ examples/simple/src/main/webapp/ examples/simple/src/main/webap...

Author: jlust
Date: Sun Jun 18 07:54:29 2006
New Revision: 415144

URL: http://svn.apache.org/viewvc?rev=415144&view=rev
Log:
The entryRenderer attribute is no longer the fully qualified classname of the custom ScheduleEntryRenderer class, but a value binding to an implementation of that interface

Modified:
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/ScheduleTag.java
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/ScheduleDetailedDayRenderer.java
    myfaces/tomahawk/trunk/core/src/site/xdoc/schedule.xml
    myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/examples-config.xml
    myfaces/tomahawk/trunk/examples/simple/src/main/webapp/schedule4.jsp

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/ScheduleTag.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/ScheduleTag.java?rev=415144&r1=415143&r2=415144&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/ScheduleTag.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/ScheduleTag.java Sun Jun 18 07:54:29 2006
@@ -851,6 +851,15 @@
             throw new IllegalArgumentException(
                     "The value property must be a value binding expression that points to a SimpleScheduleModel object.");
         }
+        
+        if (entryRenderer != null && isValueReference(entryRenderer))
+        {
+            schedule.setValueBinding("entryRenderer", app.createValueBinding(entryRenderer));
+        }
+        else if (entryRenderer != null)
+        {
+            throw new IllegalArgumentException("The entryRenderer property must be a value binding expression that point to a ScheduleEntryRenderer instance");
+        }
 
         addAttribute(app, schedule, "headerDateFormat", headerDateFormat);
         addAttribute(app, schedule, "theme", theme);
@@ -887,8 +896,6 @@
         
         addAttribute(app, schedule, "renderZeroLengthEntries", renderZeroLengthEntries);
         addAttribute(app, schedule, "expandToFitEntries", expandToFitEntries);
-
-        addAttribute(app, schedule, "entryRenderer", entryRenderer);
     }
 
     /**

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java?rev=415144&r1=415143&r2=415144&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java Sun Jun 18 07:54:29 2006
@@ -392,43 +392,16 @@
      */
     protected ScheduleEntryRenderer getEntryRenderer(UIComponent component)
     {
-        ScheduleEntryRenderer entryRenderer = null;
-        Map attributes = component.getAttributes();
-        //First check if there an entryRenderer has already been instantiated
-        Object rendererObject = attributes.get("entryRendererInstance");
-        if (rendererObject instanceof ScheduleEntryRenderer)
+        Object entryRendererObject = ScheduleUtil.getObjectProperty(component,
+                null, "entryRenderer", null);
+        if (entryRendererObject instanceof ScheduleEntryRenderer)
         {
-            entryRenderer = (ScheduleEntryRenderer) rendererObject;
+            return (ScheduleEntryRenderer) entryRendererObject;
         }
         else
         {
-            //No entryRenderer was instantiated, do that here
-            String className = null;
-            //Was the classname specified as attribute of the component?
-            ValueBinding binding = component.getValueBinding("entryRenderer");
-            if (binding != null)
-            {
-                className = (String) binding.getValue(FacesContext
-                        .getCurrentInstance());
-            }
-            if (className == null)
-            {
-                className = (String) attributes.get("entryRenderer");
-            }
-            try
-            { //try to instantiate a renderer of the specified class
-                entryRenderer = (ScheduleEntryRenderer) Class
-                        .forName(className).newInstance();
-            }
-            catch (Exception e)
-            {
-                //something went wrong, let's take the default
-                entryRenderer = new DefaultScheduleEntryRenderer();
-            }
-            //Store the instance in the component attributes for later use
-            attributes.put("entryRendererInstance", entryRenderer);
+            return new DefaultScheduleEntryRenderer();
         }
-        return entryRenderer;
     }
 
     /**

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/ScheduleDetailedDayRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/ScheduleDetailedDayRenderer.java?rev=415144&r1=415143&r2=415144&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/ScheduleDetailedDayRenderer.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/schedule/renderer/ScheduleDetailedDayRenderer.java Sun Jun 18 07:54:29 2006
@@ -161,10 +161,9 @@
             return;
         }
 
-        HtmlSchedule schedule = (HtmlSchedule) component;
         ResponseWriter writer = context.getResponseWriter();
 
-        writeForegroundEnd(context, schedule, writer);
+        writeForegroundEnd(writer);
         writer.endElement(HTML.DIV_ELEM);
     }
 
@@ -578,8 +577,7 @@
         }
     }
 
-    private void writeForegroundEnd(FacesContext context,
-            HtmlSchedule schedule, ResponseWriter writer) throws IOException
+    private void writeForegroundEnd(ResponseWriter writer) throws IOException
     {
         writer.endElement(HTML.TR_ELEM);
         writer.endElement(HTML.TABLE_ELEM);

Modified: myfaces/tomahawk/trunk/core/src/site/xdoc/schedule.xml
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/site/xdoc/schedule.xml?rev=415144&r1=415143&r2=415144&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/site/xdoc/schedule.xml (original)
+++ myfaces/tomahawk/trunk/core/src/site/xdoc/schedule.xml Sun Jun 18 07:54:29 2006
@@ -141,7 +141,7 @@
                 </code>
                 <br/>
                 <code>
-                    entryRenderer - The classname of the ScheduleEntryRenderer that is used to render entries on the schedule. (default org.apache.myfaces.custom.schedule.renderer.DefaultScheduleEntryRenderer)
+                    entryRenderer - value binding to an instance of ScheduleEntryRenderer that is used to render entries on the schedule. (default: DefaultScheduleEntryRenderer)
                 </code>
                 <br/>
                 <code>

Modified: myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/examples-config.xml
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/examples-config.xml?rev=415144&r1=415143&r2=415144&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/examples-config.xml (original)
+++ myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/examples-config.xml Sun Jun 18 07:54:29 2006
@@ -525,6 +525,12 @@
     		</map-entry>
     	</map-entries>
     </managed-bean>
+    
+    <managed-bean>
+    	<managed-bean-name>randomColorEntryRenderer</managed-bean-name>
+    	<managed-bean-class>org.apache.myfaces.examples.schedule.RandomColorScheduleEntryRenderer</managed-bean-class>
+    	<managed-bean-scope>application</managed-bean-scope>
+    </managed-bean>
 
     <!-- Managed Beans for calendar.jsp -->
 

Modified: myfaces/tomahawk/trunk/examples/simple/src/main/webapp/schedule4.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/examples/simple/src/main/webapp/schedule4.jsp?rev=415144&r1=415143&r2=415144&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/examples/simple/src/main/webapp/schedule4.jsp (original)
+++ myfaces/tomahawk/trunk/examples/simple/src/main/webapp/schedule4.jsp Sun Jun 18 07:54:29 2006
@@ -60,7 +60,7 @@
 				workingEndHour="17" workingStartHour="9" readonly="false"
 				theme="outlookxp" tooltip="true"
 				evenClass="evenReddish" unevenClass="unevenReddish" freeClass="freeReddish"
-				entryRenderer="org.apache.myfaces.examples.schedule.RandomColorScheduleEntryRenderer" />
+				entryRenderer="#{randomColorEntryRenderer}" />
 		</t:div>
 		<!--  The column on the left, containing the calendar and other controls -->
 		<t:div style="position: absolute; left: 5px; top: 5px; width: 210px;">