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>&#160;</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>&#160;</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>&#160;</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>