You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sk...@apache.org on 2005/11/29 21:13:21 UTC
svn commit: r349804 [4/11] - in
/myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/schedule: ./
model/ renderer/ resource/css/ resource/javascript/ util/
Modified: myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java?rev=349804&r1=349803&r2=349804&view=diff
==============================================================================
--- myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java (original)
+++ myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java Tue Nov 29 12:12:53 2005
@@ -1,331 +1,331 @@
-/*
- * Copyright 2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.myfaces.custom.schedule.renderer;
-
-import java.io.IOException;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
-import java.util.Date;
-import java.util.Map;
-
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIForm;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.el.ValueBinding;
-import javax.faces.event.ActionEvent;
-import javax.faces.render.Renderer;
-
-import org.apache.myfaces.component.html.util.AddResource;
-import org.apache.myfaces.custom.schedule.HtmlSchedule;
-import org.apache.myfaces.custom.schedule.model.ScheduleEntry;
-import org.apache.myfaces.custom.schedule.util.ScheduleEntryComparator;
-import org.apache.myfaces.custom.schedule.util.ScheduleUtil;
-import org.apache.myfaces.renderkit.html.HTML;
-
-/**
- * <p>
- * Abstract superclass for all renderer of the UISchedule component
- * </p>
- *
- * @author Jurgen Lust (latest modification by $Author$)
- * @author Bruno Aranda (adaptation of Jurgen's code to myfaces)
- * @version $Revision$
- */
-public class AbstractScheduleRenderer extends Renderer
-{
- //~ Static fields/initializers ---------------------------------------------
-
- protected static final ScheduleEntryComparator comparator = new ScheduleEntryComparator();
-
- //~ Methods ----------------------------------------------------------------
-
- /**
- * @see javax.faces.render.Renderer#decode(javax.faces.context.FacesContext,
- * javax.faces.component.UIComponent)
- */
- public void decode(FacesContext context, UIComponent component)
- {
- if (ScheduleUtil.canModifyValue(component))
- {
- HtmlSchedule schedule = (HtmlSchedule) component;
- Map parameters = context.getExternalContext()
- .getRequestParameterMap();
- String selectedEntryId = (String) parameters.get((String) schedule
- .getClientId(context));
-
- if ((selectedEntryId != null) && (selectedEntryId.length() > 0))
- {
- schedule.setSubmittedEntry(schedule.findEntry(selectedEntryId));
- schedule.queueEvent(new ActionEvent(schedule));
- }
- }
- }
-
- /**
- * @see javax.faces.render.Renderer#encodeBegin(javax.faces.context.FacesContext,
- * javax.faces.component.UIComponent)
- */
- public void encodeBegin(FacesContext context, UIComponent component)
- throws IOException
- {
- if (!component.isRendered())
- {
- return;
- }
-
- HtmlSchedule schedule = (HtmlSchedule) component;
- ResponseWriter writer = context.getResponseWriter();
-
- //determine the CSS file for the chosen theme
- String theme = getTheme(schedule);
- if (theme == null || theme.length() < 1)
- theme = "default";
- String css = "css/" + theme + ".css";
-
- //add needed CSS and Javascript files to the header
-
- AddResource addResource = AddResource.getInstance(context);
- addResource.addStyleSheet(context, AddResource.HEADER_BEGIN, HtmlSchedule.class, css);
- addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
- HtmlSchedule.class, "javascript/alphaAPI.js");
- addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
- HtmlSchedule.class, "javascript/domLib.js");
- addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
- HtmlSchedule.class, "javascript/domTT.js");
- addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
- HtmlSchedule.class, "javascript/fadomatic.js");
-
- //hidden input field containing the id of the selected entry
- writer.startElement(HTML.INPUT_ELEM, schedule);
- writer.writeAttribute(HTML.TYPE_ATTR, "hidden", null);
- writer.writeAttribute(HTML.NAME_ATTR, schedule.getClientId(context),
- "clientId");
- writer.endElement(HTML.INPUT_ELEM);
- }
-
- /**
- * <p>
- * Get the String representation of a date, taking into account the
- * specified date format or the current Locale.
- * </p>
- *
- * @param context the FacesContext
- * @param component the component
- * @param date the date
- *
- * @return the date string
- */
- protected String getDateString(FacesContext context, UIComponent component,
- Date date)
- {
- DateFormat format;
- String pattern = getHeaderDateFormat(component);
-
- if ((pattern != null) && (pattern.length() > 0))
- {
- format = new SimpleDateFormat(pattern);
- }
- else
- {
- if (context.getApplication().getDefaultLocale() != null)
- {
- format = DateFormat.getDateInstance(DateFormat.MEDIUM, context
- .getApplication().getDefaultLocale());
- }
- else
- {
- format = DateFormat.getDateInstance(DateFormat.MEDIUM);
- }
- }
-
- return format.format(date);
- }
-
- /**
- * <p>
- * The theme used when rendering the schedule
- * </p>
- *
- * @param component the component
- *
- * @return the theme
- */
- protected String getTheme(UIComponent component)
- {
- //first check if the theme property is a value binding expression
- ValueBinding binding = component.getValueBinding("theme");
- if (binding != null)
- {
- String value = (String) binding.getValue(FacesContext
- .getCurrentInstance());
-
- if (value != null)
- {
- return value;
- }
- }
- //it's not a value binding expression, so check for the string value
- //in the attributes
- Map attributes = component.getAttributes();
- return (String) attributes.get("theme");
- }
-
- /**
- * <p>
- * The date format that is used in the schedule header
- * </p>
- *
- * @param component the component
- *
- * @return Returns the headerDateFormat.
- */
- protected String getHeaderDateFormat(UIComponent component)
- {
- //first check if the headerDateFormat property is a value binding expression
- ValueBinding binding = component.getValueBinding("headerDateFormat");
- if (binding != null)
- {
- String value = (String) binding.getValue(FacesContext
- .getCurrentInstance());
-
- if (value != null)
- {
- return value;
- }
- }
- //it's not a value binding expression, so check for the string value
- //in the attributes
- Map attributes = component.getAttributes();
- return (String) attributes.get("headerDateFormat");
- }
-
- /**
- * <p>
- * Get the parent form of the schedule component
- * </p>
- *
- * @param component the component
- *
- * @return the parent form
- */
- protected UIForm getParentForm(UIComponent component)
- {
- UIComponent parent = component.getParent();
-
- while (parent != null)
- {
- if (parent instanceof UIForm)
- {
- break;
- }
-
- parent = parent.getParent();
- }
-
- return (UIForm) parent;
- }
-
- /**
- * <p>
- * Assemble the tooltip text for the specified entry
- * </p>
- *
- * @param entry the entry
- * @param component the whole component
- *
- * @return the tooltip text
- */
- protected String getTooltipText(ScheduleEntry entry, UIComponent component)
- {
- if (!showTooltip(component))
- {
- return null;
- }
-
- StringBuffer buffer = new StringBuffer();
- buffer
- .append("return makeTrue(domTT_activate(this, event, 'caption', '");
-
- if (entry.getTitle() != null)
- {
- buffer.append(escape(entry.getTitle()));
- }
-
- buffer.append("', 'content', '<i>");
-
- if (entry.getSubtitle() != null)
- {
- buffer.append(escape(entry.getSubtitle()));
- }
-
- buffer.append("</i>");
-
- if (entry.getDescription() != null)
- {
- buffer.append("<br/>");
- buffer.append(escape(entry.getDescription()));
- }
-
- buffer.append("', 'trail', true));");
-
- return buffer.toString();
- }
-
- /**
- * <p>
- * Should the tooltip be made visible?
- * </p>
- *
- * @param component the component
- *
- * @return whether or not tooltips should be rendered
- */
- protected boolean showTooltip(UIComponent component)
- {
- //first check if the tooltip property is a value binding expression
- ValueBinding binding = component.getValueBinding("tooltip");
- if (binding != null)
- {
- Boolean value = (Boolean) binding.getValue(FacesContext
- .getCurrentInstance());
-
- if (value != null)
- {
- return value.booleanValue();
- }
- }
- //it's not a value binding expression, so check for the string value
- //in the attributes
- Map attributes = component.getAttributes();
- return Boolean.valueOf((String) attributes.get("tooltip"))
- .booleanValue();
- }
-
- private String escape(String text)
- {
- if (text == null)
- {
- return null;
- }
-
- return text.replaceAll("'", """);
- }
-}
-//The End
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.myfaces.custom.schedule.renderer;
+
+import java.io.IOException;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
+import java.util.Date;
+import java.util.Map;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.el.ValueBinding;
+import javax.faces.event.ActionEvent;
+import javax.faces.render.Renderer;
+
+import org.apache.myfaces.component.html.util.AddResource;
+import org.apache.myfaces.custom.schedule.HtmlSchedule;
+import org.apache.myfaces.custom.schedule.model.ScheduleEntry;
+import org.apache.myfaces.custom.schedule.util.ScheduleEntryComparator;
+import org.apache.myfaces.custom.schedule.util.ScheduleUtil;
+import org.apache.myfaces.renderkit.html.HTML;
+
+/**
+ * <p>
+ * Abstract superclass for all renderer of the UISchedule component
+ * </p>
+ *
+ * @author Jurgen Lust (latest modification by $Author$)
+ * @author Bruno Aranda (adaptation of Jurgen's code to myfaces)
+ * @version $Revision$
+ */
+public class AbstractScheduleRenderer extends Renderer
+{
+ //~ Static fields/initializers ---------------------------------------------
+
+ protected static final ScheduleEntryComparator comparator = new ScheduleEntryComparator();
+
+ //~ Methods ----------------------------------------------------------------
+
+ /**
+ * @see javax.faces.render.Renderer#decode(javax.faces.context.FacesContext,
+ * javax.faces.component.UIComponent)
+ */
+ public void decode(FacesContext context, UIComponent component)
+ {
+ if (ScheduleUtil.canModifyValue(component))
+ {
+ HtmlSchedule schedule = (HtmlSchedule) component;
+ Map parameters = context.getExternalContext()
+ .getRequestParameterMap();
+ String selectedEntryId = (String) parameters.get((String) schedule
+ .getClientId(context));
+
+ if ((selectedEntryId != null) && (selectedEntryId.length() > 0))
+ {
+ schedule.setSubmittedEntry(schedule.findEntry(selectedEntryId));
+ schedule.queueEvent(new ActionEvent(schedule));
+ }
+ }
+ }
+
+ /**
+ * @see javax.faces.render.Renderer#encodeBegin(javax.faces.context.FacesContext,
+ * javax.faces.component.UIComponent)
+ */
+ public void encodeBegin(FacesContext context, UIComponent component)
+ throws IOException
+ {
+ if (!component.isRendered())
+ {
+ return;
+ }
+
+ HtmlSchedule schedule = (HtmlSchedule) component;
+ ResponseWriter writer = context.getResponseWriter();
+
+ //determine the CSS file for the chosen theme
+ String theme = getTheme(schedule);
+ if (theme == null || theme.length() < 1)
+ theme = "default";
+ String css = "css/" + theme + ".css";
+
+ //add needed CSS and Javascript files to the header
+
+ AddResource addResource = AddResource.getInstance(context);
+ addResource.addStyleSheet(context, AddResource.HEADER_BEGIN, HtmlSchedule.class, css);
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
+ HtmlSchedule.class, "javascript/alphaAPI.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
+ HtmlSchedule.class, "javascript/domLib.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
+ HtmlSchedule.class, "javascript/domTT.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
+ HtmlSchedule.class, "javascript/fadomatic.js");
+
+ //hidden input field containing the id of the selected entry
+ writer.startElement(HTML.INPUT_ELEM, schedule);
+ writer.writeAttribute(HTML.TYPE_ATTR, "hidden", null);
+ writer.writeAttribute(HTML.NAME_ATTR, schedule.getClientId(context),
+ "clientId");
+ writer.endElement(HTML.INPUT_ELEM);
+ }
+
+ /**
+ * <p>
+ * Get the String representation of a date, taking into account the
+ * specified date format or the current Locale.
+ * </p>
+ *
+ * @param context the FacesContext
+ * @param component the component
+ * @param date the date
+ *
+ * @return the date string
+ */
+ protected String getDateString(FacesContext context, UIComponent component,
+ Date date)
+ {
+ DateFormat format;
+ String pattern = getHeaderDateFormat(component);
+
+ if ((pattern != null) && (pattern.length() > 0))
+ {
+ format = new SimpleDateFormat(pattern);
+ }
+ else
+ {
+ if (context.getApplication().getDefaultLocale() != null)
+ {
+ format = DateFormat.getDateInstance(DateFormat.MEDIUM, context
+ .getApplication().getDefaultLocale());
+ }
+ else
+ {
+ format = DateFormat.getDateInstance(DateFormat.MEDIUM);
+ }
+ }
+
+ return format.format(date);
+ }
+
+ /**
+ * <p>
+ * The theme used when rendering the schedule
+ * </p>
+ *
+ * @param component the component
+ *
+ * @return the theme
+ */
+ protected String getTheme(UIComponent component)
+ {
+ //first check if the theme property is a value binding expression
+ ValueBinding binding = component.getValueBinding("theme");
+ if (binding != null)
+ {
+ String value = (String) binding.getValue(FacesContext
+ .getCurrentInstance());
+
+ if (value != null)
+ {
+ return value;
+ }
+ }
+ //it's not a value binding expression, so check for the string value
+ //in the attributes
+ Map attributes = component.getAttributes();
+ return (String) attributes.get("theme");
+ }
+
+ /**
+ * <p>
+ * The date format that is used in the schedule header
+ * </p>
+ *
+ * @param component the component
+ *
+ * @return Returns the headerDateFormat.
+ */
+ protected String getHeaderDateFormat(UIComponent component)
+ {
+ //first check if the headerDateFormat property is a value binding expression
+ ValueBinding binding = component.getValueBinding("headerDateFormat");
+ if (binding != null)
+ {
+ String value = (String) binding.getValue(FacesContext
+ .getCurrentInstance());
+
+ if (value != null)
+ {
+ return value;
+ }
+ }
+ //it's not a value binding expression, so check for the string value
+ //in the attributes
+ Map attributes = component.getAttributes();
+ return (String) attributes.get("headerDateFormat");
+ }
+
+ /**
+ * <p>
+ * Get the parent form of the schedule component
+ * </p>
+ *
+ * @param component the component
+ *
+ * @return the parent form
+ */
+ protected UIForm getParentForm(UIComponent component)
+ {
+ UIComponent parent = component.getParent();
+
+ while (parent != null)
+ {
+ if (parent instanceof UIForm)
+ {
+ break;
+ }
+
+ parent = parent.getParent();
+ }
+
+ return (UIForm) parent;
+ }
+
+ /**
+ * <p>
+ * Assemble the tooltip text for the specified entry
+ * </p>
+ *
+ * @param entry the entry
+ * @param component the whole component
+ *
+ * @return the tooltip text
+ */
+ protected String getTooltipText(ScheduleEntry entry, UIComponent component)
+ {
+ if (!showTooltip(component))
+ {
+ return null;
+ }
+
+ StringBuffer buffer = new StringBuffer();
+ buffer
+ .append("return makeTrue(domTT_activate(this, event, 'caption', '");
+
+ if (entry.getTitle() != null)
+ {
+ buffer.append(escape(entry.getTitle()));
+ }
+
+ buffer.append("', 'content', '<i>");
+
+ if (entry.getSubtitle() != null)
+ {
+ buffer.append(escape(entry.getSubtitle()));
+ }
+
+ buffer.append("</i>");
+
+ if (entry.getDescription() != null)
+ {
+ buffer.append("<br/>");
+ buffer.append(escape(entry.getDescription()));
+ }
+
+ buffer.append("', 'trail', true));");
+
+ return buffer.toString();
+ }
+
+ /**
+ * <p>
+ * Should the tooltip be made visible?
+ * </p>
+ *
+ * @param component the component
+ *
+ * @return whether or not tooltips should be rendered
+ */
+ protected boolean showTooltip(UIComponent component)
+ {
+ //first check if the tooltip property is a value binding expression
+ ValueBinding binding = component.getValueBinding("tooltip");
+ if (binding != null)
+ {
+ Boolean value = (Boolean) binding.getValue(FacesContext
+ .getCurrentInstance());
+
+ if (value != null)
+ {
+ return value.booleanValue();
+ }
+ }
+ //it's not a value binding expression, so check for the string value
+ //in the attributes
+ Map attributes = component.getAttributes();
+ return Boolean.valueOf((String) attributes.get("tooltip"))
+ .booleanValue();
+ }
+
+ private String escape(String text)
+ {
+ if (text == null)
+ {
+ return null;
+ }
+
+ return text.replaceAll("'", """);
+ }
+}
+//The End
Propchange: myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/schedule/renderer/AbstractScheduleRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL