You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2004/12/20 07:13:03 UTC

cvs commit: incubator-myfaces/webapps/examples/web jslistener.jsp popup.jsp

mmarinschek    2004/12/19 22:13:03

  Modified:    src/components/org/apache/myfaces/custom/jslistener/resource
                        JSListener.js
               src/components/org/apache/myfaces/custom/popup/resource
                        JSPopup.js
               src/components/org/apache/myfaces/custom/popup
                        HtmlPopupRenderer.java
               src/myfaces/org/apache/myfaces/renderkit/html
                        HtmlLabelRenderer.java
               webapps/examples/web jslistener.jsp popup.jsp
  Log:
  killed bugs
  
  Revision  Changes    Path
  1.2       +110 -9    incubator-myfaces/src/components/org/apache/myfaces/custom/jslistener/resource/JSListener.js
  
  Index: JSListener.js
  ===================================================================
  RCS file: /home/cvs/incubator-myfaces/src/components/org/apache/myfaces/custom/jslistener/resource/JSListener.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JSListener.js	17 Dec 2004 13:19:10 -0000	1.1
  +++ JSListener.js	20 Dec 2004 06:13:00 -0000	1.2
  @@ -1,17 +1,118 @@
  -function orgApacheMyfacesJsListenerSetExpressionProperty(srcId, destId, property, expression)
  +function orgApacheMyfacesJsListenerSetExpressionProperty(
  +    srcId, destId, property, expression)
   {
  -    var srcElem = document.getElementById(srcId);
  -    var destElem = document.getElementById(destId);
  +    var log = true;
  +    var logStr;
   
  -    expression = expression.replace(/\$srcElem/g,"srcElem");
  -    expression = expression.replace(/\$destElem/g,"destElem");
  +    try
  +    {
  +
  +        if(log) logStr+="Source-Element id: "+srcId;
  +
  +        var srcElem = document.getElementById(srcId);
  +
  +        if(!srcElem)
  +        {
  +            srcElem = document.getElementsByName(srcId);
  +        }
  +
  +        if(log) logStr+="\n Source-element: "+srcElem;
  +        if(log) logStr+="\n Type of source-element: "+typeof(srcElem);
  +        if(log && typeof(srcElem)=='object') logStr+="\n Constructor : " +srcElem.constructor;
  +        if(log && orgApacheMyfacesJsListenerIsArray(srcElem))
  +            logStr+="\n Source-element is an array";
  +
  +        if(log) logStr += "\n\n  Destination-element id: "+destId;
  +
  +        var destElem = document.getElementById(destId);
  +
  +        if(!destElem)
  +        {
  +            destElem = document.getElementsByName(destId);
  +        }
  +
  +        if(log) logStr+="\n Destination-element: "+destElem;
  +        if(log) logStr+="\n Type of destination-element: "+typeof(destElem);
  +        if(log && typeof(destElem)=='object') logStr+="Constructor : " +destElem.constructor;
  +        if(log && orgApacheMyfacesJsListenerIsArray(destElem))
  +            logStr+="\n Destination-element is an array";
  +
  +        if(log) logStr+="\n\n  Expression before parsing: "+expression;
  +
  +        expression = orgApacheMyfacesJsListenerReplaceMakro(expression, "srcElem",srcElem);
  +        expression = orgApacheMyfacesJsListenerReplaceMakro(expression, "destElem",destElem);
  +
  +        if(log) logStr+="\n Expression after parsing: "+expression;
  +
  +        var value = eval(expression);
  +
  +        if(property)
  +        {
  +            var destElemStr = "destElem";
  +
  +            if(orgApacheMyfacesJsListenerIsArray(destElem))
  +                destElemStr+="[0]";
  +
  +            destElemStr+=".";
   
  -    var value = eval(expression);
  +            var valueStr;
   
  -    if(property)
  +            if(typeof (value) == 'string')
  +            {
  +                valueStr = "'"+value+"'";
  +            }
  +            else
  +            {
  +                valueStr = value;
  +            }
  +
  +            var propertySetStr = destElemStr+property+"="+valueStr+";";
  +
  +            if(log) logStr+="\n\n  Property set string: "+propertySetStr;
  +
  +            eval(propertySetStr);
  +        }
  +    }
  +    catch(e)
       {
  -        var propertySetStr = "destElem."+property+"='"+value+"';";
  +        var errorString = 'Error encountered : ';
  +        errorString += e['message'];
  +        errorString += logStr;
  +
  +        if(document.all)
  +        {
  +            e['description']=errorString;
  +            throw e;
  +        }
  +        else
  +        {
  +            throw errorString;
  +        }
  +    }
  +
  +}
  +
  +function orgApacheMyfacesJsListenerIsArray (array)
  +{
  +    return ((array != null) && (typeof array == "object") &&
  +        ((array.constructor == Array) || array.constructor == HTMLCollection));
  +}
  +
  +function orgApacheMyfacesJsListenerReplaceMakro(expression, macroName, elem)
  +{
  +
  +    var regEx = new RegExp("\\$"+macroName, "g");
   
  -        eval(propertySetStr);
  +    if(orgApacheMyfacesJsListenerIsArray(elem))
  +    {
  +        var arrRegEx = new RegExp("\\$"+macroName+"[\\[]([0-9]+)[\\]]", "g");
  +        expression = expression.replace(arrRegEx,macroName+"[$1]");
  +        expression = expression.replace(regEx,macroName+"[0]");
  +    }
  +    else
  +    {
  +        expression = expression.replace(regEx,macroName);
       }
  +
  +    return expression;
   }
  
  
  
  1.2       +25 -2     incubator-myfaces/src/components/org/apache/myfaces/custom/popup/resource/JSPopup.js
  
  Index: JSPopup.js
  ===================================================================
  RCS file: /home/cvs/incubator-myfaces/src/components/org/apache/myfaces/custom/popup/resource/JSPopup.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JSPopup.js	1 Dec 2004 16:32:03 -0000	1.1
  +++ JSPopup.js	20 Dec 2004 06:13:01 -0000	1.2
  @@ -23,8 +23,10 @@
       if(document.all)
       {
           elem = window.event.srcElement;
  -        x=window.event.x;
  -        y=window.event.y;
  +        x=window.event.clientX;
  +        x+=orgApacheMyfacesPopupGetScrollingX();
  +        y=window.event.clientY;
  +        y+=orgApacheMyfacesPopupGetScrollingY();
       }
       else
       {
  @@ -58,4 +60,25 @@
       var popupElem = document.getElementById(this.popupId);
       popupElem.style.display="block";
       orgApacheMyfacesPopupCurrentlyOpenedPopup = popupElem;
  +}
  +
  +function orgApacheMyfacesPopupGetScrollingX() {
  +    var x = 0;
  +
  +    if (document.body && document.body.scrollLeft && !isNaN(document.body.scrollLeft)) {
  +        x = document.body.scrollLeft;
  +    }
  +
  +    return x;
  +}
  +
  +function orgApacheMyfacesPopupGetScrollingY() {
  +
  +    var y = 0;
  +
  +    if (document.body && document.body.scrollTop && !isNaN(document.body.scrollTop)) {
  +        y = document.body.scrollTop;
  +    }
  +
  +    return y;
   }
  
  
  
  1.10      +7 -3      incubator-myfaces/src/components/org/apache/myfaces/custom/popup/HtmlPopupRenderer.java
  
  Index: HtmlPopupRenderer.java
  ===================================================================
  RCS file: /home/cvs/incubator-myfaces/src/components/org/apache/myfaces/custom/popup/HtmlPopupRenderer.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- HtmlPopupRenderer.java	17 Dec 2004 22:06:32 -0000	1.9
  +++ HtmlPopupRenderer.java	20 Dec 2004 06:13:01 -0000	1.10
  @@ -30,6 +30,9 @@
    * @author Martin Marinschek (latest modification by $Author$)
    * @version $Revision$ $Date$
    * $Log$
  + * Revision 1.10  2004/12/20 06:13:01  mmarinschek
  + * killed bugs
  + *
    * Revision 1.9  2004/12/17 22:06:32  grantsmith
    * Jira MYFACES-57: Changed logging levels to DEBUG from INFO
    *
  @@ -141,7 +144,8 @@
                                       Integer displayAtDistanceX, Integer displayAtDistanceY)
           throws IOException
       {
  -        AddResource.addJavaScriptToHeader(HtmlPopupRenderer.class, "JSPopup.js", true, context);
  +        AddResource.addJavaScriptToHeader(
  +                HtmlPopupRenderer.class, "JSPopup.js", false, context);
   
           String popupId = (clientId+"Popup").replace(':','_').replaceAll("_",
                   "popupIdSeparator");
  
  
  
  1.13      +6 -2      incubator-myfaces/src/myfaces/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
  
  Index: HtmlLabelRenderer.java
  ===================================================================
  RCS file: /home/cvs/incubator-myfaces/src/myfaces/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- HtmlLabelRenderer.java	13 Oct 2004 11:51:00 -0000	1.12
  +++ HtmlLabelRenderer.java	20 Dec 2004 06:13:02 -0000	1.13
  @@ -36,6 +36,9 @@
    * @author Martin Marinschek
    * @version $Revision$ $Date$
    * $Log$
  + * Revision 1.13  2004/12/20 06:13:02  mmarinschek
  + * killed bugs
  + *
    * Revision 1.12  2004/10/13 11:51:00  matze
    * renamed packages to org.apache
    *
  @@ -62,6 +65,7 @@
           ResponseWriter writer = facesContext.getResponseWriter();
   
           writer.startElement(HTML.LABEL_ELEM, uiComponent);
  +        writer.writeAttribute(HTML.ID_ATTR, uiComponent.getClientId(facesContext),null);
           HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.LABEL_PASSTHROUGH_ATTRIBUTES);
   
           String forAttr = getFor(uiComponent);
  
  
  
  1.4       +6 -0      incubator-myfaces/webapps/examples/web/jslistener.jsp
  
  Index: jslistener.jsp
  ===================================================================
  RCS file: /home/cvs/incubator-myfaces/webapps/examples/web/jslistener.jsp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jslistener.jsp	19 Dec 2004 00:50:56 -0000	1.3
  +++ jslistener.jsp	20 Dec 2004 06:13:02 -0000	1.4
  @@ -75,6 +75,12 @@
                           <h:outputText value="Countryname - enter ISO Code in first input-field (e.g. AT)"/>
                       </h:panelGroup>
                       <h:panelGroup/>
  +                    <h:selectOneMenu id="selone_menu_colors" value="red" styleClass="selectOneMenu">
  +                        <f:selectItem itemValue="" itemLabel="#{example_messages['empty_selitem']}" />
  +                        <f:selectItems value="#{carconf.colors}" />
  +                        <x:jsValueChangeListener for="selone_menu_subcolors" expressionValue="($srcElem.options[$srcElem.selectedIndex].value=='color_black')?$destElem.style.display='inline':$destElem.style.display='none';"/>
  +                    </h:selectOneMenu>
  +                    <h:inputText id="selone_menu_subcolors"/>
                   </h:panelGrid>
               </h:panelGroup>
           </f:facet>
  
  
  
  1.5       +2 -2      incubator-myfaces/webapps/examples/web/popup.jsp
  
  Index: popup.jsp
  ===================================================================
  RCS file: /home/cvs/incubator-myfaces/webapps/examples/web/popup.jsp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- popup.jsp	23 Nov 2004 23:24:04 -0000	1.4
  +++ popup.jsp	20 Dec 2004 06:13:02 -0000	1.5
  @@ -56,13 +56,13 @@
               <h:panelGroup id="body">
   
                   <h:panelGrid columns="1">
  -                    <x:popup
  +                    <x:popup id="x"
                           styleClass="popup"
                           closePopupOnExitingElement="true"
                           closePopupOnExitingPopup="true"
                           displayAtDistanceX="10"
                           displayAtDistanceY="10" >
  -                        <h:outputText value="This is the first textual text situation."/>
  +                        <h:outputText id="ox" value="This is the first textual text situation."/>
                           <f:facet name="popup">
                               <h:panelGroup>
                                   <h:panelGrid columns="1" >