MyFaces Tomahawk
  1. MyFaces Tomahawk
  2. TOMAHAWK-1250

Adobe Flex components as MyFaces JSF components

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      Have tested using os [windows xp], browsers [firefox 2.0, opera 9.25, ie 6.0], and app server [tomcat 5.5.23].

      Description

      I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

      Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
      Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

      The basic design is as follows [will implement it better later] :
      (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

      (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

      (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

      (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

      (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

      (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
      (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
      objects
      (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
      JSON objects [users can use this to modify the mxml file and create a swf file]
      (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
      is the default value to ensure that users do not run the components in either of the two other modes in an
      environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
      be copied to their corresponding directory within the Workspace during the move to higher env [since the
      system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
      directory and TomCat for example flushes it out to their cache directory under metadata]. For large
      components such as DataGrid, am planning to write it as a service in retrieving and setting the values

      (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

      (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
      On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

      Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

      Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

      For example,
      001121 this can mean
      (1) major level 1 with minor level 121

      {meaning there exists at least 121 components within the swf}

      (2) major level 2 with minor level 1

      {meaning this is a child of [1,1] and the second sibling with depth two}

      Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

      I will possibly considering writing more regarding it later during my free time. Thanks!!!

      1. patchZip.txt
        0.8 kB
        Ji Kim
      2. mxmlComp.zip
        514 kB
        Ji Kim
      3. mxmlComp.patch
        143 kB
        Ji Kim
      4. mxmlExamplescreenshot-1.jpg
        88 kB
        Ji Kim

        Activity

        Ji Kim created issue -
        Hide
        Ji Kim added a comment -

        Since the contribution includes new directories and files within the directory, have separated as a patch file and a zip file. For set up, should apply the patch and unzip the contents within the zip file at tomahawk. Also please ensure that Adobe Flex SDK has been extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK [haven't tested on linux yet].

        Patch contains :
        pom.xml
        faces-config.xml
        myfaces_sandbox.tld
        mxmlExample.jsp
        examples-config.xml

        Zip contains :
        (1) example bean : MXMLBean at
        tomahawk\sandbox\examples\src\main\java\org\apache\myfaces\examples\mxml
        (2) common attributes for the tld at
        tomahawk\sandbox\core\src\main\tld\entities\mxml
        tomahawk\sandbox\core\src\main\tld\entities\mxml\components
        (3) standard components, taglib, renderkit, and etcetera at
        tomahawk\sandbox\core\src\main\java\org\apache\myfaces\custom\mxml
        (4) other Java files responsible for creating the preMxml, mxml, and swf files at
        tomahawk\sandbox\core\src\main\java\org\apache\myfaces\custom\mxml\util\frameworks
        (5) resources for the regular components and etcetera
        tomahawk\sandbox\core\src\main\resources\org\apache\myfaces\custom\mxml

        Show
        Ji Kim added a comment - Since the contribution includes new directories and files within the directory, have separated as a patch file and a zip file. For set up, should apply the patch and unzip the contents within the zip file at tomahawk. Also please ensure that Adobe Flex SDK has been extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK [haven't tested on linux yet] . Patch contains : pom.xml faces-config.xml myfaces_sandbox.tld mxmlExample.jsp examples-config.xml Zip contains : (1) example bean : MXMLBean at tomahawk\sandbox\examples\src\main\java\org\apache\myfaces\examples\mxml (2) common attributes for the tld at tomahawk\sandbox\core\src\main\tld\entities\mxml tomahawk\sandbox\core\src\main\tld\entities\mxml\components (3) standard components, taglib, renderkit, and etcetera at tomahawk\sandbox\core\src\main\java\org\apache\myfaces\custom\mxml (4) other Java files responsible for creating the preMxml, mxml, and swf files at tomahawk\sandbox\core\src\main\java\org\apache\myfaces\custom\mxml\util\frameworks (5) resources for the regular components and etcetera tomahawk\sandbox\core\src\main\resources\org\apache\myfaces\custom\mxml
        Ji Kim made changes -
        Field Original Value New Value
        Attachment mxmlComp.zip [ 12381536 ]
        Attachment patchZip.txt [ 12381537 ]
        Attachment mxmlComp.patch [ 12381535 ]
        Hide
        Ji Kim added a comment -

        mxmlExample sample screen shot.

        Show
        Ji Kim added a comment - mxmlExample sample screen shot.
        Ji Kim made changes -
        Attachment mxmlExample_screenshot-1.jpg [ 12381538 ]
        Ji Kim made changes -
        Attachment mxmlExamplescreenshot-1.jpg [ 12381539 ]
        Ji Kim made changes -
        Attachment mxmlExample_screenshot-1.jpg [ 12381538 ]
        Ji Kim made changes -
        Status Open [ 1 ] Patch Available [ 10002 ]
        Hide
        Ji Kim added a comment -

        Corrected two statements

        Show
        Ji Kim added a comment - Corrected two statements
        Ji Kim made changes -
        Description I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's
                  use of objects].
        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].
        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml
                  files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace
                  Task.
        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the
                  ActionScript files[s] and should be defined within mxmlConstants.xml]
        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class.
                  <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to
                  other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend
                  MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and
                  the swf file.
        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because
                  <s:mxmlApplication /> has various modes :
        debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON objects
        simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and JSON objects [users can use this to modify the mxml
                                                           file and create a swf file]
        productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this is the default value to ensure that users do not run the
                                                          components in either of the two other modes in an environment that is higher than dev]. One thing to note is that all directories of
                                                          WebContent/swf/* should be copied to their corresponding directory within the Workspace during the move to higher env [since the
                                                          system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf directory and TomCat for example flushes it
                                                          out to their cache directory under metadata].
        For large components such as DataGrid, am planning to write it as a service in retrieving and setting the values
        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function.
        Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be
                passed to the apps to set the initial values with the check interval set to 500 milliseconds. So the values will be decoded [for example htmlText allows XML tags and
        etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.
        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes
                will be appended to the form that was in the process of submission and will submit the page
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as
                JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
        001121 this can mean
        (1) major level 1 with minor level 121 {meaning there exists at least 120 components within the swf}
        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}
        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will
                be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to
        other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values with the check interval set to 500 milliseconds. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        Ji Kim made changes -
        Description I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to
        other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values with the check interval set to 500 milliseconds. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values with the check interval set to 500 milliseconds. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        Ji Kim made changes -
        Attachment mxmlComp.patch [ 12381535 ]
        Ji Kim made changes -
        Attachment mxmlComp.zip [ 12381536 ]
        Ji Kim made changes -
        Attachment mxmlComp.zip [ 12381830 ]
        Attachment mxmlComp.patch [ 12381829 ]
        Ji Kim made changes -
        Description I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values with the check interval set to 500 milliseconds. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects]. {the previous statement regarding <h:form /> might not apply, but will test later with the changes and firmly make the changes by Tues].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values with the check interval set to 500 milliseconds. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        Ji Kim made changes -
        Attachment mxmlComp.patch [ 12381829 ]
        Ji Kim made changes -
        Attachment mxmlComp.zip [ 12381830 ]
        Hide
        Ji Kim added a comment -

        Made various improvements.

        Show
        Ji Kim added a comment - Made various improvements.
        Ji Kim made changes -
        Attachment mxmlComp.patch [ 12383202 ]
        Attachment mxmlComp.zip [ 12383201 ]
        Ji Kim made changes -
        Description I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects]. {the previous statement regarding <h:form /> might not apply, but will test later with the changes and firmly make the changes by Tues].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values with the check interval set to 500 milliseconds. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        Ji Kim made changes -
        Description I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin
        [The above statement regarding download of Adobe Flex SDK is being considered to be removed from design and be embedded as part of the system. This way users do not have to fetch it from the Adobe site.]

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        Hide
        Ji Kim added a comment -

        Since Flex is open sourced through MPL and is compatible with Apache, will be packaged within the system.

        Show
        Ji Kim added a comment - Since Flex is open sourced through MPL and is compatible with Apache, will be packaged within the system.
        Ji Kim made changes -
        Description I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        The components require Adobe Flex SDK to be extracted to C:\Program Files\flexSDK or /usr/local/bin/flexSDK.
        Optionally users can modify the mxmlConstants.xml or can pass the bin directory as a JVM parameter mxmlc_bin
        [The above statement regarding download of Adobe Flex SDK is being considered to be removed from design and be embedded as part of the system. This way users do not have to fetch it from the Adobe site.]

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        I wished to contribute set of components to give users capability in creating Adobe Flex components as MyFaces JSF components. So users would create the components as normal JSF components and the contribution will create the necessary SWF files and etcetera and link the values of the components back to the managed beans using JSON+Javascript and etcetera.

        Requires ANT during compile time, so have modified the sandbox's POM with the dependency.
        Have tested using FireFox 2.0, Opera 9.25, and IE 6.0 browsers with TomCat 5.5. Also have used Sun's JDK for Adobe Flex SDK [JAVA_HOME].

        The basic design is as follows [will implement it better later] :
        (1) All Flex components must be nested within <s:mxmlApplication /> tag as it is the top component and this tag must be outside the <h:form /> component [due to IE's use of objects].

        (2) There exists replaceMapping XMLs which will tell how to pick the fields from the components [i.e. by attributes of the UIComponent or by method call for that object].

        (3) There exists templates [users can modify it if they wish to have some default capability to all similar component] which will be used per component to create preMxml files. In a nutshell, it is nothing but a simple file that contains tokens which will be replaced by component values using the replaceMapping XML and ANT's Replace Task.

        (4) Necessary source files will be created to their respective directory [i.e. ActionScript file[s] that is/are needed by the system and XML file[s] that is/are needed by the ActionScript files[s] and should be defined within mxmlConstants.xml]

        (5) After all the components' preMxml within <s:mxmlApplication /> have been created, MXML file and SWF file will be created using ANT by the MXMLApplication class. <s:mxmlScript /> will give capability in writing ActionScript contents as the body content of the Tag by extending UIComponentBodyTagBase. Similar flexibility is given to other Tags by extending MXMLUIComponentBodyTagBase; however it should be used sparingly and should be used mainly for components that extend MXMLUISimpleBase component. One additional thing to note is that mxmlPackageName attribute for <s:mxmlApplication /> tag will be used to name the mxml file and the swf file.

        (6) Also <s:mxmlApplication /> will create JSON objects which will be rendered onto the page for initial values of the Flex components. The reason for this is because <s:mxmlApplication /> has various modes :
                (a) debugMode => meaning preMxml, Mxml, and SWF files would be created in each run as well as JSON
                        objects
                (b) simplySWF => meaning Mxml which has been modified by the user exists, so create only SWF files and
                        JSON objects [users can use this to modify the mxml file and create a swf file]
                (c) productionEnv => meaning SWF file already exists, so nothing to do here but create JSON objects [this
                       is the default value to ensure that users do not run the components in either of the two other modes in an
                       environment that is higher than dev]. One thing to note is that all directories of WebContent/swf/* should
                       be copied to their corresponding directory within the Workspace during the move to higher env [since the
                       system uses servContext.getRealPath(new String()) as the root directory of preMxml, Mxml, and swf
                       directory and TomCat for example flushes it out to their cache directory under metadata]. For large
                       components such as DataGrid, am planning to write it as a service in retrieving and setting the values

        (7) Uses dojo during the onLoad time to connect all the Form's onsubmit event with a pageUnload function. Also each Flex/Flash app will communicate back to the page when it has finished setting up on its side [such as setting callBack methods and etcetera], JSON will be passed to the apps to set the initial values. So the values will be decoded [for example htmlText allows XML tags and etcetera, so on the Java side there will be encoding and decoding on the Flex/Flash side] and set to the component's values.

        (8) During the form's onsubmit action, pageUnload will return false and make a call to Flex/Flash app to return the component's values to the page. When returned, nodes will be appended to the form that was in the process of submission and will submit the page.
        On the Flex/Flash side, there will be an ActionScript which will use E4X [love it] to look up within an XML file the property/attributes that the component must return as JSON objects to the page, so that the page can create the elements with their attributes as child nodes of the form element.

        Will write this better later and will plan on making the code much cleaner and better during free time, but wanted to see if this is something that could be considered as a contribution within the group. Thanks!!!

        Oh yes, one note regarding preMxml files. In order to keep everything simple and debugging easy, a simple method was chosen to create the preMxml files for each component. Namely the file with mxmlPackageName_[Major Num][Minor Num].pre_mxml will be created per component within directory named WebContent/preMxml/[mxmlPackageName]/. So for instance, MxmlApplication will have Major Num and Minor Num set to 0 and the first child of MxmlApplication will have [1,0] set with it's sibling set to [1,1] and etcetera. Due to how it's written, there maybe an issue such that when depth equals a certain value and the components within that depth has 3 digits.

        For example,
                001121 this can mean
                        (1) major level 1 with minor level 121 {meaning there exists at least 121 components within the swf}
                        (2) major level 2 with minor level 1 {meaning this is a child of [1,1] and the second sibling with depth two}

        Since issues with this kind of scenario will occur when (1) doesn't exist [meaning sibling 120 exists and 121 is placeholder] and (2) exists [meaning [2,1] exists], this will be very rare. Also if someone has over 100+ components within a single swf file, I think it should be reconsidered and rewritten.

        I will possibly considering writing more regarding it later during my free time. Thanks!!!
        Ji Kim made changes -
        Attachment mxmlExamplescreenshot-1.jpg [ 12381539 ]
        Ji Kim made changes -
        Attachment mxmlExamplescreenshot-1.jpg [ 12385040 ]
        Hide
        Ji Kim added a comment -

        In order to grow a community for the project [since the development was from a single developer Ji Kim], this project has been moved to Google Code at http://code.google.com/p/jsf-flex/.

        Show
        Ji Kim added a comment - In order to grow a community for the project [since the development was from a single developer Ji Kim] , this project has been moved to Google Code at http://code.google.com/p/jsf-flex/ .
        Ji Kim made changes -
        Status Patch Available [ 10002 ] Closed [ 6 ]
        Resolution Fixed [ 1 ]

          People

          • Assignee:
            Unassigned
            Reporter:
            Ji Kim
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development