You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gm...@apache.org on 2006/09/08 10:30:05 UTC
svn commit: r441432 - in /myfaces/tomahawk/trunk/sandbox:
core/src/main/java/org/apache/myfaces/custom/dialog/
core/src/main/resources-facesconfig/META-INF/ core/src/main/tld/
examples/src/main/webapp/ examples/src/main/webapp/dojo/
Author: gmuellan
Date: Fri Sep 8 01:30:04 2006
New Revision: 441432
URL: http://svn.apache.org/viewvc?view=rev&rev=441432
Log:
new component DojoDialog - issue TOMAHAWK-655; Special thx to Thomas Obereder for providing this support
Added:
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialog.java
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogRenderer.java
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogTag.java
myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/dojo/dojoDialog.jsp
Modified:
myfaces/tomahawk/trunk/sandbox/core/src/main/resources-facesconfig/META-INF/faces-config.xml
myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld
myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp
Added: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialog.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialog.java?view=auto&rev=441432
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialog.java (added)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialog.java Fri Sep 8 01:30:04 2006
@@ -0,0 +1,112 @@
+package org.apache.myfaces.custom.dialog;
+
+import javax.faces.component.UIPanel;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+
+public class DojoDialog extends UIPanel {
+
+ public static final String COMPONENT_TYPE = "org.apache.myfaces.DojoDialog";
+
+ private String _dialogVar;
+ private String _dialogId;
+ private String _dialogAttr;
+ private String _hiderIds;
+
+ private String _style;
+ private String _styleClass;
+
+ //@Override
+ public boolean getRendersChildren() {
+ return true;
+ }
+
+ public String getDialogAttr() {
+ if(_dialogAttr != null)
+ return _dialogAttr;
+ ValueBinding vb = getValueBinding("dialogAttr");
+ return vb != null ? (String)vb.getValue(getFacesContext()) :null;
+ }
+
+ public void setDialogAttr(String dialogAttr) {
+ _dialogAttr = dialogAttr;
+ }
+
+ public String getDialogId() {
+ if(_dialogId != null)
+ return _dialogId;
+ ValueBinding vb = getValueBinding("dialogId");
+ return vb != null ? (String)vb.getValue(getFacesContext()) :null;
+ }
+
+ public void setDialogId(String dialogId) {
+ _dialogId = dialogId;
+ }
+
+ public String getDialogVar() {
+ if(_dialogVar != null)
+ return _dialogVar;
+ ValueBinding vb = getValueBinding("dialogVar");
+ return vb != null ? (String)vb.getValue(getFacesContext()) :null;
+ }
+
+ public void setDialogVar(String dialogVar) {
+ _dialogVar = dialogVar;
+ }
+
+ public String getHiderIds() {
+ if(_hiderIds != null)
+ return _hiderIds;
+ ValueBinding vb = getValueBinding("hiderIds");
+ return vb != null ? (String)vb.getValue(getFacesContext()) :null;
+ }
+
+ public void setHiderIds(String hiderIds) {
+ _hiderIds = hiderIds;
+ }
+
+ public String getStyle() {
+ if(_style != null)
+ return _style;
+ ValueBinding vb = getValueBinding("style");
+ return vb != null ? (String)vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setStyle(String style) {
+ _style = style;
+ }
+
+ public String getStyleClass() {
+ if(_styleClass != null)
+ return _styleClass;
+ ValueBinding vb = getValueBinding("styleClass");
+ return vb != null ? (String)vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setStyleClass(String styleClass) {
+ _styleClass = styleClass;
+ }
+
+ public Object saveState(FacesContext facesContext) {
+ Object[] values = new Object[7];
+ values[0] = super.saveState(facesContext);
+ values[1] = _dialogVar;
+ values[2] = _dialogId;
+ values[3] = _dialogAttr;
+ values[4] = _hiderIds;
+ values[5] = _style;
+ values[6] = _styleClass;
+ return values;
+ }
+
+ public void restoreState(FacesContext facesContext, Object object) {
+ Object[] values = (Object[]) object;
+ super.restoreState(facesContext, values[0]);
+ _dialogVar = (String) values[1];
+ _dialogId = (String) values[2];
+ _dialogAttr = (String) values[3];
+ _hiderIds = (String) values[4];
+ _style = (String) values[5];
+ _styleClass = (String) values[6];
+ }
+}
Added: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogRenderer.java?view=auto&rev=441432
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogRenderer.java (added)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogRenderer.java Fri Sep 8 01:30:04 2006
@@ -0,0 +1,104 @@
+package org.apache.myfaces.custom.dialog;
+
+import org.apache.myfaces.custom.dojo.DojoUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.JSFAttr;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+import java.io.IOException;
+import java.util.StringTokenizer;
+
+public class DojoDialogRenderer extends Renderer {
+ public static final String RENDERER_TYPE = "org.apache.myfaces.DojoDialog";
+
+ public static final String DIV_ID_PREFIX = "_div";
+
+ //@Override
+ public void encodeBegin(FacesContext context, UIComponent component)
+ throws IOException {
+ String javascriptLocation = (String) component.getAttributes().get(JSFAttr.JAVASCRIPT_LOCATION);
+ DojoUtils.addMainInclude(context, component, javascriptLocation,
+ DojoUtils.getDjConfigInstance(context));
+ DojoUtils.addRequire(context, component, "dojo.widget.Dialog");
+
+ writeDojoDialogBegin((DojoDialog) component, context.getResponseWriter());
+ }
+
+ //@Override
+ public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+ StringBuffer buf = new StringBuffer();
+
+ buf.append("</div>");
+
+ context.getResponseWriter().write(buf.toString());
+ }
+
+ private void appendHiderIds(StringBuffer buf, DojoDialog dlg) {
+ String[] hiders = null;
+ if (dlg.getHiderIds() != null) {
+ hiders = dlg.getHiderIds().split(",");
+ }
+
+ for (int i = 0; i < hiders.length; i++) {
+ String varName = "btn" + i;
+ buf.append("var ").append(varName).append(" = document.getElementById(\"")
+ .append(hiders[i].trim()).append("\");")
+ .append(dlg.getDialogVar()).append(".setCloseControl(").append(varName).append(");");
+ }
+ }
+
+ private void appendDialogAttributes(StringBuffer buf, DojoDialog dlg) {
+ if(dlg.getDialogAttr() == null)
+ return;
+
+ StringTokenizer it = new StringTokenizer(dlg.getDialogAttr(), " ");
+ while(it.hasMoreElements())
+ {
+ String[] pair = it.nextToken().split("=");
+ String attribute = pair[0];
+ String value = pair[1].replaceAll("'", "");
+ try {
+ Double number = new Double(value);
+ }
+ catch(NumberFormatException e) {
+ value = new StringBuffer("\"").append(value).append("\"").toString();
+ }
+ buf.append(attribute).append(":").append(value).append(", ");
+ }
+ buf.setLength(buf.length() - 2);
+ }
+
+ private void writeDojoDialogBegin(DojoDialog dlg, ResponseWriter writer) throws IOException {
+ StringBuffer buf = new StringBuffer();
+ buf.append("<script type=\"text/javascript\">")
+ .append("var ").append(dlg.getDialogVar()).append(";")
+ .append("function loader(e) {").append(dlg.getDialogVar())
+ .append(" = dojo.widget.createWidget(\"dialog\", {id:")
+ .append("\"").append(dlg.getDialogId()).append("\", ");
+
+ appendDialogAttributes(buf, dlg);
+
+ String dlgId = dlg.getId() != null ?
+ dlg.getId() :
+ new StringBuffer(dlg.getDialogId()).append(DIV_ID_PREFIX).toString();
+ buf.append("}, dojo.byId(\"")
+ .append(dlgId).append("\"));");
+
+ appendHiderIds(buf, dlg);
+
+ buf.append("}")
+ .append("dojo.addOnLoad(loader);")
+ .append("</script>");
+
+ buf.append("<div id=\"").append(dlgId).append("\"");
+ if(dlg.getStyle() != null)
+ buf.append(" style=\"").append(dlg.getStyle()).append("\"");
+ if(dlg.getStyleClass() != null)
+ buf.append(" class=\"").append(dlg.getStyleClass()).append("\"");
+ buf.append(">");
+
+ writer.write(buf.toString());
+ }
+}
\ No newline at end of file
Added: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogTag.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogTag.java?view=auto&rev=441432
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogTag.java (added)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/dialog/DojoDialogTag.java Fri Sep 8 01:30:04 2006
@@ -0,0 +1,71 @@
+package org.apache.myfaces.custom.dialog;
+
+
+import org.apache.myfaces.shared_tomahawk.taglib.html.HtmlComponentTagBase;
+
+import javax.faces.component.UIComponent;
+
+/**
+ * @author Thomas Obereder
+ * @version 02.09.2006 12:04:26
+ */
+public class DojoDialogTag extends HtmlComponentTagBase
+{
+ private static final String TAG_PARAM_DIALOG_VAR = "dialogVar";
+ private static final String TAG_PARAM_DIALOG_ID = "dialogId";
+ private static final String TAG_PARAM_DIALOG_ATTR = "dialogAttr";
+ private static final String TAG_PARAM_HIDER_IDS = "hiderIds";
+
+ private String _dialogVar;
+ private String _dialogId;
+ private String _dialogAttr;
+ private String _hiderIds;
+
+ public String getComponentType()
+ {
+ return DojoDialog.COMPONENT_TYPE;
+ }
+
+ public String getRendererType()
+ {
+ return DojoDialogRenderer.RENDERER_TYPE;
+ }
+
+ public void setDialogVar(String dialogVar)
+ {
+ _dialogVar = dialogVar;
+ }
+
+ public void setDialogId(String dialogId)
+ {
+ _dialogId = dialogId;
+ }
+
+ public void setDialogAttr(String dialogAttr)
+ {
+ _dialogAttr = dialogAttr;
+ }
+
+ public void setHiderIds(String hiderIds)
+ {
+ _hiderIds = hiderIds;
+ }
+
+ protected void setProperties(UIComponent uiComponent)
+ {
+ super.setProperties(uiComponent);
+ super.setStringProperty(uiComponent, TAG_PARAM_DIALOG_VAR, _dialogVar);
+ super.setStringProperty(uiComponent, TAG_PARAM_DIALOG_ID, _dialogId);
+ super.setStringProperty(uiComponent, TAG_PARAM_DIALOG_ATTR, _dialogAttr);
+ super.setStringProperty(uiComponent, TAG_PARAM_HIDER_IDS, _hiderIds);
+ }
+
+ public void release()
+ {
+ super.release();
+ _dialogVar = null;
+ _dialogId = null;
+ _dialogAttr = null;
+ _hiderIds = null;
+ }
+}
Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/resources-facesconfig/META-INF/faces-config.xml
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/resources-facesconfig/META-INF/faces-config.xml?view=diff&rev=441432&r1=441431&r2=441432
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/resources-facesconfig/META-INF/faces-config.xml (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/resources-facesconfig/META-INF/faces-config.xml Fri Sep 8 01:30:04 2006
@@ -205,6 +205,10 @@
<component-class>org.apache.myfaces.custom.dojolayouts.DojoSplitPane</component-class>
</component>
+ <component>
+ <component-type>org.apache.myfaces.DojoDialog</component-type>
+ <component-class>org.apache.myfaces.custom.dialog.DojoDialog</component-class>
+ </component>
<!-- sandbox converters -->
<converter>
@@ -426,6 +430,11 @@
<renderer-class>org.apache.myfaces.custom.dojolayouts.DojoSplitPaneRenderer</renderer-class>
</renderer>
+ <renderer>
+ <component-family>javax.faces.Panel</component-family>
+ <renderer-type>org.apache.myfaces.DojoDialog</renderer-type>
+ <renderer-class>org.apache.myfaces.custom.dialog.DojoDialogRenderer</renderer-class>
+ </renderer>
<!-- <renderer>
<component-family>javax.faces.Messages</component-family>
Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld?view=diff&rev=441432&r1=441431&r2=441432
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld Fri Sep 8 01:30:04 2006
@@ -1280,7 +1280,41 @@
</attribute>
</tag>
-
+ <tag>
+ <name>dojoDialog</name>
+ <tag-class>org.apache.myfaces.custom.dialog.DojoDialogTag</tag-class>
+ <body-content>JSP</body-content>
+ <description>Modal Dojo Dialog</description>
+ &ui_panel_attributes;
+ <attribute>
+ <name>dialogVar</name>
+ <required>true</required>
+ <rtexprvalue>false</rtexprvalue>
+ <type>java.lang.String</type>
+ <description>The name of the variable to control the dialog with javascript.</description>
+ </attribute>
+ <attribute>
+ <name>dialogId</name>
+ <required>true</required>
+ <rtexprvalue>false</rtexprvalue>
+ <type>java.lang.String</type>
+ <description>The id to control the dialog with javascript.</description>
+ </attribute>
+ <attribute>
+ <name>dialogAttr</name>
+ <required>false</required>
+ <rtexprvalue>false</rtexprvalue>
+ <type>java.lang.String</type>
+ <description>A space separated list with attribute='value' pairs, which control the behaviour of the dojo dialog.</description>
+ </attribute>
+ <attribute>
+ <name>hiderIds</name>
+ <required>true</required>
+ <rtexprvalue>false</rtexprvalue>
+ <type>java.lang.String</type>
+ <description>A comma separated list with ids of input-elements, which tell (by javascript-code) the dialog to hide.</description>
+ </attribute>
+ </tag>
<!-- Validator for csv validation items -->
<tag>
Added: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/dojo/dojoDialog.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/dojo/dojoDialog.jsp?view=auto&rev=441432
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/dojo/dojoDialog.jsp (added)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/dojo/dojoDialog.jsp Fri Sep 8 01:30:04 2006
@@ -0,0 +1,77 @@
+<%@ page session="false" contentType="text/html;charset=iso-8859-1"%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
+<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
+<%@ taglib uri="http://myfaces.apache.org/sandbox" prefix="s"%>
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <link type="text/css" rel="stylesheet" href="/css/basic.css" />
+</head>
+<body>
+<f:view>
+ <style type="text/css">
+ .dojoDialog {
+ background : #eee;
+ border : 1px solid #999;
+ -moz-border-radius : 5px;
+ padding : 4px;
+ }
+ </style>
+ <h:panelGrid columns="2" style="width:700px;">
+ <h:outputLabel value="Email" for="email1" styleClass="label" />
+ <h:panelGrid columns="4" width="180">
+ <t:inputText id="email1" value="Test" forceId="true" size="30" />
+ <f:verbatim> </f:verbatim>
+ <t:message for="email1" />
+ <h:outputLink value="#" onclick="dojoDialog.show();document.getElementById('filter1').focus();">
+ <h:outputText value="search"/>
+ </h:outputLink>
+ </h:panelGrid>
+ </h:panelGrid>
+ <h:panelGrid columns="2" style="width:700px;">
+ <h:outputLabel value="Email" for="email2" styleClass="label" />
+ <h:panelGrid columns="4" width="180">
+ <t:inputText id="email2" value="Test" forceId="true" size="30" />
+ <f:verbatim> </f:verbatim>
+ <t:message for="email2" />
+ <h:outputLink value="#" onclick="dojoDialog.show();document.getElementById('filter2').focus();">
+ <h:outputText value="search"/>
+ </h:outputLink>
+ </h:panelGrid>
+ </h:panelGrid>
+ <h:panelGrid columns="2" style="width:700px;">
+ <h:outputLabel value="Email" for="email3" styleClass="label" />
+ <h:panelGrid columns="4" width="180">
+ <t:inputText id="email3" value="Test" forceId="true" size="30" />
+ <f:verbatim> </f:verbatim>
+ <t:message for="email3" />
+ <h:outputLink value="#" onclick="dojoDialog.show();document.getElementById('filter3').focus();">
+ <h:outputText value="search"/>
+ </h:outputLink>
+ </h:panelGrid>
+ </h:panelGrid>
+ <s:dojoDialog dialogId="DialogContent" dialogVar="dojoDialog"
+ dialogAttr="bgColor='white' bgOpacity='0.5' toggle='fade' toggleDuration='250'"
+ hiderIds="cancel1,cancel2,cancel3">
+ <h:panelGrid columns="1">
+ <h:panelGrid columns="2">
+ <t:inputText id="filter1" forceId="true" value="Test" size="25"/>
+ <t:commandButton id="cancel1" forceId="true" value="Cancel" onclick="dojo.widget.byId('DialogContent').hide();" />
+ </h:panelGrid>
+ <h:panelGrid columns="2">
+ <t:inputText id="filter2" forceId="true" value="Test" size="25"/>
+ <t:commandButton id="cancel2" forceId="true" value="Cancel" onclick="dojo.widget.byId('DialogContent').hide();" />
+ </h:panelGrid>
+ <h:panelGrid columns="2">
+ <t:inputText id="filter3" forceId="true" value="Test" size="25"/>
+ <t:commandButton id="cancel3" forceId="true" value="Cancel" onclick="dojo.widget.byId('DialogContent').hide();" />
+ </h:panelGrid>
+ </h:panelGrid>
+ </s:dojoDialog>
+</f:view>
+
+<%@include file="../inc/page_footer.jsp" %>
+
+</body>
+</html>
\ No newline at end of file
Modified: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp?view=diff&rev=441432&r1=441431&r2=441432
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp Fri Sep 8 01:30:04 2006
@@ -117,6 +117,10 @@
<h:outputLink value="template/index.jsf" ><f:verbatim>XML Template examples</f:verbatim></h:outputLink>
</h:panelGrid>
+ <h:outputText value="Dojo Dialog"/>
+ <h:panelGrid style="padding-left:25px">
+ <h:outputLink value="dojo/dojoDialog.jsf" ><f:verbatim>Dojo Dialog examples</f:verbatim></h:outputLink>
+ </h:panelGrid>
</h:panelGrid>
</h:form>
</f:view>