From 02408541cd77181191f9543b15280a55aa2dc463 Mon Sep 17 00:00:00 2001 From: Gavin Cornwell Date: Fri, 1 Sep 2006 20:47:27 +0000 Subject: [PATCH] - Improved flexibility of separator generators git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3656 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../generator/HeaderSeparatorGenerator.java | 23 ----- .../generator/HtmlSeparatorGenerator.java | 79 +++++++++++++++++ .../generator/LabelSeparatorGenerator.java | 85 +++++++++++++++++++ .../bean/generator/SeparatorGenerator.java | 43 ++-------- source/web/WEB-INF/faces-config-beans.xml | 45 ++++++++-- 5 files changed, 205 insertions(+), 70 deletions(-) delete mode 100644 source/java/org/alfresco/web/bean/generator/HeaderSeparatorGenerator.java create mode 100644 source/java/org/alfresco/web/bean/generator/HtmlSeparatorGenerator.java create mode 100644 source/java/org/alfresco/web/bean/generator/LabelSeparatorGenerator.java diff --git a/source/java/org/alfresco/web/bean/generator/HeaderSeparatorGenerator.java b/source/java/org/alfresco/web/bean/generator/HeaderSeparatorGenerator.java deleted file mode 100644 index 2cb6e31f9b..0000000000 --- a/source/java/org/alfresco/web/bean/generator/HeaderSeparatorGenerator.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.alfresco.web.bean.generator; - -import javax.faces.component.UIComponent; - -import org.alfresco.web.ui.repo.component.property.PropertySheetItem; - -/** - * Generates a component to represent a separator that gets rendered - * as a header. - * - * @author gavinc - */ -public class HeaderSeparatorGenerator extends SeparatorGenerator -{ - @Override - protected String getHtml(UIComponent component, PropertySheetItem item) - { - String html = "
 " + - item.getDisplayLabel() + "
"; - - return html; - } -} diff --git a/source/java/org/alfresco/web/bean/generator/HtmlSeparatorGenerator.java b/source/java/org/alfresco/web/bean/generator/HtmlSeparatorGenerator.java new file mode 100644 index 0000000000..3e8153750b --- /dev/null +++ b/source/java/org/alfresco/web/bean/generator/HtmlSeparatorGenerator.java @@ -0,0 +1,79 @@ +package org.alfresco.web.bean.generator; + +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; + +import org.alfresco.web.ui.repo.component.property.PropertySheetItem; +import org.alfresco.web.ui.repo.component.property.UIPropertySheet; + +/** + * Generates a component to represent a separator. + *

The HTML to be used for the separator is configured via the + * setHtml method. + * + * @author gavinc + */ +public class HtmlSeparatorGenerator extends BaseComponentGenerator +{ + protected String html = "default"; + + /** + * Returns the HTML configured to be used for this separator + * + * @return The HTML to display + */ + public String getHtml() + { + return html; + } + + /** + * Sets the HTML to display for the separator + * + * @param html The HTML + */ + public void setHtml(String html) + { + this.html = html; + } + + @SuppressWarnings("unchecked") + public UIComponent generate(FacesContext context, String id) + { + UIComponent component = this.createOutputTextComponent(context, id); + component.getAttributes().put("escape", Boolean.FALSE); + + return component; + } + + @Override + @SuppressWarnings("unchecked") + protected UIComponent createComponent(FacesContext context, UIPropertySheet propertySheet, + PropertySheetItem item) + { + UIComponent component = this.generate(context, item.getName()); + + // set the HTML to use + component.getAttributes().put("value", getResolvedHtml(component, item)); + + return component; + } + + /** + * Returns the resolved HTML to use for the separator. + *

In the default case we just return the HTML set + * via setHtml however subclasses may choose to generate + * the resulting HTML using a combination of the HTML set + * via setHtml and the given PropertySheetItem. + * + * @param component The JSF component representing the separator + * @param item The separator item + * @return The resolved HTML + */ + protected String getResolvedHtml(UIComponent component, PropertySheetItem item) + { + // In the default case we just return the HTML set via setHtml + + return this.html; + } +} \ No newline at end of file diff --git a/source/java/org/alfresco/web/bean/generator/LabelSeparatorGenerator.java b/source/java/org/alfresco/web/bean/generator/LabelSeparatorGenerator.java new file mode 100644 index 0000000000..7cbaf898c9 --- /dev/null +++ b/source/java/org/alfresco/web/bean/generator/LabelSeparatorGenerator.java @@ -0,0 +1,85 @@ +package org.alfresco.web.bean.generator; + +import javax.faces.component.UIComponent; + +import org.alfresco.web.ui.repo.component.property.PropertySheetItem; + +/** + * Generates a component to represent a separator that uses the + * property sheet display label configuration. The CSS class used + * for the HTML representing the label can also be configured via + * the setStyleClass method. + * + * @author gavinc + */ +public class LabelSeparatorGenerator extends HtmlSeparatorGenerator +{ + protected String style = "margin-top: 6px; margin-bottom: 6px;"; + protected String styleClass; + + /** + * Returns the CSS class configured to be used for this separator + * + * @return The CSS class + */ + public String getStyleClass() + { + return styleClass; + } + + /** + * Sets the CSS class to use for the separator + * + * @param styleClass The CSS class + */ + public void setStyleClass(String styleClass) + { + this.styleClass = styleClass; + } + + /** + * Returns the CSS style configured to be used for this separator + * + * @return The CSS style + */ + public String getStyle() + { + return style; + } + + /** + * Sets the CSS style to use for the separator + * + * @param style The CSS style + */ + public void setStyle(String style) + { + this.style = style; + } + + @Override + protected String getResolvedHtml(UIComponent component, PropertySheetItem item) + { + StringBuilder htmlBuilder = new StringBuilder(" 0) + { + htmlBuilder.append(" class=\""); + htmlBuilder.append(this.styleClass); + htmlBuilder.append("\""); + } + + if (this.style != null && this.style.length() > 0) + { + htmlBuilder.append(" style=\""); + htmlBuilder.append(this.style); + htmlBuilder.append("\""); + } + + // add the display label and close the div + htmlBuilder.append("> "); + htmlBuilder.append(item.getDisplayLabel()); + htmlBuilder.append(""); + + return htmlBuilder.toString(); + } +} diff --git a/source/java/org/alfresco/web/bean/generator/SeparatorGenerator.java b/source/java/org/alfresco/web/bean/generator/SeparatorGenerator.java index 49076c1fa1..2157229577 100644 --- a/source/java/org/alfresco/web/bean/generator/SeparatorGenerator.java +++ b/source/java/org/alfresco/web/bean/generator/SeparatorGenerator.java @@ -1,49 +1,16 @@ package org.alfresco.web.bean.generator; -import javax.faces.component.UIComponent; -import javax.faces.context.FacesContext; - -import org.alfresco.web.ui.repo.component.property.PropertySheetItem; -import org.alfresco.web.ui.repo.component.property.UIPropertySheet; - /** - * Generates a component to represent a separator. + * Generates a component to represent a separator using the HTML <hr/> element. * * @author gavinc */ -public class SeparatorGenerator extends BaseComponentGenerator +public class SeparatorGenerator extends HtmlSeparatorGenerator { - @SuppressWarnings("unchecked") - public UIComponent generate(FacesContext context, String id) + public SeparatorGenerator() { - UIComponent component = this.createOutputTextComponent(context, id); - component.getAttributes().put("escape", Boolean.FALSE); + // For the standard separator just show a


element - return component; - } - - @Override - @SuppressWarnings("unchecked") - protected UIComponent createComponent(FacesContext context, UIPropertySheet propertySheet, - PropertySheetItem item) - { - UIComponent component = this.generate(context, item.getName()); - - // set the HTML to use - component.getAttributes().put("value", getHtml(component, item)); - - return component; - } - - /** - * Returns the HTML to display for the separator - * - * @param component The JSF component representing the separator - * @param item The separator item - * @return The HTML - */ - protected String getHtml(UIComponent component, PropertySheetItem item) - { - return "

"; + this.html = "

"; } } \ No newline at end of file diff --git a/source/web/WEB-INF/faces-config-beans.xml b/source/web/WEB-INF/faces-config-beans.xml index c4a2a92530..c59a97747e 100644 --- a/source/web/WEB-INF/faces-config-beans.xml +++ b/source/web/WEB-INF/faces-config-beans.xml @@ -2154,18 +2154,45 @@ SeparatorGenerator org.alfresco.web.bean.generator.SeparatorGenerator request - - - - - Bean that generates a header separator component - - HeaderSeparatorGenerator - org.alfresco.web.bean.generator.HeaderSeparatorGenerator - request + + + Bean that generates a label separator component + + LabelSeparatorGenerator + org.alfresco.web.bean.generator.LabelSeparatorGenerator + request + + + + Bean that generates a label separator component rendered as a heading + + HeaderSeparatorGenerator + org.alfresco.web.bean.generator.LabelSeparatorGenerator + request + + styleClass + wizardSectionHeading mainSubTitle + + + + +