Advertisement
Guest User

jfx-imp.xml for jnlp ant

a guest
Dec 17th, 2014
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 218.98 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. *** GENERATED FROM TEMPLATE - DO NOT EDIT ***
  4. ***       EDIT ../build.xml INSTEAD       ***
  5. -->
  6.  
  7. <project name="jfx-impl" default="jfx-deployment" basedir=".." xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1"
  8.         xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:fx="javafx:com.sun.javafx.tools.ant">
  9.     <description>JavaFX-specific Ant calls</description>
  10.  
  11.  
  12.     <!-- Empty placeholders for easier customization in ../build.xml -->
  13.    
  14.     <target name="-pre-jfx-jar">
  15.         <!-- Called right before <fx:jar> task. You can override this target in the ../build.xml file. -->
  16.     </target>
  17.  
  18.     <target name="-post-jfx-jar">
  19.         <!-- Called right after <fx:jar> task. You can override this target in the ../build.xml file. -->
  20.     </target>
  21.  
  22.     <target name="-pre-jfx-deploy">
  23.         <!-- Called right before <fx:deploy> task. You can override this target in the ../build.xml file. -->
  24.     </target>
  25.  
  26.     <target name="-post-jfx-deploy">
  27.         <!-- Called right after <fx:deploy> task. You can override this target in the ../build.xml file. -->
  28.     </target>
  29.    
  30.     <target name="-pre-jfx-native">
  31.         <!-- Called right before the call to native packager (just after -pre-jfx-deploy). You can override this target in the ../build.xml file. -->
  32.     </target>
  33.  
  34.     <target name="-post-jfx-native">
  35.         <!-- Called right after the call to native packager (just after -post-jfx-deploy). You can override this target in the ../build.xml file. -->
  36.     </target>
  37.    
  38.    
  39.     <!-- Check system and JDK version -->
  40.  
  41.     <target name="-check-operating-system">
  42.         <condition property="running.on.mac">
  43.             <os family="mac"/>
  44.         </condition>
  45.         <condition property="running.on.unix">
  46.             <os family="unix"/>
  47.         </condition>
  48.         <condition property="running.on.windows">
  49.             <os family="windows"/>
  50.         </condition>
  51.         <echo message="running.on.mac = ${running.on.mac}" level="verbose"/>
  52.         <echo message="running.on.unix = ${running.on.unix}" level="verbose"/>
  53.         <echo message="running.on.windows = ${running.on.windows}" level="verbose"/>
  54.     </target>
  55.  
  56.     <target name="-check-platform-home-fxsdk-java" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
  57.         <condition property="do.set.platform.home.fxsdk.java">
  58.             <and>
  59.                 <not><isset property="active.platform.home.java.executable"/></not>
  60.                 <or>
  61.                     <available file="${javafx.sdk}${file.separator}bin${file.separator}java"/>
  62.                     <available file="${javafx.sdk}${file.separator}bin${file.separator}java.exe"/>
  63.                 </or>
  64.             </and>
  65.         </condition>
  66.     </target>
  67.     <target name="-set-platform-home-fxsdk-java" depends="-check-platform-home-fxsdk-java" if="do.set.platform.home.fxsdk.java">
  68.         <property name="active.platform.home.java.executable" value="${javafx.sdk}${file.separator}bin${file.separator}java"/>
  69.     </target>
  70.     <target name="-check-platform-home-java" if="platform.home">
  71.         <condition property="do.set.platform.home.java">
  72.             <and>
  73.                 <not><isset property="active.platform.home.java.executable"/></not>
  74.                 <or>
  75.                     <available file="${platform.home}${file.separator}bin${file.separator}java"/>
  76.                     <available file="${platform.home}${file.separator}bin${file.separator}java.exe"/>
  77.                 </or>
  78.             </and>
  79.         </condition>
  80.     </target>
  81.     <target name="-set-platform-home-java" depends="-set-platform-home-fxsdk-java,-check-platform-home-java" if="do.set.platform.home.java">
  82.         <property name="active.platform.home.java.executable" value="${platform.home}${file.separator}bin${file.separator}java"/>
  83.     </target>
  84.     <target name="-check-platform-home-probjdk-java" unless="active.platform.home.java.executable">
  85.         <condition property="do.set.platform.home.probjdk.java">
  86.             <and>
  87.                 <not><isset property="active.platform.home.java.executable"/></not>
  88.                 <or>
  89.                     <available file="${java.home}${file.separator}..${file.separator}bin${file.separator}java"/>
  90.                     <available file="${java.home}${file.separator}..${file.separator}bin${file.separator}java.exe"/>
  91.                 </or>
  92.             </and>
  93.         </condition>
  94.     </target>
  95.     <target name="-set-platform-home-probjdk-java" depends="-set-platform-home-java,-check-platform-home-probjdk-java" if="do.set.platform.home.probjdk.java">
  96.         <property name="active.platform.home.java.executable" value="${java.home}${file.separator}..${file.separator}bin${file.separator}java"/>
  97.     </target>
  98.     <target name="-check-platform-home-envjdk-java" unless="active.platform.home.java.executable">
  99.         <property environment="env"/>
  100.         <condition property="do.set.platform.home.envjdk.java">
  101.             <and>
  102.                 <not><isset property="active.platform.home.java.executable"/></not>
  103.                 <or>
  104.                     <available file="${env.JAVA_HOME}${file.separator}bin${file.separator}java"/>
  105.                     <available file="${env.JAVA_HOME}${file.separator}bin${file.separator}java.exe"/>
  106.                 </or>
  107.             </and>
  108.         </condition>
  109.     </target>
  110.     <target name="-set-platform-home-envjdk-java" depends="-set-platform-home-probjdk-java,-check-platform-home-envjdk-java" if="do.set.platform.home.envjdk.java">
  111.         <property environment="env"/>
  112.         <property name="active.platform.home.java.executable" value="${env.JAVA_HOME}${file.separator}bin${file.separator}java"/>
  113.     </target>
  114.     <target name="-check-platform-home-fxrt-java" depends="-check-property-javafx.runtime" if="javafx.runtime.defined">
  115.         <condition property="do.set.platform.home.fxrt.java">
  116.             <and>
  117.                 <not><isset property="active.platform.home.java.executable"/></not>
  118.                 <or>
  119.                     <available file="${javafx.runtime}${file.separator}bin${file.separator}java"/>
  120.                     <available file="${javafx.runtime}${file.separator}bin${file.separator}java.exe"/>
  121.                 </or>
  122.             </and>
  123.         </condition>
  124.     </target>
  125.     <target name="-set-platform-home-fxrt-java" depends="-set-platform-home-envjdk-java,-check-platform-home-fxrt-java" if="do.set.platform.home.fxrt.java">
  126.         <property name="active.platform.home.java.executable" value="${javafx.runtime}${file.separator}bin${file.separator}java"/>
  127.         <echo message="Warning: java executable not found in JDK, evaluating java executable in RT instead." level="info"/>
  128.     </target>
  129.     <target name="-check-platform-home-jre-java" unless="active.platform.home.java.executable">
  130.         <condition property="do.set.platform.home.jre.java">
  131.             <and>
  132.                 <not><isset property="active.platform.home.java.executable"/></not>
  133.                 <or>
  134.                     <available file="${java.home}${file.separator}bin${file.separator}java"/>
  135.                     <available file="${java.home}${file.separator}bin${file.separator}java.exe"/>
  136.                 </or>
  137.             </and>
  138.         </condition>
  139.     </target>
  140.     <target name="-set-platform-home-jre-java" depends="-set-platform-home-fxrt-java,-check-platform-home-jre-java" if="do.set.platform.home.jre.java">
  141.         <property name="active.platform.home.java.executable" value="${java.home}${file.separator}bin${file.separator}java"/>
  142.         <echo message="Warning: java executable not found in JDK, evaluating java executable in RT instead." level="info"/>
  143.     </target>
  144.     <target name="-check-platform-home" depends="-set-platform-home-jre-java">
  145.         <echo message="active.platform.home.java.executable = ${active.platform.home.java.executable}" level="verbose"/>
  146.         <fail message="Error:${line.separator}java executable not found !" unless="active.platform.home.java.executable"/>
  147.     </target>
  148.        
  149.     <target name="-check-jdk-version" depends="-do-init,-check-platform-home" unless="jdk-version-checked-in-jfximpl">
  150.         <local name="version-output"/>
  151.         <exec executable="${active.platform.home.java.executable}" outputproperty="version-output">
  152.             <arg value="-version"/>
  153.         </exec>
  154.         <echo message="version-output:${line.separator}${version-output}" level="verbose"/>
  155.         <condition property="have-jdk-older-than-1.6">
  156.             <or>
  157.                 <contains string="${version-output}" substring="java version &quot;1.0"/>
  158.                 <contains string="${version-output}" substring="java version &quot;1.1"/>
  159.                 <contains string="${version-output}" substring="java version &quot;1.2"/>
  160.                 <contains string="${version-output}" substring="java version &quot;1.3"/>
  161.                 <contains string="${version-output}" substring="java version &quot;1.4"/>
  162.                 <contains string="${version-output}" substring="java version &quot;1.5"/>
  163.             </or>
  164.         </condition>
  165.         <fail message="Error:${line.separator}JavaFX 2.0+ projects require JDK version 1.6+ !" if="have-jdk-older-than-1.6"/>
  166.         <condition property="have-jdk-7u4or5-mac">
  167.             <and>
  168.                 <or>
  169.                     <contains string="${version-output}" substring="java version &quot;1.7.0_04"/>
  170.                     <contains string="${version-output}" substring="java version &quot;1.7.0_05"/>
  171.                 </or>
  172.                 <os family="mac"/>
  173.             </and>
  174.         </condition>
  175.         <condition property="have-jdk-pre7u6">
  176.             <or>
  177.                 <isset property="have-jdk-older-than-1.6"/>
  178.                 <contains string="${version-output}" substring="java version &quot;1.6"/>
  179.                 <contains string="${version-output}" substring="java version &quot;1.7.0&quot;"/>
  180.                 <contains string="${version-output}" substring="java version &quot;1.7.0_01"/>
  181.                 <contains string="${version-output}" substring="java version &quot;1.7.0_02"/>
  182.                 <contains string="${version-output}" substring="java version &quot;1.7.0_03"/>
  183.                 <contains string="${version-output}" substring="java version &quot;1.7.0_04"/>
  184.                 <contains string="${version-output}" substring="java version &quot;1.7.0_05"/>
  185.             </or>
  186.         </condition>
  187.         <condition property="have-jdk-pre7u14">
  188.             <or>
  189.                 <isset property="have-jdk-pre7u6"/>
  190.                 <contains string="${version-output}" substring="java version &quot;1.7.0_06"/>
  191.                 <contains string="${version-output}" substring="java version &quot;1.7.0_07"/>
  192.                 <contains string="${version-output}" substring="java version &quot;1.7.0_08"/>
  193.                 <contains string="${version-output}" substring="java version &quot;1.7.0_09"/>
  194.                 <contains string="${version-output}" substring="java version &quot;1.7.0_10"/>
  195.                 <contains string="${version-output}" substring="java version &quot;1.7.0_11"/>
  196.                 <contains string="${version-output}" substring="java version &quot;1.7.0_12"/>
  197.                 <contains string="${version-output}" substring="java version &quot;1.7.0_13"/>
  198.             </or>
  199.         </condition>
  200.         <property name="jdk-version-checked-in-jfximpl" value="true"/>
  201.         <echo message="have-jdk-7u4or5-mac = ${have-jdk-7u4or5-mac}" level="verbose"/>
  202.         <echo message="have-jdk-pre7u6 = ${have-jdk-pre7u6}" level="verbose"/>
  203.         <echo message="have-jdk-pre7u14 = ${have-jdk-pre7u14}" level="verbose"/>
  204.     </target>
  205.        
  206.     <target name="-check-ant-jre-version" unless="ant-jre-version-checked-in-jfximpl">
  207.         <local name="version-output"/>
  208.         <exec executable="${java.home}${file.separator}bin${file.separator}java" outputproperty="version-output">
  209.             <arg value="-version"/>
  210.         </exec>
  211.         <echo message="version-output:${line.separator}${version-output}" level="verbose"/>
  212.         <condition property="have-ant-jre-pre7u6">
  213.             <or>
  214.                 <contains string="${version-output}" substring="java version &quot;1.0"/>
  215.                 <contains string="${version-output}" substring="java version &quot;1.1"/>
  216.                 <contains string="${version-output}" substring="java version &quot;1.2"/>
  217.                 <contains string="${version-output}" substring="java version &quot;1.3"/>
  218.                 <contains string="${version-output}" substring="java version &quot;1.4"/>
  219.                 <contains string="${version-output}" substring="java version &quot;1.5"/>
  220.                 <contains string="${version-output}" substring="java version &quot;1.6"/>
  221.                 <contains string="${version-output}" substring="java version &quot;1.7.0&quot;"/>
  222.                 <contains string="${version-output}" substring="java version &quot;1.7.0_01"/>
  223.                 <contains string="${version-output}" substring="java version &quot;1.7.0_02"/>
  224.                 <contains string="${version-output}" substring="java version &quot;1.7.0_03"/>
  225.                 <contains string="${version-output}" substring="java version &quot;1.7.0_04"/>
  226.                 <contains string="${version-output}" substring="java version &quot;1.7.0_05"/>
  227.             </or>
  228.         </condition>
  229.         <condition property="have-jdk7-css2bin-bug">
  230.             <!-- as of NB7.4 release date the external css-to-bss converter is unreliable in all JDK7 versions before 7u40 (with exception of 7u14)-->
  231.             <and>
  232.                 <contains string="${version-output}" substring="java version &quot;1.7"/>
  233.                 <not><matches string="${version-output}" pattern="\bjava version &quot;1\.7\.0_(14|[4-9].)"/></not>
  234.             </and>
  235.         </condition>
  236.         <property name="ant-jre-version-checked-in-jfximpl" value="true"/>
  237.         <echo message="have-ant-jre-pre7u6 = ${have-ant-jre-pre7u6}" level="verbose"/>
  238.         <echo message="have-jdk7-css2bin-bug = ${have-jdk7-css2bin-bug}" level="verbose"/>
  239.     </target>
  240.  
  241.     <target name="-check-jdk-7u4or5-mac" depends="-check-jdk-version" if="have-jdk-7u4or5-mac">
  242.         <fail message="Error:${line.separator}JDK 7u4 Mac and 7u5 Mac do not support WebStart and JavaFX 2.0+ browser plugin technologies.${line.separator}Please upgrade to JDK 7u6 or later."/>
  243.     </target>
  244.  
  245.    
  246.     <!-- Check availability of JavaFX SDK deployment support (ant-javafx.jar) -->
  247.  
  248.     <target name="-check-endorsed-javafx-ant-classpath">
  249.         <condition property="endorsed-javafx-ant-classpath-available">
  250.             <and>
  251.                 <isset property="endorsed.javafx.ant.classpath"/>
  252.                 <not>
  253.                     <equals arg1="${endorsed.javafx.ant.classpath}" arg2=""/>
  254.                 </not>
  255.             </and>
  256.         </condition>
  257.         <echo message="endorsed-javafx-ant-classpath-available = ${endorsed-javafx-ant-classpath-available}" level="verbose"/>
  258.     </target>
  259.  
  260.     <target name="-check-property-javafx.sdk">
  261.         <echo message="javafx.sdk = ${javafx.sdk}" level="verbose"/>
  262.         <condition property="javafx.sdk.defined">
  263.             <and>
  264.                 <isset property="javafx.sdk"/>
  265.                 <not><contains string="${javafx.sdk}" substring="$${platform" casesensitive="false"/></not>
  266.             </and>
  267.         </condition>
  268.         <condition property="javafx.sdk.missing+default">
  269.             <and>
  270.                 <equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/>
  271.                 <not><isset property="javafx.sdk.defined"/></not>
  272.             </and>
  273.         </condition>
  274.         <condition property="javafx.sdk.missing-default">
  275.             <and>
  276.                 <not><equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/></not>
  277.                 <not><isset property="javafx.sdk.defined"/></not>
  278.             </and>
  279.         </condition>
  280.         <echo message="javafx.sdk.defined = ${javafx.sdk.defined}" level="verbose"/>
  281.         <echo message="javafx.sdk.missing+default = ${javafx.sdk.missing+default}" level="verbose"/>
  282.         <echo message="javafx.sdk.missing-default = ${javafx.sdk.missing-default}" level="verbose"/>
  283.     </target>
  284.  
  285.     <target name="-check-ant-javafx-in-fxsdk-lib" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
  286.         <condition property="do.set.ant-javafx.in.fxsdk.lib">
  287.             <and>
  288.                 <not><isset property="ant-javafx.jar.location"/></not>
  289.                 <available file="${javafx.sdk}${file.separator}lib${file.separator}ant-javafx.jar"/>
  290.             </and>
  291.         </condition>
  292.     </target>
  293.     <target name="-set-ant-javafx-in-fxsdk-lib" depends="-check-ant-javafx-in-fxsdk-lib" if="do.set.ant-javafx.in.fxsdk.lib">
  294.         <property name="ant-javafx.jar.location" value="${javafx.sdk}${file.separator}lib${file.separator}ant-javafx.jar"/>
  295.     </target>
  296.     <target name="-check-ant-javafx-in-fxsdk-tools" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
  297.         <condition property="do.set.ant-javafx.in.fxsdk.tools">
  298.             <and>
  299.                 <not><isset property="ant-javafx.jar.location"/></not>
  300.                 <available file="${javafx.sdk}${file.separator}tools${file.separator}ant-javafx.jar"/>
  301.             </and>
  302.         </condition>
  303.     </target>
  304.     <target name="-set-ant-javafx-in-fxsdk-tools" depends="-set-ant-javafx-in-fxsdk-lib,-check-ant-javafx-in-fxsdk-tools" if="do.set.ant-javafx.in.fxsdk.tools">
  305.         <property name="ant-javafx.jar.location" value="${javafx.sdk}${file.separator}tools${file.separator}ant-javafx.jar"/>
  306.     </target>
  307.     <target name="-check-ant-javafx-in-platform-home-lib" if="platform.home">
  308.         <condition property="do.set.ant-javafx.in.platform.home.lib">
  309.             <and>
  310.                 <not><isset property="ant-javafx.jar.location"/></not>
  311.                 <available file="${platform.home}${file.separator}lib${file.separator}ant-javafx.jar"/>
  312.             </and>
  313.         </condition>
  314.     </target>
  315.     <target name="-set-ant-javafx-in-platform-home-lib" depends="-set-ant-javafx-in-fxsdk-tools,-check-ant-javafx-in-platform-home-lib" if="do.set.ant-javafx.in.platform.home.lib">
  316.         <property name="ant-javafx.jar.location" value="${platform.home}${file.separator}lib${file.separator}ant-javafx.jar"/>
  317.     </target>
  318.     <target name="-check-ant-javafx-in-platform-home-tools" if="platform.home">
  319.         <condition property="do.set.ant-javafx.in.platform.home.tools">
  320.             <and>
  321.                 <not><isset property="ant-javafx.jar.location"/></not>
  322.                 <available file="${platform.home}${file.separator}tools${file.separator}ant-javafx.jar"/>
  323.             </and>
  324.         </condition>
  325.     </target>
  326.     <target name="-set-ant-javafx-in-platform-home-tools" depends="-set-ant-javafx-in-platform-home-lib,-check-ant-javafx-in-platform-home-tools" if="do.set.ant-javafx.in.platform.home.tools">
  327.         <property name="ant-javafx.jar.location" value="${platform.home}${file.separator}tools${file.separator}ant-javafx.jar"/>
  328.     </target>
  329.     <target name="-check-ant-javafx-in-probjdk-lib" unless="ant-javafx.jar.location">
  330.         <condition property="do.set.ant-javafx.in.probjdk.lib">
  331.             <and>
  332.                 <not><isset property="ant-javafx.jar.location"/></not>
  333.                 <available file="${java.home}${file.separator}..${file.separator}lib${file.separator}ant-javafx.jar"/>
  334.             </and>
  335.         </condition>
  336.     </target>
  337.     <target name="-set-ant-javafx-in-probjdk-lib" depends="-set-ant-javafx-in-platform-home-tools,-check-ant-javafx-in-probjdk-lib" if="do.set.ant-javafx.in.probjdk.lib">
  338.         <property name="ant-javafx.jar.location" value="${java.home}${file.separator}..${file.separator}lib${file.separator}ant-javafx.jar"/>
  339.     </target>
  340.     <target name="-check-ant-javafx-in-probjdk-tools" unless="ant-javafx.jar.location">
  341.         <condition property="do.set.ant-javafx.in.probjdk.tools">
  342.             <and>
  343.                 <not><isset property="ant-javafx.jar.location"/></not>
  344.                 <available file="${java.home}${file.separator}..${file.separator}tools${file.separator}ant-javafx.jar"/>
  345.             </and>
  346.         </condition>
  347.     </target>
  348.     <target name="-set-ant-javafx-in-probjdk-tools" depends="-set-ant-javafx-in-probjdk-lib,-check-ant-javafx-in-probjdk-tools" if="do.set.ant-javafx.in.probjdk.tools">
  349.         <property name="ant-javafx.jar.location" value="${java.home}${file.separator}..${file.separator}tools${file.separator}ant-javafx.jar"/>
  350.     </target>
  351.     <target name="-check-ant-javafx-in-macjdk-lib" unless="ant-javafx.jar.location">
  352.         <condition property="do.set.ant-javafx.in.macjdk.lib">
  353.             <and>
  354.                 <not><isset property="ant-javafx.jar.location"/></not>
  355.                 <available file="${java.home}${file.separator}lib${file.separator}ant-javafx.jar"/>
  356.             </and>
  357.         </condition>
  358.     </target>
  359.     <target name="-set-ant-javafx-in-macjdk-lib" depends="-set-ant-javafx-in-probjdk-tools,-check-ant-javafx-in-macjdk-lib" if="do.set.ant-javafx.in.macjdk.lib">
  360.         <property name="ant-javafx.jar.location" value="${java.home}${file.separator}lib${file.separator}ant-javafx.jar"/>
  361.     </target>
  362.     <target name="-check-ant-javafx-in-envjdk-lib" unless="ant-javafx.jar.location">
  363.         <property environment="env"/>
  364.         <condition property="do.set.ant-javafx.in.envjdk.lib">
  365.             <and>
  366.                 <not><isset property="ant-javafx.jar.location"/></not>
  367.                 <available file="${env.JAVA_HOME}${file.separator}lib${file.separator}ant-javafx.jar"/>
  368.             </and>
  369.         </condition>
  370.     </target>
  371.     <target name="-set-ant-javafx-in-envjdk-lib" depends="-set-ant-javafx-in-macjdk-lib,-check-ant-javafx-in-envjdk-lib" if="do.set.ant-javafx.in.envjdk.lib">
  372.         <property name="ant-javafx.jar.location" value="${env.JAVA_HOME}${file.separator}lib${file.separator}ant-javafx.jar"/>
  373.     </target>
  374.     <target name="-check-ant-javafx-in-envjdk-tools" unless="ant-javafx.jar.location">
  375.         <property environment="env"/>
  376.         <condition property="do.set.ant-javafx.in.envjdk.tools">
  377.             <and>
  378.                 <not><isset property="ant-javafx.jar.location"/></not>
  379.                 <available file="${env.JAVA_HOME}${file.separator}tools${file.separator}ant-javafx.jar"/>
  380.             </and>
  381.         </condition>
  382.     </target>
  383.     <target name="-set-ant-javafx-in-envjdk-tools" depends="-set-ant-javafx-in-envjdk-lib,-check-ant-javafx-in-envjdk-tools" if="do.set.ant-javafx.in.envjdk.tools">
  384.         <property name="ant-javafx.jar.location" value="${env.JAVA_HOME}${file.separator}tools${file.separator}ant-javafx.jar"/>
  385.     </target>
  386.     <target name="-pre-check-ant-javafx-version" depends="-set-ant-javafx-in-envjdk-tools" unless="ant-javafx-version-already-checked-in-jfximpl">
  387.         <condition property="do.check.ant-javafx.version">
  388.             <and>
  389.                 <isset property="ant-javafx.jar.location"/>
  390.                 <not><isset property="ant-javafx-version-already-checked-in-jfximpl"/></not>
  391.             </and>
  392.         </condition>
  393.     </target>
  394.     <target name="-set-endorsed-javafx-ant-classpath" depends="-check-endorsed-javafx-ant-classpath,-pre-check-ant-javafx-version" if="endorsed-javafx-ant-classpath-available">
  395.         <property name="javafx.ant.classpath" value="${endorsed.javafx.ant.classpath}:${ant-javafx.jar.location}"/>
  396.     </target>
  397.     <target name="-set-javafx-ant-classpath" depends="-check-endorsed-javafx-ant-classpath,-pre-check-ant-javafx-version" unless="endorsed-javafx-ant-classpath-available">
  398.         <property name="javafx.ant.classpath" value="${ant-javafx.jar.location}"/>
  399.     </target>
  400.     <target name="-check-ant-javafx-version" depends="-pre-check-ant-javafx-version,
  401.            -set-endorsed-javafx-ant-classpath,-set-javafx-ant-classpath" if="do.check.ant-javafx.version">
  402.         <echo message="ant-javafx.jar.location = ${ant-javafx.jar.location}" level="verbose"/>
  403.         <echo message="javafx.ant.classpath = ${javafx.ant.classpath}" level="verbose"/>
  404.         <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
  405.            uri="javafx:com.sun.javafx.tools.ant"
  406.            classpath="${javafx.ant.classpath}"/>
  407.         <condition property="have-fx-ant-init">
  408.             <typefound name="javafx:com.sun.javafx.tools.ant:init-ant"/>
  409.         </condition>
  410.         <property name="ant-javafx-version-already-checked-in-jfximpl" value="true"/>
  411.         <echo message="have-fx-ant-init = ${have-fx-ant-init}" level="verbose"/>
  412.     </target>
  413.     <target name="-check-jfx-sdk-version-old" depends="-check-ant-javafx-version" unless="have-fx-ant-init">
  414.         <property name="javafx.ant.version" value="1.0"/>
  415.     </target>
  416.     <target name="-check-jfx-sdk-version-new" depends="-check-ant-javafx-version" if="have-fx-ant-init">
  417.         <fx:init-ant/>
  418.         <condition property="have-fx-ant-api-1.1">
  419.             <!-- new features from JavaFX 2.0.2 are available in API version 1.1 or later -->
  420.             <matches pattern="1.[1-9]" string="${javafx.ant.version}"/>
  421.         </condition>
  422.         <condition property="have-fx-ant-api-1.2">
  423.             <!-- new features from JavaFX 2.2 are available in API version 1.2 or later -->
  424.             <matches pattern="1.[2-9]" string="${javafx.ant.version}"/>
  425.         </condition>
  426.     </target>
  427.     <target name="-check-jfx-sdk-version" depends="-check-jfx-sdk-version-old, -check-jfx-sdk-version-new" unless="jfx.sdk.version.checked">
  428.         <echo message="Detected JavaFX Ant API version ${javafx.ant.version}" level="info"/>
  429.         <echo message="have-fx-ant-api-1.1 = ${have-fx-ant-api-1.1}" level="verbose"/>
  430.         <echo message="have-fx-ant-api-1.2 = ${have-fx-ant-api-1.2}" level="verbose"/>
  431.         <echo message="javafx.ant.classpath = ${javafx.ant.classpath}" level="verbose"/>
  432.         <property name="jfx.sdk.version.checked" value="true"/>
  433.     </target>
  434.  
  435.     <target name="-check-jfx-deployment" depends="-check-jdk-version,-check-jfx-sdk-version">
  436.         <condition property="jfx-deployment-available">
  437.             <and>
  438.                 <or>
  439.                     <isset property="do.set.ant-javafx.in.fxsdk.lib"/>
  440.                     <isset property="do.set.ant-javafx.in.fxsdk.tools"/>
  441.                     <isset property="do.set.ant-javafx.in.platform.home.lib"/>
  442.                     <isset property="do.set.ant-javafx.in.platform.home.tools"/>
  443.                     <isset property="do.set.ant-javafx.in.probjdk.lib"/>
  444.                     <isset property="do.set.ant-javafx.in.probjdk.tools"/>
  445.                     <isset property="do.set.ant-javafx.in.envjdk.lib"/>
  446.                     <isset property="do.set.ant-javafx.in.envjdk.tools"/>
  447.                 </or>
  448.                 <isset property="ant-javafx.jar.location"/>
  449.             </and>
  450.         </condition>
  451.         <condition property="jfx-deployment-missing+jdk7u6">
  452.             <and>
  453.                 <not><isset property="jfx-deployment-available"/></not>
  454.                 <not><isset property="have-jdk-pre7u6"/></not>
  455.             </and>
  456.         </condition>
  457.         <condition property="jfx-deployment-missing+javafx.sdk.missing+default">
  458.             <and>
  459.                 <not><isset property="jfx-deployment-available"/></not>
  460.                 <isset property="have-jdk-pre7u6"/>
  461.                 <isset property="javafx.sdk.missing+default"/>
  462.             </and>
  463.         </condition>
  464.         <condition property="jfx-deployment-missing+javafx.sdk.missing-default">
  465.             <and>
  466.                 <not><isset property="jfx-deployment-available"/></not>
  467.                 <isset property="have-jdk-pre7u6"/>
  468.                 <isset property="javafx.sdk.missing-default"/>
  469.             </and>
  470.         </condition>
  471.         <fail message="Error:${line.separator}JavaFX deployment library not found in active JDK.${line.separator}Please check that the JDK is correctly installed and its version is at least 7u4 on Mac or 7u6 on other systems." if="jfx-deployment-missing+jdk7u6"/>
  472.         <fail message="Error:${line.separator}JavaFX deployment library not found.${line.separator}JavaFX SDK path undefined. Check the definition of ${platform.active} in Java Platform Manager${line.separator}(or directly the properties platform.active and javafx.sdk in project.properties file).${line.separator}Note: If missing, the default JavaFX-enabled platform gets created automatically when creating a new JavaFX Project." if="jfx-deployment-missing+javafx.sdk.missing+default"/>
  473.         <fail message="Error:${line.separator}JavaFX deployment library not found.${line.separator}JavaFX SDK path undefined. Check the definition of ${platform.active} in Java Platform Manager${line.separator}(or directly the properties platform.active and javafx.sdk in project.properties file)." if="jfx-deployment-missing+javafx.sdk.missing-default"/>
  474.         <fail message="Error:${line.separator}JavaFX deployment library not found." unless="jfx-deployment-available"/>
  475.         <echo message="jfx-deployment-available = ${jfx-deployment-available}" level="verbose"/>
  476.     </target>
  477.    
  478.    
  479.     <!-- Check availability of main JavaFX runtime jar (jfxrt.jar) -->
  480.  
  481.     <target name="-check-property-javafx.runtime">
  482.         <echo message="javafx.runtime = ${javafx.runtime}" level="verbose"/>
  483.         <condition property="javafx.runtime.defined">
  484.             <and>
  485.                 <isset property="javafx.runtime"/>
  486.                 <not><contains string="${javafx.runtime}" substring="$${platform" casesensitive="false"/></not>
  487.             </and>
  488.         </condition>
  489.         <condition property="javafx.runtime.missing+default">
  490.             <and>
  491.                 <equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/>
  492.                 <not><isset property="javafx.runtime.defined"/></not>
  493.             </and>
  494.         </condition>
  495.         <condition property="javafx.runtime.missing-default">
  496.             <and>
  497.                 <not><equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/></not>
  498.                 <not><isset property="javafx.runtime.defined"/></not>
  499.             </and>
  500.         </condition>
  501.         <echo message="javafx.runtime.defined = ${javafx.runtime.defined}" level="verbose"/>
  502.         <echo message="javafx.runtime.missing+default = ${javafx.runtime.missing+default}" level="verbose"/>
  503.         <echo message="javafx.runtime.missing-default = ${javafx.runtime.missing-default}" level="verbose"/>
  504.     </target>
  505.  
  506.     <target name="-check-jfxrt-in-fxrt" depends="-check-property-javafx.runtime" if="javafx.runtime.defined">
  507.         <condition property="do.set.jfxrt.in.fxrt.old">
  508.             <and>
  509.                 <not><isset property="jfxrt.jar.location"/></not>
  510.                 <available file="${javafx.runtime}${file.separator}lib${file.separator}jfxrt.jar"/>
  511.             </and>
  512.         </condition>
  513.         <condition property="do.set.jfxrt.in.fxrt.new">
  514.             <and>
  515.                 <not><isset property="do.set.jfxrt.in.fxrt.old"/></not>
  516.                 <not><isset property="jfxrt.jar.location"/></not>
  517.                 <available file="${javafx.runtime}${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  518.             </and>
  519.         </condition>
  520.     </target>
  521.     <target name="-set-jfxrt-in-fxrt-old" depends="-check-jfxrt-in-fxrt" if="do.set.jfxrt.in.fxrt.old">
  522.         <property name="jfxrt.jar.location" value="${javafx.runtime}${file.separator}lib${file.separator}jfxrt.jar"/>
  523.     </target>
  524.     <target name="-set-jfxrt-in-fxrt-new" depends="-set-jfxrt-in-fxrt-old,-check-jfxrt-in-fxrt" if="do.set.jfxrt.in.fxrt.new">
  525.         <property name="jfxrt.jar.location" value="${javafx.runtime}${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  526.     </target>
  527.     <target name="-check-jfxrt-in-fxsdk-jre" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
  528.         <condition property="do.set.jfxrt.in.fxsdk.jre.old">
  529.             <and>
  530.                 <not><isset property="jfxrt.jar.location"/></not>
  531.                 <available file="${javafx.sdk}${file.separator}jre${file.separator}lib${file.separator}jfxrt.jar"/>
  532.             </and>
  533.         </condition>
  534.         <condition property="do.set.jfxrt.in.fxsdk.jre.new">
  535.             <and>
  536.                 <not><isset property="do.set.jfxrt.in.fxsdk.jre.old"/></not>
  537.                 <not><isset property="jfxrt.jar.location"/></not>
  538.                 <available file="${javafx.sdk}${file.separator}jre${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  539.             </and>
  540.         </condition>
  541.     </target>
  542.     <target name="-set-jfxrt-in-fxsdk-jre-old" depends="-set-jfxrt-in-fxrt-new,-check-jfxrt-in-fxsdk-jre" if="do.set.jfxrt.in.fxsdk.jre.old">
  543.         <property name="jfxrt.jar.location" value="${javafx.sdk}${file.separator}jre${file.separator}lib${file.separator}jfxrt.jar"/>
  544.     </target>
  545.     <target name="-set-jfxrt-in-fxsdk-jre-new" depends="-set-jfxrt-in-fxsdk-jre-old,-check-jfxrt-in-fxsdk-jre" if="do.set.jfxrt.in.fxsdk.jre.new">
  546.         <property name="jfxrt.jar.location" value="${javafx.sdk}${file.separator}jre${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  547.     </target>
  548.     <target name="-check-jfxrt-in-fxsdk-rt" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
  549.         <condition property="do.set.jfxrt.in.fxsdk.rt.old">
  550.             <and>
  551.                 <not><isset property="jfxrt.jar.location"/></not>
  552.                 <available file="${javafx.sdk}${file.separator}rt${file.separator}lib${file.separator}jfxrt.jar"/>
  553.             </and>
  554.         </condition>
  555.         <condition property="do.set.jfxrt.in.fxsdk.rt.new">
  556.             <and>
  557.                 <not><isset property="do.set.jfxrt.in.fxsdk.rt.old"/></not>
  558.                 <not><isset property="jfxrt.jar.location"/></not>
  559.                 <available file="${javafx.sdk}${file.separator}rt${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  560.             </and>
  561.         </condition>
  562.     </target>
  563.     <target name="-set-jfxrt-in-fxsdk-rt-old" depends="-set-jfxrt-in-fxsdk-jre-new,-check-jfxrt-in-fxsdk-rt" if="do.set.jfxrt.in.fxsdk.rt.old">
  564.         <property name="jfxrt.jar.location" value="${javafx.sdk}${file.separator}rt${file.separator}lib${file.separator}jfxrt.jar"/>
  565.     </target>
  566.     <target name="-set-jfxrt-in-fxsdk-rt-new" depends="-set-jfxrt-in-fxsdk-rt-old,-check-jfxrt-in-fxsdk-rt" if="do.set.jfxrt.in.fxsdk.rt.new">
  567.         <property name="jfxrt.jar.location" value="${javafx.sdk}${file.separator}rt${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  568.     </target>
  569.     <target name="-check-jfxrt-in-platform-home-jre" if="platform.home">
  570.         <condition property="do.set.jfxrt.in.platform.home.jre.old">
  571.             <and>
  572.                 <not><isset property="jfxrt.jar.location"/></not>
  573.                 <available file="${platform.home}${file.separator}jre${file.separator}lib${file.separator}jfxrt.jar"/>
  574.             </and>
  575.         </condition>
  576.         <condition property="do.set.jfxrt.in.platform.home.jre.new">
  577.             <and>
  578.                 <not><isset property="do.set.jfxrt.in.platform.home.jre.old"/></not>
  579.                 <not><isset property="jfxrt.jar.location"/></not>
  580.                 <available file="${platform.home}${file.separator}jre${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  581.             </and>
  582.         </condition>
  583.     </target>
  584.     <target name="-set-jfxrt-in-platform-home-jre-old" depends="-set-jfxrt-in-fxsdk-rt-new,-check-jfxrt-in-platform-home-jre" if="do.set.jfxrt.in.platform.home.jre.old">
  585.         <property name="jfxrt.jar.location" value="${platform.home}${file.separator}jre${file.separator}lib${file.separator}jfxrt.jar"/>
  586.     </target>
  587.     <target name="-set-jfxrt-in-platform-home-jre-new" depends="-set-jfxrt-in-platform-home-jre-old,-check-jfxrt-in-platform-home-jre" if="do.set.jfxrt.in.platform.home.jre.new">
  588.         <property name="jfxrt.jar.location" value="${platform.home}${file.separator}jre${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  589.     </target>
  590.     <target name="-check-jfxrt-in-platform-home-rt" if="platform.home">
  591.         <condition property="do.set.jfxrt.in.platform.home.rt.old">
  592.             <and>
  593.                 <not><isset property="jfxrt.jar.location"/></not>
  594.                 <available file="${platform.home}${file.separator}rt${file.separator}lib${file.separator}jfxrt.jar"/>
  595.             </and>
  596.         </condition>
  597.         <condition property="do.set.jfxrt.in.platform.home.rt.new">
  598.             <and>
  599.                 <not><isset property="do.set.jfxrt.in.platform.home.rt.old"/></not>
  600.                 <not><isset property="jfxrt.jar.location"/></not>
  601.                 <available file="${platform.home}${file.separator}rt${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  602.             </and>
  603.         </condition>
  604.     </target>
  605.     <target name="-set-jfxrt-in-platform-home-rt-old" depends="-set-jfxrt-in-platform-home-jre-new,-check-jfxrt-in-platform-home-rt" if="do.set.jfxrt.in.platform.home.rt.old">
  606.         <property name="jfxrt.jar.location" value="${platform.home}${file.separator}rt${file.separator}lib${file.separator}jfxrt.jar"/>
  607.     </target>
  608.     <target name="-set-jfxrt-in-platform-home-rt-new" depends="-set-jfxrt-in-platform-home-rt-old,-check-jfxrt-in-platform-home-rt" if="do.set.jfxrt.in.platform.home.rt.new">
  609.         <property name="jfxrt.jar.location" value="${platform.home}${file.separator}rt${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  610.     </target>
  611.     <target name="-check-jfxrt-in-jre" unless="jfxrt.jar.location">
  612.         <condition property="do.set.jfxrt.in.jre.old">
  613.             <and>
  614.                 <not><isset property="jfxrt.jar.location"/></not>
  615.                 <available file="${java.home}${file.separator}lib${file.separator}jfxrt.jar"/>
  616.             </and>
  617.         </condition>
  618.         <condition property="do.set.jfxrt.in.jre.new">
  619.             <and>
  620.                 <not><isset property="do.set.jfxrt.in.jre.old"/></not>
  621.                 <not><isset property="jfxrt.jar.location"/></not>
  622.                 <available file="${java.home}${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  623.             </and>
  624.         </condition>
  625.     </target>
  626.     <target name="-set-jfxrt-in-jre-old" depends="-set-jfxrt-in-platform-home-rt-new,-check-jfxrt-in-jre" if="do.set.jfxrt.in.jre.old">
  627.         <property name="jfxrt.jar.location" value="${java.home}${file.separator}lib${file.separator}jfxrt.jar"/>
  628.     </target>
  629.     <target name="-set-jfxrt-in-jre-new" depends="-set-jfxrt-in-jre-old,-check-jfxrt-in-jre" if="do.set.jfxrt.in.jre.new">
  630.         <property name="jfxrt.jar.location" value="${java.home}${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  631.     </target>
  632.     <target name="-check-jfxrt-in-envjdk-jre" unless="jfxrt.jar.location">
  633.         <property environment="env"/>
  634.         <condition property="do.set.jfxrt.in.envjdk.jre.old">
  635.             <and>
  636.                 <not><isset property="jfxrt.jar.location"/></not>
  637.                 <available file="${env.JAVA_HOME}${file.separator}jre${file.separator}lib${file.separator}jfxrt.jar"/>
  638.             </and>
  639.         </condition>
  640.         <condition property="do.set.jfxrt.in.envjdk.jre.new">
  641.             <and>
  642.                 <not><isset property="do.set.jfxrt.in.envjdk.jre.old"/></not>
  643.                 <not><isset property="jfxrt.jar.location"/></not>
  644.                 <available file="${env.JAVA_HOME}${file.separator}jre${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  645.             </and>
  646.         </condition>
  647.     </target>
  648.     <target name="-set-jfxrt-in-envjdk-jre-old" depends="-set-jfxrt-in-jre-new,-check-jfxrt-in-envjdk-jre" if="do.set.jfxrt.in.envjdk.jre.old">
  649.         <property name="jfxrt.jar.location" value="${env.JAVA_HOME}${file.separator}jre${file.separator}lib${file.separator}jfxrt.jar"/>
  650.     </target>
  651.     <target name="-set-jfxrt-in-envjdk-jre-new" depends="-set-jfxrt-in-envjdk-jre-old,-check-jfxrt-in-envjdk-jre" if="do.set.jfxrt.in.envjdk.jre.new">
  652.         <property name="jfxrt.jar.location" value="${env.JAVA_HOME}${file.separator}jre${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar"/>
  653.     </target>
  654.     <target name="-pre-check-jfx-runtime" depends="-set-jfxrt-in-envjdk-jre-new">
  655.         <echo message="jfxrt.jar.location = ${jfxrt.jar.location}" level="verbose"/>
  656.     </target>
  657.  
  658.     <target name="-check-jfx-runtime" depends="-check-jdk-version, -pre-check-jfx-runtime">
  659.         <condition property="jfx-runtime-available">
  660.             <and>
  661.                 <or>
  662.                     <isset property="do.set.jfxrt.in.fxrt.old"/>
  663.                     <isset property="do.set.jfxrt.in.fxrt.new"/>
  664.                     <isset property="do.set.jfxrt.in.fxsdk.jre.old"/>
  665.                     <isset property="do.set.jfxrt.in.fxsdk.jre.new"/>
  666.                     <isset property="do.set.jfxrt.in.fxsdk.rt.old"/>
  667.                     <isset property="do.set.jfxrt.in.fxsdk.rt.new"/>
  668.                     <isset property="do.set.jfxrt.in.platform.home.jre.old"/>
  669.                     <isset property="do.set.jfxrt.in.platform.home.jre.new"/>
  670.                     <isset property="do.set.jfxrt.in.platform.home.rt.old"/>
  671.                     <isset property="do.set.jfxrt.in.platform.home.rt.new"/>
  672.                     <isset property="do.set.jfxrt.in.jre.old"/>
  673.                     <isset property="do.set.jfxrt.in.jre.new"/>
  674.                     <isset property="do.set.jfxrt.in.envjdk.jre.old"/>
  675.                     <isset property="do.set.jfxrt.in.envjdk.jre.new"/>
  676.                 </or>
  677.                 <isset property="jfxrt.jar.location"/>
  678.             </and>
  679.         </condition>
  680.         <fail message="Error:${line.separator}JavaFX runtime JAR not found." unless="jfx-runtime-available"/>
  681.         <echo message="jfx-runtime-available = ${jfx-runtime-available}" level="verbose"/>
  682.     </target>
  683.  
  684.  
  685.     <!-- Check availability of WebStart executable -->
  686.  
  687.     <target name="-check-webstart-in-fxrt" depends="-check-property-javafx.runtime" if="javafx.runtime.defined">
  688.         <condition property="do.set.webstart.in.fxrt">
  689.             <and>
  690.                 <not><isset property="active.webstart.executable"/></not>
  691.                 <isset property="javafx.runtime.defined"/>
  692.                 <or>
  693.                     <available file="${javafx.runtime}${file.separator}bin${file.separator}javaws.exe"/>
  694.                     <available file="${javafx.runtime}${file.separator}bin${file.separator}javaws"/>
  695.                 </or>
  696.             </and>
  697.         </condition>
  698.     </target>
  699.     <target name="-set-webstart-in-fxrt" depends="-check-webstart-in-fxrt" if="do.set.webstart.in.fxrt">
  700.         <property name="active.webstart.executable" value="${javafx.runtime}${file.separator}bin${file.separator}javaws"/>
  701.     </target>
  702.     <target name="-check-webstart-in-fxsdk-jre" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
  703.         <condition property="do.set.webstart.in.fxsdk.jre">
  704.             <and>
  705.                 <not><isset property="active.webstart.executable"/></not>
  706.                 <isset property="javafx.sdk.defined"/>
  707.                 <or>
  708.                     <available file="${javafx.sdk}${file.separator}jre${file.separator}bin${file.separator}javaws.exe"/>
  709.                     <available file="${javafx.sdk}${file.separator}jre${file.separator}bin${file.separator}javaws"/>
  710.                 </or>
  711.             </and>
  712.         </condition>
  713.     </target>
  714.     <target name="-set-webstart-in-fxsdk-jre" depends="-set-webstart-in-fxrt,-check-webstart-in-fxsdk-jre" if="do.set.webstart.in.fxsdk.jre">
  715.         <property name="active.webstart.executable" value="${javafx.sdk}${file.separator}jre${file.separator}bin${file.separator}javaws"/>
  716.     </target>
  717.     <target name="-check-webstart-in-fxsdk" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
  718.         <condition property="do.set.webstart.in.fxsdk">
  719.             <and>
  720.                 <not><isset property="active.webstart.executable"/></not>
  721.                 <isset property="javafx.sdk.defined"/>
  722.                 <or>
  723.                     <available file="${javafx.sdk}${file.separator}bin${file.separator}javaws.exe"/>
  724.                     <available file="${javafx.sdk}${file.separator}bin${file.separator}javaws"/>
  725.                 </or>
  726.             </and>
  727.         </condition>
  728.     </target>
  729.     <target name="-set-webstart-in-fxsdk" depends="-set-webstart-in-fxsdk-jre,-check-webstart-in-fxsdk" if="do.set.webstart.in.fxsdk">
  730.         <property name="active.webstart.executable" value="${javafx.sdk}${file.separator}bin${file.separator}javaws"/>
  731.     </target>
  732.     <target name="-check-webstart-in-platform-home-jre" if="platform.home">
  733.         <condition property="do.set.webstart.in.platform.home.jre">
  734.             <and>
  735.                 <not><isset property="active.webstart.executable"/></not>
  736.                 <or>
  737.                     <available file="${platform.home}${file.separator}jre${file.separator}bin${file.separator}javaws.exe"/>
  738.                     <available file="${platform.home}${file.separator}jre${file.separator}bin${file.separator}javaws"/>
  739.                 </or>
  740.             </and>
  741.         </condition>
  742.     </target>
  743.     <target name="-set-webstart-in-platform-home-jre" depends="-set-webstart-in-fxsdk,-check-webstart-in-platform-home-jre" if="do.set.webstart.in.platform.home.jre">
  744.         <property name="active.webstart.executable" value="${platform.home}${file.separator}jre${file.separator}bin${file.separator}javaws"/>
  745.     </target>
  746.     <target name="-check-webstart-in-platform-home" if="platform.home">
  747.         <condition property="do.set.webstart.in.platform.home">
  748.             <and>
  749.                 <not><isset property="active.webstart.executable"/></not>
  750.                 <or>
  751.                     <available file="${platform.home}${file.separator}bin${file.separator}javaws.exe"/>
  752.                     <available file="${platform.home}${file.separator}bin${file.separator}javaws"/>
  753.                 </or>
  754.             </and>
  755.         </condition>
  756.     </target>
  757.     <target name="-set-webstart-in-platform-home" depends="-set-webstart-in-platform-home-jre,-check-webstart-in-platform-home" if="do.set.webstart.in.platform.home">
  758.         <property name="active.webstart.executable" value="${platform.home}${file.separator}bin${file.separator}javaws"/>
  759.     </target>
  760.     <target name="-check-webstart-in-jre" unless="active.webstart.executable">
  761.         <condition property="do.set.webstart.in.jre">
  762.             <and>
  763.                 <not><isset property="active.webstart.executable"/></not>
  764.                 <or>
  765.                     <available file="${java.home}${file.separator}bin${file.separator}javaws.exe"/>
  766.                     <available file="${java.home}${file.separator}bin${file.separator}javaws"/>
  767.                 </or>
  768.             </and>
  769.         </condition>
  770.     </target>
  771.     <target name="-set-webstart-in-jre" depends="-set-webstart-in-platform-home,-check-webstart-in-jre" if="do.set.webstart.in.jre">
  772.         <property name="active.webstart.executable" value="${java.home}${file.separator}bin${file.separator}javaws"/>
  773.     </target>
  774.     <target name="-check-webstart-in-probjdk" unless="active.webstart.executable">
  775.         <condition property="do.set.webstart.in.probjdk">
  776.             <and>
  777.                 <not><isset property="active.webstart.executable"/></not>
  778.                 <or>
  779.                     <available file="${java.home}${file.separator}..${file.separator}bin${file.separator}javaws.exe"/>
  780.                     <available file="${java.home}${file.separator}..${file.separator}bin${file.separator}javaws"/>
  781.                 </or>
  782.             </and>
  783.         </condition>
  784.     </target>
  785.     <target name="-set-webstart-in-probjdk" depends="-set-webstart-in-jre,-check-webstart-in-probjdk" if="do.set.webstart.in.probjdk">
  786.         <property name="active.webstart.executable" value="${java.home}${file.separator}..${file.separator}bin${file.separator}javaws"/>
  787.     </target>
  788.     <target name="-check-webstart-in-envjdk" unless="active.webstart.executable">
  789.         <property environment="env"/>
  790.         <condition property="do.set.webstart.in.envjdk">
  791.             <and>
  792.                 <not><isset property="active.webstart.executable"/></not>
  793.                 <or>
  794.                     <available file="${env.JAVA_HOME}${file.separator}bin${file.separator}javaws.exe"/>
  795.                     <available file="${env.JAVA_HOME}${file.separator}bin${file.separator}javaws"/>
  796.                 </or>
  797.             </and>
  798.         </condition>
  799.     </target>
  800.     <target name="-set-webstart-in-envjdk" depends="-set-webstart-in-probjdk,-check-webstart-in-envjdk" if="do.set.webstart.in.envjdk">
  801.         <property name="active.webstart.executable" value="${env.JAVA_HOME}${file.separator}bin${file.separator}javaws"/>
  802.     </target>
  803.     <target name="-pre-check-webstart-in-unix" depends="-check-operating-system,-set-webstart-in-envjdk" unless="active.webstart.executable">
  804.         <condition property="running.on.unix-active.webstart.executable">
  805.             <and>
  806.                 <not><isset property="active.webstart.executable"/></not>
  807.                 <isset property="running.on.unix"/>
  808.             </and>
  809.         </condition>
  810.     </target>
  811.     <target name="-check-webstart-in-unix" depends="-pre-check-webstart-in-unix" if="running.on.unix-active.webstart.executable">
  812.         <local name="exec.which.javaws.result"/>
  813.         <exec executable="command" failifexecutionfails="false" failonerror="false" resultproperty="exec.which.javaws.result" outputproperty="exec.which.javaws.output">
  814.             <arg line="-v javaws"/>
  815.         </exec>
  816.         <condition property="do.set.webstart.in.unix">
  817.             <and>
  818.                 <not><isset property="active.webstart.executable"/></not>
  819.                 <isset property="exec.which.javaws.result"/>
  820.                 <equals arg1="${exec.which.javaws.result}" arg2="0"/>
  821.                 <isset property="exec.which.javaws.output"/>
  822.                 <not><equals arg1="${exec.which.javaws.output}" arg2=""/></not>
  823.             </and>
  824.         </condition>
  825.         <echo message="do.set.webstart.in.unix = ${do.set.webstart.in.unix}" level="verbose"/>
  826.     </target>
  827.     <target name="-set-webstart-in-unix" depends="-set-webstart-in-envjdk,-check-webstart-in-unix" if="do.set.webstart.in.unix">
  828.         <property name="active.webstart.executable" value="${exec.which.javaws.output}"/>
  829.     </target>
  830.     <target name="-pre-check-jfx-webstart" depends="-set-webstart-in-unix">
  831.         <echo message="active.webstart.executable = ${active.webstart.executable}" level="verbose"/>
  832.     </target>
  833.  
  834.     <target name="-check-jfx-webstart" depends="-pre-check-jfx-webstart">
  835.         <condition property="jfx-webstart-available">
  836.             <and>
  837.                 <or>
  838.                     <isset property="do.set.webstart.in.fxrt"/>
  839.                     <isset property="do.set.webstart.in.fxsdk.jre"/>
  840.                     <isset property="do.set.webstart.in.fxsdk"/>
  841.                     <isset property="do.set.webstart.in.platform.home.jre"/>
  842.                     <isset property="do.set.webstart.in.platform.home"/>
  843.                     <isset property="do.set.webstart.in.jre"/>
  844.                     <isset property="do.set.webstart.in.probjdk"/>
  845.                     <isset property="do.set.webstart.in.envjdk"/>
  846.                     <isset property="do.set.webstart.in.unix"/>
  847.                 </or>
  848.                 <isset property="active.webstart.executable"/>
  849.             </and>
  850.         </condition>
  851.         <condition property="jfx-webstart-missing+jdk7u6">
  852.             <and>
  853.                 <not><isset property="jfx-webstart-available"/></not>
  854.                 <not><isset property="have-jdk-pre7u6"/></not>
  855.             </and>
  856.         </condition>
  857.         <condition property="jfx-webstart-missing+javafx.runtime.missing+default">
  858.             <and>
  859.                 <not><isset property="jfx-webstart-available"/></not>
  860.                 <isset property="have-jdk-pre7u6"/>
  861.                 <isset property="javafx.runtime.missing+default"/>
  862.             </and>
  863.         </condition>
  864.         <condition property="jfx-webstart-missing+javafx.runtime.missing-default">
  865.             <and>
  866.                 <not><isset property="jfx-webstart-available"/></not>
  867.                 <isset property="have-jdk-pre7u6"/>
  868.                 <isset property="javafx.runtime.missing-default"/>
  869.             </and>
  870.         </condition>
  871.         <fail message="Error:${line.separator}WebStart executable could not be found in active JDK.${line.separator}Please check that the JDK is correctly installed and its version is at least 7u6." if="jfx-webstart-missing+jdk7u6"/>
  872.         <fail message="Error:${line.separator}WebStart executable could not be found.${line.separator}JavaFX RT path undefined. Check the definition of ${platform.active} in Java Platform Manager${line.separator}(or directly the properties platform.active and javafx.runtime in project.properties file).${line.separator}Note: If missing, the default JavaFX-enabled platform gets created automatically when creating a new JavaFX Project." if="jfx-webstart-missing+javafx.runtime.missing+default"/>
  873.         <fail message="Error:${line.separator}WebStart executable could not be found.${line.separator}JavaFX RT path undefined. Check the definition of ${platform.active} in Java Platform Manager${line.separator}(or directly the properties platform.active and javafx.runtime in project.properties file)." if="jfx-webstart-missing+javafx.runtime.missing-default"/>
  874.         <fail message="Error:${line.separator}WebStart executable could not be found." unless="jfx-webstart-available"/>
  875.         <echo message="jfx-webstart-available = ${jfx-webstart-available}" level="verbose"/>
  876.     </target>
  877.  
  878.    
  879.     <!-- Legacy targets kept for compatibility with older build-impl.xml scripts -->
  880.  
  881.     <!-- Note: target "-check-javafx" is not necessary any more but is referenced from NB 7.1 build-impl.xml -->
  882.     <target name="-check-javafx"/>
  883.     <!-- Note: target "-javafx-check-error" is not necessary any more but is referenced from NB 7.1 build-impl.xml -->
  884.     <target name="-javafx-check-error"/>    
  885.     <!-- Note: target "-init-javafx" is not necessary any more but is referenced from NB 7.1 build-impl.xml -->
  886.     <target name="-init-javafx"/>
  887.  
  888.    
  889.     <!-- Check project properties -->
  890.    
  891.     <target name="-check-default-run-config" unless="config">
  892.         <property name="config" value="&lt;default config&gt;"/>
  893.     </target>
  894.    
  895.     <target name="-check-project">
  896.         <condition property="main-class-available">
  897.             <isset property="javafx.main.class"/>
  898.         </condition>
  899.         <condition property="vmargs-available">
  900.             <and>
  901.                 <isset property="run.jvmargs"/>
  902.                 <not><equals arg1="${run.jvmargs}" arg2=""/></not>
  903.             </and>
  904.         </condition>
  905.         <condition property="preloader-available">
  906.             <and>
  907.                 <isset property="javafx.preloader.enabled"/>
  908.                 <equals arg1="${javafx.preloader.enabled}" arg2="true"/>
  909.                 <isset property="javafx.preloader.class"/>
  910.                 <not><equals arg1="${javafx.preloader.class}" arg2=""/></not>
  911.                 <isset property="javafx.preloader.jar.filename"/>
  912.                 <not><equals arg1="${javafx.preloader.jar.filename}" arg2=""/></not>
  913.             </and>
  914.         </condition>
  915.         <condition property="app-with-preloader">
  916.             <and>
  917.                 <istrue value="${preloader-available}"/>
  918.                 <istrue value="${main-class-available}"/>
  919.             </and>
  920.         </condition>
  921.         <condition property="app-with-external-preloader-jar">
  922.             <and>
  923.                 <isset property="app-with-preloader"/>
  924.                 <isset property="javafx.preloader.type"/>
  925.                 <equals arg1="${javafx.preloader.type}" arg2="jar" trim="true"/>
  926.             </and>
  927.         </condition>
  928.         <condition property="app-without-preloader">
  929.             <and>
  930.                 <not>
  931.                     <istrue value="${preloader-available}"/>
  932.                 </not>
  933.                 <istrue value="${main-class-available}"/>
  934.             </and>
  935.         </condition>
  936.         <condition property="preloader-app">
  937.             <and>
  938.                 <isset property="javafx.preloader"/>
  939.                 <equals arg1="${javafx.preloader}" arg2="true"/>
  940.             </and>
  941.         </condition>
  942.         <condition property="fx-in-swing-app">
  943.             <and>
  944.                 <isset property="javafx.swing"/>
  945.                 <equals arg1="${javafx.swing}" arg2="true"/>
  946.             </and>
  947.         </condition>
  948.         <condition property="fx-in-swing-workaround-app">
  949.             <and>
  950.                 <istrue value="${fx-in-swing-app}"/>
  951.                 <istrue value="${preloader-app}"/>
  952.             </and>
  953.         </condition>
  954.         <condition property="preloader-app-no-workaround">
  955.             <and>
  956.                 <istrue value="${preloader-app}"/>
  957.                 <not><istrue value="${fx-in-swing-app}"/></not>
  958.             </and>
  959.         </condition>
  960.         <condition property="html-template-available">
  961.             <and>
  962.                 <isset property="javafx.run.htmltemplate"/>
  963.                 <not>
  964.                     <equals arg1="${javafx.run.htmltemplate}" arg2=""/>
  965.                 </not>
  966.             </and>
  967.         </condition>
  968.         <condition property="icon-available">
  969.             <and>
  970.                 <isset property="javafx.deploy.icon"/>
  971.                 <not>
  972.                     <equals arg1="${javafx.deploy.icon}" arg2=""/>
  973.                 </not>
  974.             </and>
  975.         </condition>
  976.         <condition property="dimensions-available">
  977.             <and>
  978.                 <isset property="javafx.run.width"/>
  979.                 <isset property="javafx.run.height"/>
  980.                 <not><equals arg1="${javafx.run.width}" arg2=""/></not>
  981.                 <not><equals arg1="${javafx.run.height}" arg2=""/></not>
  982.             </and>
  983.         </condition>
  984.         <condition property="update-mode-background">
  985.             <and>
  986.                 <isset property="javafx.deploy.backgroundupdate"/>
  987.                 <equals arg1="${javafx.deploy.backgroundupdate}" arg2="true" trim="true"/>
  988.             </and>
  989.         </condition>
  990.         <condition property="offline-allowed">
  991.             <and>
  992.                 <isset property="javafx.deploy.allowoffline"/>
  993.                 <equals arg1="${javafx.deploy.allowoffline}" arg2="true" trim="true"/>
  994.             </and>
  995.         </condition>
  996.         <condition property="permissions-elevated">
  997.             <and>
  998.                 <isset property="javafx.deploy.permissionselevated"/>
  999.                 <equals arg1="${javafx.deploy.permissionselevated}" arg2="true" trim="true"/>
  1000.             </and>
  1001.         </condition>
  1002.         <condition property="binary-encode-css">
  1003.             <and>
  1004.                 <isset property="javafx.binarycss"/>
  1005.                 <equals arg1="${javafx.binarycss}" arg2="true" trim="true"/>
  1006.             </and>
  1007.         </condition>
  1008.         <condition property="rebase-lib-jars">
  1009.             <and>
  1010.                 <isset property="javafx.rebase.libs"/>
  1011.                 <equals arg1="${javafx.rebase.libs}" arg2="true" trim="true"/>
  1012.             </and>
  1013.         </condition>
  1014.         <condition property="use-blob-signing">
  1015.             <and>
  1016.                 <isset property="javafx.signing.blob"/>
  1017.                 <equals arg1="${javafx.signing.blob}" arg2="true" trim="true"/>
  1018.             </and>
  1019.         </condition>
  1020.         <echo message="main-class-available = ${main-class-available}" level="verbose"/>
  1021.         <echo message="vmargs-available = ${vmargs-available}" level="verbose"/>
  1022.         <echo message="preloader-available = ${preloader-available}" level="verbose"/>
  1023.         <echo message="app-with-preloader = ${app-with-preloader}" level="verbose"/>
  1024.         <echo message="app-with-preloader-without-project = ${app-with-preloader-without-project}" level="verbose"/>
  1025.         <echo message="app-without-preloader = ${app-without-preloader}" level="verbose"/>
  1026.         <echo message="preloader-app = ${preloader-app}" level="verbose"/>
  1027.         <echo message="fx-in-swing-app = ${fx-in-swing-app}" level="verbose"/>
  1028.         <echo message="fx-in-swing-workaround-app = ${fx-in-swing-workaround-app}" level="verbose"/>
  1029.         <echo message="preloader-app-no-workaround = ${preloader-app-no-workaround}" level="verbose"/>
  1030.         <echo message="html-template-available = ${html-template-available}" level="verbose"/>
  1031.         <echo message="icon-available = ${icon-available}" level="verbose"/>
  1032.         <echo message="dimensions-available = ${dimensions-available}" level="verbose"/>
  1033.         <echo message="update-mode-background = ${update-mode-background}" level="verbose"/>
  1034.         <echo message="offline-allowed = ${offline-allowed}" level="verbose"/>
  1035.         <echo message="permissions-elevated = ${permissions-elevated}" level="verbose"/>
  1036.         <echo message="binary-encode-css = ${binary-encode-css}" level="verbose"/>
  1037.         <echo message="rebase-lib-jars = ${rebase-lib-jars}" level="verbose"/>
  1038.         <echo message="use-blob-signing = ${use-blob-signing}" level="verbose"/>
  1039.     </target>
  1040.  
  1041.     <target name="-swing-api-check" depends="-check-project,-check-jfx-deployment" if="fx-in-swing-app">
  1042.         <condition property="fx-in-swing-app-workaround">
  1043.             <and>
  1044.                 <isset property="fx-in-swing-app"/>
  1045.                 <not><isset property="have-fx-ant-api-1.2"/></not>
  1046.             </and>
  1047.         </condition>
  1048.     </target>
  1049.     <target name="-swing-api-warning" depends="-swing-api-check" if="fx-in-swing-app-workaround">
  1050.         <echo message="Info: No support for FX-in-Swing deployment detected in current JavaFX SDK. Using workaround instead."/>
  1051.     </target>
  1052.  
  1053.     <target name="-icon-deployment-check" depends="-check-project,-check-jfx-deployment" if="icon-available">
  1054.         <condition property="icon-deployment-may-not-be-supported">
  1055.             <and>
  1056.                 <isset property="icon-available"/>
  1057.                 <not><isset property="have-fx-ant-api-1.1"/></not>
  1058.             </and>
  1059.         </condition>
  1060.     </target>
  1061.     <target name="-icon-warning" depends="-icon-deployment-check" if="icon-deployment-may-not-be-supported">
  1062.         <echo message="Warning: Note that due to a bug in early JavaFX 2.0 SDK distributions the icon may not be properly set in deployment files."/>
  1063.     </target>
  1064.  
  1065.     <target name="-set-dimensions" depends="-check-project" if="dimensions-available">
  1066.         <property name="javafx.width" value="${javafx.run.width}"/>
  1067.         <property name="javafx.height" value="${javafx.run.height}"/>
  1068.     </target>
  1069.     <target name="-reset-dimensions" depends="-check-project" unless="dimensions-available">
  1070.         <property name="javafx.width" value="800"/>
  1071.         <property name="javafx.height" value="600"/>
  1072.     </target>
  1073.  
  1074.     <target name="-set-update-mode-background" depends="-check-project" if="update-mode-background">
  1075.         <property name="update-mode" value="background"/>
  1076.     </target>
  1077.     <target name="-set-update-mode-eager" depends="-check-project" unless="update-mode-background">
  1078.         <property name="update-mode" value="eager"/>
  1079.     </target>
  1080.  
  1081.     <target name="-set-permissions-elevated" depends="-check-project" if="permissions-elevated">
  1082.         <property name="permissions.elevated" value="true"/>
  1083.     </target>
  1084.     <target name="-reset-permissions-elevated" depends="-check-project" unless="permissions-elevated">
  1085.         <property name="permissions.elevated" value="false"/>
  1086.     </target>
  1087.  
  1088.     <target name="-set-binary-css" depends="-check-project,-init-css-conversion" if="do.copy.binary.css">
  1089.         <property name="css-include-ext" value="bss"/>
  1090.         <property name="css-exclude-ext" value="css"/>
  1091.     </target>
  1092.     <target name="-unset-binary-css" depends="-check-project,-init-css-conversion" unless="do.copy.binary.css">
  1093.         <property name="css-include-ext" value="css"/>
  1094.         <property name="css-exclude-ext" value="bss"/>
  1095.     </target>
  1096.     <target name="-copy-binary-css" depends="-init-css-conversion,-set-binary-css,-unset-binary-css,-copy-binary-css-bypass,-copy-binary-css-impl"/>
  1097.     <target name="-init-css-conversion" depends="-check-project,-check-ant-jre-version">
  1098.         <fileset id="cssfiles" dir="${basedir}${file.separator}${build.classes.dir}">
  1099.             <include name="**${file.separator}*.css"/>
  1100.         </fileset>
  1101.         <pathconvert refid="cssfiles" property="cssfileset.notempty" setonempty="false"/>
  1102.         <condition property="do.copy.binary.css">
  1103.             <and>
  1104.                 <isset property="binary-encode-css"/>
  1105.                 <isset property="cssfileset.notempty"/>
  1106.                 <not><isset property="have-jdk7-css2bin-bug"/></not>
  1107.             </and>
  1108.         </condition>
  1109.         <condition property="do.bypass.binary.css">
  1110.             <and>
  1111.                 <isset property="binary-encode-css"/>
  1112.                 <isset property="cssfileset.notempty"/>
  1113.                 <isset property="have-jdk7-css2bin-bug"/>
  1114.             </and>
  1115.         </condition>
  1116.         <echo message="do.copy.binary.css = ${do.copy.binary.css}" level="verbose"/>
  1117.         <echo message="do.bypass.binary.css = ${do.bypass.binary.css}" level="verbose"/>
  1118.     </target>
  1119.     <target name="-copy-binary-css-bypass" depends="-init-css-conversion" if="do.bypass.binary.css">
  1120.         <echo message="Warning: Bypassing FX CSS to BSS conversion due to a bug in &lt;fx:csstobin&gt; task in current JDK platform" level="warning"/>
  1121.     </target>
  1122.     <target name="-copy-binary-css-impl" depends="-init-css-conversion" if="do.copy.binary.css">
  1123.         <property name="cssfileslist" refid="cssfiles"/>
  1124.         <echo message="css files to binary convert: " level="verbose">${cssfileslist}</echo>
  1125.         <fx:csstobin outdir="${basedir}${file.separator}${build.classes.dir}">
  1126.             <fileset refid="cssfiles"/>
  1127.         </fx:csstobin>
  1128.     </target>
  1129.  
  1130.  
  1131.     <!-- Copy dependent libraries -->
  1132.    
  1133.     <!-- Note: target "-jfx-copylibs" is referenced from NB 7.1 build-impl.xml -->
  1134.     <target name="-jfx-copylibs" depends="init,compile,-pre-pre-jar,-pre-jar,-jfx-copylibs-warning" unless="fallback.no.javascript">
  1135.         <jfx-copylibs-js-impl/>
  1136.     </target>
  1137.     <target name="-jfx-copylibs-warning" if="fallback.no.javascript">
  1138.         <echo message="Warning: Dependent Libraries copy (-jfx-copylibs) skipped in fallback build mode due to JDK missing JavaScript support."/>
  1139.     </target>
  1140.     <macrodef name="jfx-copylibs-js-impl">
  1141.         <sequential>
  1142.             <local name="run.classpath.without.build.classes.and.dist.dir"/>
  1143.             <pathconvert property="run.classpath.without.build.classes.and.dist.dir">
  1144.                 <path path="${run.classpath}"/>
  1145.                 <map from="${basedir}${file.separator}${build.classes.dir}" to=""/>
  1146.                 <map from="${basedir}${file.separator}${dist.jar}" to=""/>
  1147.                 <scriptmapper language="javascript">
  1148.                     self.addMappedName(
  1149.                         (source.indexOf("jfxrt.jar") >= 0) ||
  1150.                         (source.indexOf("deploy.jar") >= 0) ||
  1151.                         (source.indexOf("javaws.jar") >= 0) ||
  1152.                         (source.indexOf("plugin.jar") >= 0)
  1153.                         ? "" : source
  1154.                     );
  1155.                 </scriptmapper>
  1156.             </pathconvert>
  1157.             <!-- add possibly missing dependencies at distance 2 (build system logic thus provides transitive closure) -->
  1158.             <local name="run.and.lib.classpath"/>
  1159.             <echo message="JavaScript: -jfx-copylibs" level="verbose"/>
  1160.             <script language="javascript">
  1161.                 <![CDATA[
  1162.                    function prefix(s, len) {
  1163.                        if(s == null || len <= 0 || s.length == 0) {
  1164.                            return new String("");
  1165.                        }
  1166.                        return new String(s.substr(0, len));
  1167.                    }
  1168.                    function defined(s) {
  1169.                        return (s != null) && (s != "null") && (s.length > 0);
  1170.                    }
  1171.                    var pathConvert = project.createTask("pathconvert");
  1172.                    pathConvert.setProperty("run.and.lib.classpath");
  1173.                    var classPath = new String(project.getProperty("run.classpath.without.build.classes.and.dist.dir"));
  1174.                    var fileSeparator = new String(project.getProperty("file.separator"));
  1175.                    if(defined(classPath)) {
  1176.                        var classPathCopy = pathConvert.createPath();
  1177.                        classPathCopy.setPath(classPath);
  1178.                        var pathArray;
  1179.                        if(classPath.indexOf(";") != -1) {
  1180.                            pathArray = classPath.split(";");
  1181.                        } else {
  1182.                            pathArray = classPath.split(":");
  1183.                        }
  1184.                        var added = new java.lang.StringBuilder();
  1185.                        for (var i = 0; i < pathArray.length; i++) {
  1186.                            var index = pathArray[i].lastIndexOf(fileSeparator);
  1187.                            if (index >= 0) {
  1188.                                var onePath = prefix(pathArray[i], index+1).concat("lib");
  1189.                                var oneDir = new java.io.File(onePath);
  1190.                                if(oneDir.exists()) {
  1191.                                    var fs = project.createDataType( "fileset" );
  1192.                                    fs.setDir( oneDir );
  1193.                                    fs.setIncludes("*.jar");
  1194.                                    var ds = fs.getDirectoryScanner(project);
  1195.                                    var srcFiles = ds.getIncludedFiles();
  1196.                                    for (var j = 0; j < srcFiles.length; j++) {
  1197.                                        if(classPath.indexOf( srcFiles[j] ) == -1 && added.indexOf( srcFiles[j] ) == -1) {
  1198.                                            var path = pathConvert.createPath();
  1199.                                            path.setPath( onePath.concat(fileSeparator).concat(srcFiles[j]) );
  1200.                                            added.append( srcFiles[j] );
  1201.                                        }
  1202.                                    }
  1203.                                }
  1204.                            }
  1205.                        }
  1206.                    }
  1207.                    pathConvert.perform();
  1208.                ]]>
  1209.             </script>
  1210.             <echo message="run.and.lib.classpath = ${run.and.lib.classpath}" level="verbose"/>
  1211.             <delete dir="${dist.dir}${file.separator}lib" includeEmptyDirs="true" quiet="true"/>
  1212.             <copy todir="${dist.dir}${file.separator}lib" flatten="true" preservelastmodified="true" overwrite="true">
  1213.                 <path>
  1214.                     <pathelement path="${run.and.lib.classpath}"/>
  1215.                 </path>
  1216.             </copy>
  1217.         </sequential>
  1218.     </macrodef>
  1219.    
  1220.     <target name="-copy-external-preloader-jar" depends="-check-project" if="app-with-external-preloader-jar">
  1221.         <copy file="${javafx.preloader.jar.path}" todir="${dist.dir}${file.separator}lib"/>
  1222.     </target>
  1223.  
  1224.  
  1225.     <!-- Optional classpath re-base of dependent JAR manifests after copy to lib/, required by GlassFish -->
  1226.  
  1227.     <!-- Note: target "-rebase-libs" is referenced from NB 7.1 build-impl.xml -->
  1228.     <target name="-rebase-libs" depends="-check-project, -jfx-copylibs, -check-rebase-libs, -rebase-libs-warning" if="do-rebase-lib-jars">
  1229.         <rebase-libs-js-impl/>
  1230.     </target>
  1231.     <target name="-check-rebase-libs">
  1232.         <condition property="do-rebase-lib-jars">
  1233.             <and>
  1234.                 <isset property="rebase-lib-jars"/>
  1235.                 <not><isset property="fallback.no.javascript"/></not>
  1236.             </and>
  1237.         </condition>
  1238.         <condition property="do-skip-rebase-libs">
  1239.             <and>
  1240.                 <isset property="rebase-lib-jars"/>
  1241.                 <isset property="fallback.no.javascript"/>
  1242.             </and>
  1243.         </condition>
  1244.     </target>
  1245.     <target name="-rebase-libs-warning" depends="-check-rebase-libs" if="do-skip-rebase-libs">
  1246.         <echo message="Warning: Dependent Libraries JARs rebase (-rebase-libs) skipped in fallback build mode due to JDK missing JavaScript support."/>
  1247.     </target>
  1248.  
  1249.     <macrodef name="rebase-libs-js-impl">
  1250.         <sequential>
  1251.             <property name="pp_rebase_dir" value="${basedir}${file.separator}${dist.dir}${file.separator}lib"/>
  1252.             <property name="pp_rebase_fs" value="*.jar"/>
  1253.             <echo message="JavaScript: -rebase-libs-js-impl" level="verbose"/>
  1254.             <script language="javascript">
  1255.                 <![CDATA[
  1256.                    var dir = new String(project.getProperty("pp_rebase_dir"));
  1257.                    var fDir = new java.io.File(dir);
  1258.                    if( fDir.exists() ) {
  1259.                        var callTask = project.createTask("antcall");
  1260.                        callTask.setTarget("-rebase-libs-macro-call");
  1261.                        var param = callTask.createParam();
  1262.                        param.setName("jar.file.to.rebase");
  1263.                        var includes = new String(project.getProperty("pp_rebase_fs"));
  1264.                        var fs = project.createDataType("fileset");
  1265.                        fs.setDir( fDir );
  1266.                        fs.setIncludes(includes);
  1267.                        var ds = fs.getDirectoryScanner(project);
  1268.                        var srcFiles = ds.getIncludedFiles();
  1269.                        for (var i = 0; i < srcFiles.length; i++) {
  1270.                            param.setValue(dir.concat("${file.separator}").concat(srcFiles[i]));
  1271.                            callTask.perform();
  1272.                        }
  1273.                    }
  1274.                ]]>
  1275.             </script>
  1276.         </sequential>
  1277.     </macrodef>
  1278.  
  1279.     <macrodef name="rebase-lib">
  1280.         <attribute name="jarfile"/>
  1281.         <sequential>
  1282.             <local name="tmpdir"/>
  1283.             <property name="tmpdir" value="${java.io.tmpdir}${file.separator}${user.name}_${ant.project.name}_rebase" />
  1284.             <echo message="tmpdir = ${tmpdir}" level="verbose"/>
  1285.             <delete dir="${tmpdir}" quiet="true"/>
  1286.             <mkdir dir="${tmpdir}"/>
  1287.             <unzip src="@{jarfile}" dest="${tmpdir}">
  1288.                 <patternset>
  1289.                     <include name="META-INF${file.separator}MANIFEST.MF"/>
  1290.                 </patternset>
  1291.             </unzip>
  1292.             <local name="manifest.file.temp"/>
  1293.             <property name="manifest.file.temp" value="${tmpdir}${file.separator}META-INF${file.separator}MANIFEST.MF" />
  1294.             <echo message="manifest.file.temp = ${manifest.file.temp}" level="verbose"/>
  1295.             <!-- edited manifest file -->
  1296.             <local name="manifest.file.temp.new"/>
  1297.             <property name="manifest.file.temp.new" value="${manifest.file.temp}_new" />
  1298.             <echo message="manifest.file.temp.new = ${manifest.file.temp.new}" level="verbose"/>
  1299.             <echo message="JavaScript: rebase-lib" level="verbose"/>
  1300.             <script language="javascript">
  1301.                 <![CDATA[
  1302.                    var UTF_8 = "UTF-8";
  1303.                    var ATTR_CLASS_PATH = "Class-Path";
  1304.                    var ATTR_CLASS_PATH_FX = "JavaFX-Class-Path";
  1305.                    function endsWith(s, suffix) {
  1306.                        var i = s.lastIndexOf(suffix);
  1307.                        return  (i != -1) && (i == (s.length - suffix.length));
  1308.                    }
  1309.                    function isSigned(manifest) {        
  1310.                        var sections = manifest.getSectionNames();
  1311.                        while(sections.hasMoreElements()) {
  1312.                            var sectionname = new String(sections.nextElement());
  1313.                            var section = manifest.getSection(sectionname);
  1314.                            if(section != null) {
  1315.                                var sectionKeys = section.getAttributeKeys();
  1316.                                while (sectionKeys.hasMoreElements()) {
  1317.                                    var element = new String(sectionKeys.nextElement());
  1318.                                    if (endsWith(element, "-Digest") || endsWith(element, "-digest")) {
  1319.                                        return true;
  1320.                                    }
  1321.                                }
  1322.                            }
  1323.                        }
  1324.                        return false;
  1325.                    }
  1326.                    var src = new String(project.getProperty("manifest.file.temp"));
  1327.                    var srf = new java.io.File(src);
  1328.                    var manifest;
  1329.                    try {
  1330.                        var fis = new java.io.FileInputStream(srf);
  1331.                        try {
  1332.                            var isr = new java.io.InputStreamReader(fis, UTF_8);
  1333.                            try {
  1334.                                manifest = new org.apache.tools.ant.taskdefs.Manifest(isr);
  1335.                            } finally {
  1336.                                isr.close();
  1337.                            }
  1338.                        } finally {
  1339.                            fis.close();
  1340.                        }
  1341.                    } catch(e) {
  1342.                        manifest = null;
  1343.                    }
  1344.                    if(manifest != null) {
  1345.                        if(isSigned(manifest)) {
  1346.                            print("Warning: Signed JAR can not be rebased.");
  1347.                        } else {
  1348.                            var mainSection = manifest.getMainSection();
  1349.                            var classPath = mainSection.getAttributeValue(ATTR_CLASS_PATH);
  1350.                            var classPathAttr = null;
  1351.                            if (classPath != null) {
  1352.                                classPathAttr = ATTR_CLASS_PATH;
  1353.                            } else {
  1354.                                classPath = mainSection.getAttributeValue(ATTR_CLASS_PATH_FX);
  1355.                                if(classPath != null) {
  1356.                                    classPathAttr = ATTR_CLASS_PATH_FX;
  1357.                                }
  1358.                            }
  1359.                            if(classPath != null) {
  1360.                                var result = new java.lang.StringBuilder();
  1361.                                var changed = false;
  1362.                                var pathArray = classPath.split(" ");
  1363.                                for (var i = 0; i < pathArray.length; i++) {
  1364.                                    if (result.length() > 0) {
  1365.                                        result.append(' ');
  1366.                                    }
  1367.                                    var index = pathArray[i].lastIndexOf('/');
  1368.                                    if (index >= 0 && index < pathArray[i].length - 1) {
  1369.                                        pathArray[i] = pathArray[i].substring(index+1);
  1370.                                        changed = true;
  1371.                                    }
  1372.                                    result.append(pathArray[i]);
  1373.                                }
  1374.                                mainSection.removeAttribute(classPathAttr);
  1375.                                mainSection.addAttributeAndCheck(new org.apache.tools.ant.taskdefs.Manifest.Attribute(classPathAttr, result.toString()));
  1376.                                var tgt = new String(project.getProperty("manifest.file.temp.new"));
  1377.                                var tgf = new java.io.File(tgt);
  1378.                                try {
  1379.                                    var fos = new java.io.FileOutputStream(tgf);
  1380.                                    try {
  1381.                                        var osw = new java.io.OutputStreamWriter(fos, UTF_8);
  1382.                                        try {
  1383.                                            var manifestOut = new java.io.PrintWriter(osw);
  1384.                                            manifest.write(manifestOut);
  1385.                                            manifestOut.close();
  1386.                                        } finally {
  1387.                                            osw.close();
  1388.                                        }
  1389.                                    } finally {
  1390.                                        fos.close();
  1391.                                    }
  1392.                                } catch(e) {
  1393.                                    print("Warning: problem storing rebased manifest file.");
  1394.                                }
  1395.                            }
  1396.                        }
  1397.                    }
  1398.                ]]>
  1399.             </script>
  1400.             <antcall target="-move-new-manifest-if-exists">
  1401.                 <param name="move.file.from" value="${manifest.file.temp.new}"/>
  1402.                 <param name="move.file.to" value="${manifest.file.temp}"/>
  1403.             </antcall>
  1404.             <zip destfile="@{jarfile}" basedir="${tmpdir}" update="true"/>
  1405.             <delete dir="${tmpdir}" quiet="true"/>
  1406.         </sequential>
  1407.     </macrodef>
  1408.    
  1409.     <target name="-new-temp-mainfest-existence">
  1410.         <condition property="new-temp-manifest-exists">
  1411.             <available file="${move.file.from}"/>
  1412.         </condition>
  1413.         <echo message="new-temp-manifest-exists = ${new-temp-manifest-exists}" level="verbose"/>
  1414.     </target>
  1415.    
  1416.     <target name="-move-new-manifest-if-exists" depends="-new-temp-mainfest-existence" if="new-temp-manifest-exists">
  1417.         <move file="${move.file.from}" tofile="${move.file.to}" failonerror="false"/>
  1418.     </target>
  1419.    
  1420.     <target name="-rebase-libs-macro-call">
  1421.         <echo message="Rebase jarfile = ${jar.file.to.rebase}" level="verbose"/>
  1422.         <rebase-lib jarfile="${jar.file.to.rebase}"/>
  1423.     </target>
  1424.    
  1425.  
  1426.     <!-- Main Deployment Target -->
  1427.  
  1428.     <!-- Note: target "jfx-deployment" is referenced from NB 7.1+ build-impl.xml -->
  1429.     <target name="jfx-deployment" depends="-check-jfx-deployment-launch,-do-jfx-deployment-script,-do-jfx-deployment-noscript" if="jfx-deployment-available"/>
  1430.  
  1431.     <target name="-check-dist-lib-exists">
  1432.         <deploy-defines/>
  1433.         <available file="${jfx.deployment.dir}${file.separator}lib" type="dir" property="dist.lib.exists"/>
  1434.     </target>
  1435.     <target name="-check-jfx-deployment-jar-current-nolib" depends="-check-dist-lib-exists" unless="dist.lib.exists">
  1436.         <uptodate property="jfx-deployment-jar-current" targetfile="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}" >
  1437.             <srcfiles dir="${basedir}${file.separator}${build.classes.dir}" includes="**${file.separator}*"/>
  1438.             <srcfiles dir="${basedir}${file.separator}nbproject" includes="**${file.separator}*"/>
  1439.         </uptodate>
  1440.     </target>
  1441.     <target name="-check-jfx-deployment-jar-current-lib" depends="-check-dist-lib-exists" if="dist.lib.exists">
  1442.         <uptodate property="jfx-deployment-jar-current" targetfile="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}" >
  1443.             <srcfiles dir="${basedir}${file.separator}${build.classes.dir}" includes="**${file.separator}*"/>
  1444.             <srcfiles dir="${jfx.deployment.dir}${file.separator}lib" includes="**${file.separator}*"/>
  1445.             <srcfiles dir="${basedir}${file.separator}nbproject" includes="**${file.separator}*"/>
  1446.         </uptodate>
  1447.     </target>
  1448.     <target name="-check-jfx-deployment-launch" depends="-check-jfx-deployment,-check-jfx-deployment-jar-current-nolib,-check-jfx-deployment-jar-current-lib">
  1449.         <condition property="do-jfx-deployment-script">
  1450.             <and>
  1451.                 <isset property="jfx-deployment-available"/>
  1452.                 <not><isset property="fallback.no.javascript"/></not>
  1453.                 <not><isset property="jfx-deployment-jar-current"/></not>
  1454.             </and>
  1455.         </condition>
  1456.         <condition property="do-jfx-deployment-noscript">
  1457.             <and>
  1458.                 <isset property="jfx-deployment-available"/>
  1459.                 <isset property="fallback.no.javascript"/>
  1460.                 <not><isset property="jfx-deployment-jar-current"/></not>
  1461.             </and>
  1462.         </condition>
  1463.     </target>
  1464.     <target name="-do-jfx-deployment-script" depends="-check-jfx-deployment-launch" if="do-jfx-deployment-script">
  1465.         <antcall target="jfx-deployment-script"/>
  1466.     </target>
  1467.     <target name="-do-jfx-deployment-noscript" depends="-check-jfx-deployment-launch" if="do-jfx-deployment-noscript">
  1468.         <antcall target="jfx-deployment-noscript"/>
  1469.     </target>
  1470.  
  1471.     <target name="jfx-deployment-script" depends="-check-jfx-deployment,-check-project,
  1472.        -swing-api-warning,-icon-warning,
  1473.        -set-dimensions,-reset-dimensions,-set-update-mode-background,-set-update-mode-eager,
  1474.        -set-permissions-elevated,-reset-permissions-elevated,
  1475.        -copy-external-preloader-jar,-copy-binary-css,
  1476.        -deploy-app-sign-nopreloader-notemplate,
  1477.        -deploy-app-sign-preloader-notemplate,
  1478.        -deploy-app-sign-nopreloader-template,
  1479.        -deploy-app-sign-preloader-template,
  1480.        -deploy-app-sign-nopreloader-notemplate-swing,
  1481.        -deploy-app-sign-nopreloader-template-swing,
  1482.        -deploy-app-sign-blob-nopreloader-notemplate,
  1483.        -deploy-app-sign-blob-preloader-notemplate,
  1484.        -deploy-app-sign-blob-nopreloader-template,
  1485.        -deploy-app-sign-blob-preloader-template,
  1486.        -deploy-app-sign-blob-nopreloader-notemplate-swing,
  1487.        -deploy-app-sign-blob-nopreloader-template-swing,
  1488.        -deploy-app-nosign-nopreloader-notemplate,
  1489.        -deploy-app-nosign-preloader-notemplate,
  1490.        -deploy-app-nosign-nopreloader-template,
  1491.        -deploy-app-nosign-preloader-template,
  1492.        -deploy-app-nosign-nopreloader-notemplate-swing,
  1493.        -deploy-app-nosign-nopreloader-template-swing"
  1494.        if="jfx-deployment-available">
  1495.     </target>
  1496.  
  1497.     <target name="jfx-deployment-noscript" depends="-check-jfx-deployment,-check-project,
  1498.        -swing-api-warning,-icon-warning,
  1499.        -set-dimensions,-reset-dimensions,-set-update-mode-background,-set-update-mode-eager,
  1500.        -set-permissions-elevated,-reset-permissions-elevated,
  1501.        -copy-external-preloader-jar,-copy-binary-css,
  1502.        -fallback-deploy-app-sign-nopreloader-notemplate,
  1503.        -fallback-deploy-app-sign-preloader-notemplate,
  1504.        -fallback-deploy-app-sign-nopreloader-template,
  1505.        -fallback-deploy-app-sign-preloader-template,
  1506.        -fallback-deploy-app-sign-nopreloader-notemplate-swing,
  1507.        -fallback-deploy-app-sign-nopreloader-template-swing,
  1508.        -fallback-deploy-app-sign-blob-nopreloader-notemplate,
  1509.        -fallback-deploy-app-sign-blob-preloader-notemplate,
  1510.        -fallback-deploy-app-sign-blob-nopreloader-template,
  1511.        -fallback-deploy-app-sign-blob-preloader-template,
  1512.        -fallback-deploy-app-sign-blob-nopreloader-notemplate-swing,
  1513.        -fallback-deploy-app-sign-blob-nopreloader-template-swing,
  1514.        -fallback-deploy-app-nosign-nopreloader-notemplate,
  1515.        -fallback-deploy-app-nosign-preloader-notemplate,
  1516.        -fallback-deploy-app-nosign-nopreloader-template,
  1517.        -fallback-deploy-app-nosign-preloader-template,
  1518.        -fallback-deploy-app-nosign-nopreloader-notemplate-swing,
  1519.        -fallback-deploy-app-nosign-nopreloader-template-swing"
  1520.        if="jfx-deployment-available">
  1521.     </target>
  1522.  
  1523.  
  1524.     <!-- Security / Signing -->
  1525.    
  1526.     <target name="-unavailable-signjars-task" depends="-check-jfx-deployment" unless="jfx-deployment-available">
  1527.         <echo message="Warning: Task required to sign JAR file is missing, check the availability of JavaFX 2.0 deployment tasks. JAR files will not be signed."/>
  1528.     </target>
  1529.  
  1530.     <target name="-security-props-check">
  1531.         <condition property="javafx.signed.true">
  1532.             <istrue value="${javafx.signing.enabled}"/>
  1533.         </condition>
  1534.     </target>
  1535.  
  1536.     <target name="-check-signing-possible" depends="-security-props-check,-check-jfx-deployment,-unavailable-signjars-task">
  1537.         <condition property="javafx.signed.true+signjars.task.available">
  1538.             <and>
  1539.                 <isset property="javafx.signed.true"/>
  1540.                 <isset property="jfx-deployment-available"/>
  1541.             </and>
  1542.         </condition>
  1543.     </target>
  1544.    
  1545.     <target name="-javafx-init-keystore" depends="-check-signing-possible,-javafx-init-signing,-javafx-init-keystore1,-javafx-init-keystore2,-check-keystore-exists"
  1546.            if="javafx.signed.true+signjars.task.available" unless="do.not.init.keystore">
  1547.         <property name="javafx.signjar.vendor" value="CN=${application.vendor}"/>
  1548.         <echo message="Going to create default keystore in ${javafx.signjar.keystore}"/>
  1549.         <genkey dname="${javafx.signjar.vendor}" alias="${javafx.signjar.alias}" keystore="${javafx.signjar.keystore}"
  1550.            storepass="${javafx.signjar.storepass}" keypass="${javafx.signjar.keypass}"/>
  1551.     </target>
  1552.    
  1553.     <target name="-check-keystore-exists" depends="-security-props-check">
  1554.         <available property="javafx.signjar.keystore.exists" file="${javafx.signjar.keystore}"/>
  1555.         <condition property="do.not.init.keystore">
  1556.             <or>
  1557.                 <not><isset property="javafx.signed.true"/></not>
  1558.                 <isset property="javafx.signjar.keystore.exists"/>
  1559.             </or>
  1560.         </condition>
  1561.     </target>
  1562.  
  1563.     <target name="-javafx-init-signing">
  1564.         <condition property="generated.key.signing">
  1565.             <equals arg1="${javafx.signing.type}" arg2="self" trim="true"/>
  1566.         </condition>
  1567.     </target>
  1568.  
  1569.     <target name="-javafx-init-keystore1" depends="-javafx-init-signing" if="generated.key.signing">
  1570.         <property name="javafx.signjar.keystore" value="${basedir}${file.separator}build${file.separator}nb-jfx.jks" />
  1571.         <property name="javafx.signjar.storepass" value="storepass"/>
  1572.         <property name="javafx.signjar.keypass" value="keypass"/>
  1573.         <property name="javafx.signjar.alias" value="nb-jfx"/>
  1574.     </target>
  1575.  
  1576.     <target name="-javafx-init-keystore2" depends="-javafx-init-signing" unless="generated.key.signing">
  1577.         <property name="javafx.signjar.keystore" value="${javafx.signing.keystore}" />
  1578.         <property name="javafx.signjar.storepass" value="${javafx.signing.keystore.password}"/>
  1579.         <property name="javafx.signjar.keypass" value="${javafx.signing.keyalias.password}"/>
  1580.         <property name="javafx.signjar.alias" value="${javafx.signing.keyalias}"/>
  1581.     </target>
  1582.  
  1583.     <target name="-check-signing-security" depends="-security-props-check">
  1584.         <condition property="is.signing.unsafe">
  1585.             <or>
  1586.                 <not><isset property="javafx.signed.true"/></not>
  1587.                 <not><equals arg1="${javafx.signing.type}" arg2="key" casesensitive="false" trim="true"/></not>
  1588.             </or>
  1589.         </condition>
  1590.     </target>
  1591.  
  1592.     <target name="-warn-insufficient-signing" depends="-check-signing-security" if="is.signing.unsafe">
  1593.         <echo message="Warning: Unsigned and self-signed WebStart Applications and Applets are deprecated from JDK7u21 onwards due to security reasons.${line.separator}         To ensure future correct functionality please sign WebStart Applications and Applets using trusted certificate."/>
  1594.     </target>
  1595.  
  1596.    
  1597.     <!-- Project Deployment Macros -->
  1598.  
  1599.     <macrodef name="deploy-defines">
  1600.         <sequential>
  1601.             <basename property="jfx.deployment.jar" file="${dist.jar}"/>
  1602.             <property name="jfx.deployment.dir" location="${dist.dir}"/>
  1603.         </sequential>
  1604.     </macrodef>
  1605.  
  1606.     <macrodef name="deploy-preprocess">
  1607.         <sequential>
  1608.             <delete includeEmptyDirs="true" quiet="true">
  1609.                 <fileset dir="${jfx.deployment.dir}${file.separator}lib">
  1610.                     <exclude name="**${file.separator}*.jar"/>
  1611.                 </fileset>
  1612.             </delete>
  1613.         </sequential>
  1614.     </macrodef>
  1615.  
  1616.     <!-- fx:jar scripted call enables passing of arbitrarily long list of params and fx-version dependent behavior -->
  1617.     <macrodef name="deploy-jar">
  1618.         <sequential>
  1619.             <antcall target="-pre-jfx-jar"/>
  1620.             <echo message="javafx.ant.classpath = ${javafx.ant.classpath}" level="verbose"/>
  1621.             <typedef name="fx_jar" classname="com.sun.javafx.tools.ant.FXJar" classpath="${javafx.ant.classpath}"/>
  1622.             <echo message="Launching &lt;fx:jar&gt; task from ${ant-javafx.jar.location}" level="info"/>
  1623.             <property name="pp_jar_destfile" value="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}"/>
  1624.             <property name="pp_jar_buildclasses" value="${basedir}${file.separator}${build.classes.dir}"/>
  1625.             <property name="pp_jar_cssbss" value="**${file.separator}*.${css-exclude-ext}"/>
  1626.             <property name="pp_jar_dir" value="${jfx.deployment.dir}"/>
  1627.             <property name="pp_jar_fs1" value="lib${file.separator}${javafx.preloader.jar.filename}"/>
  1628.             <property name="pp_jar_fs2" value="lib${file.separator}*.jar"/>
  1629.             <echo message="deploy_jar: pp_jar_destfile = ${pp_jar_destfile}" level="verbose"/>
  1630.             <echo message="deploy_jar: pp_jar_buildclasses = ${pp_jar_buildclasses}" level="verbose"/>
  1631.             <echo message="deploy_jar: pp_jar_cssbss = ${pp_jar_cssbss}" level="verbose"/>
  1632.             <echo message="deploy_jar: pp_jar_dir = ${pp_jar_dir}" level="verbose"/>
  1633.             <echo message="deploy_jar: pp_jar_fs1 = ${pp_jar_fs1}" level="verbose"/>
  1634.             <echo message="deploy_jar: pp_jar_fs2 = ${pp_jar_fs2}" level="verbose"/>
  1635.             <echo message="JavaScript: deploy-jar" level="verbose"/>
  1636.             <script language="javascript">
  1637.                 <![CDATA[
  1638.                    function isTrue(prop) {
  1639.                        return prop != null &&
  1640.                           ( prop.toLowerCase() == "true" || prop.toLowerCase() == "yes" || prop.toLowerCase() == "on" );
  1641.                    }                    
  1642.                    function prefix(s, len) {
  1643.                        if(s == null || len <= 0 || s.length == 0) {
  1644.                            return new String("");
  1645.                        }
  1646.                        return new String(s.substr(0, len));
  1647.                    }
  1648.                    function replaceSuffix(s, os, ns) {
  1649.                        return prefix(s, s.indexOf(os)).concat(ns);
  1650.                    }
  1651.                    function startsWith(s, prefix) {
  1652.                        return (s != null) && (s.indexOf(prefix) == 0);
  1653.                    }
  1654.                    function endsWith(s, suffix) {
  1655.                        var i = s.lastIndexOf(suffix);
  1656.                        return  (i != -1) && (i == (s.length - suffix.length));
  1657.                    }
  1658.                    function defined(s) {
  1659.                        return (s != null) && (s != "null") && (s.length > 0);
  1660.                    }
  1661.                    function contains(array, prop) {
  1662.                        for (var i = 0; i < array.length; i++) {
  1663.                            var s1 = new String(array[i]);
  1664.                            var s2 = new String(prop);
  1665.                            if( s1.toLowerCase() == s2.toLowerCase() ) {
  1666.                                return true;
  1667.                            }
  1668.                        }
  1669.                        return false;
  1670.                    }
  1671.                    var S = new String(java.io.File.separator);
  1672.                    var JFXPAR = "javafx.param";
  1673.                    var JFXMAN = "javafx.manifest.entry";
  1674.                    var JFXPARN = "name";
  1675.                    var JFXPARV = "value";
  1676.                    var JFXPARH = "hidden";
  1677.                    var JFXLAZY = "download.mode.lazy.jar";
  1678.                    var withpreloader = new String(project.getProperty("app-with-preloader"));
  1679.                    var fx_ant_api_1_1 = new String(project.getProperty("have-fx-ant-api-1.1"));
  1680.                    var fx_ant_api_1_2 = new String(project.getProperty("have-fx-ant-api-1.2"));
  1681.                    var fx_in_swing_app = new String(project.getProperty("fx-in-swing-app"));
  1682.  
  1683.                    // get jars with lazy download mode property set
  1684.                    function getLazyJars() {
  1685.                        var jars = new Array();
  1686.                        var keys = project.getProperties().keys();
  1687.                        while(keys.hasMoreElements()) {
  1688.                            var pn = new String(keys.nextElement());
  1689.                            if(startsWith(pn, JFXLAZY)) {
  1690.                                var fname = new String(pn.substring(JFXLAZY.length+1));
  1691.                                jars.push(fname);
  1692.                            }
  1693.                        }
  1694.                        return jars.length > 0 ? jars : null;
  1695.                    }
  1696.                    // set download mode of dependent libraries
  1697.                    function setDownloadMode(fsEager, fsLazy, jars) {
  1698.                        for(var i = 0; i < jars.length; i++) {
  1699.                            fsEager.setExcludes("lib" + S + jars[i]);
  1700.                            fsLazy.setIncludes("lib" + S + jars[i]);
  1701.                        }
  1702.                    }
  1703.                    
  1704.                    // fx:jar
  1705.                    var jar = project.createTask("fx_jar");
  1706.                    jar.setProject(project);
  1707.                    var destfile = new String(project.getProperty("pp_jar_destfile"));
  1708.                    jar.setDestfile(destfile);
  1709.  
  1710.                    // fx:application
  1711.                    var app = jar.createApplication();
  1712.                    app.setProject(project);
  1713.                    var title = new String(project.getProperty("application.title"));
  1714.                    var mainclass;
  1715.                    if(isTrue(fx_in_swing_app) && isTrue(fx_ant_api_1_2)) {
  1716.                        mainclass = new String(project.getProperty("main.class"));
  1717.                        app.setToolkit("swing");
  1718.                    } else {
  1719.                        mainclass = new String(project.getProperty("javafx.main.class"));
  1720.                    }
  1721.                    var fallback = new String(project.getProperty("javafx.fallback.class"));
  1722.                    app.setName(title);
  1723.                    app.setMainClass(mainclass);
  1724.                    app.setFallbackClass(fallback);
  1725.                    if(isTrue(withpreloader)) {
  1726.                        preloaderclass = new String(project.getProperty("javafx.preloader.class"));
  1727.                        app.setPreloaderClass(preloaderclass);
  1728.                    }
  1729.                    var appversion = new String(project.getProperty("javafx.application.implementation.version"));
  1730.                    if(defined(appversion)) {
  1731.                        app.setVersion(appversion);
  1732.                    } else {
  1733.                        app.setVersion("1.0");
  1734.                    }
  1735.                    // fx:param, fx:argument
  1736.                    var searchHides = project.getProperties().keys();
  1737.                    var hides = new Array();
  1738.                    while(searchHides.hasMoreElements()) {
  1739.                        // collect all hidden property names
  1740.                        var pns = new String(searchHides.nextElement());
  1741.                        if(startsWith(pns, JFXPAR) && endsWith(pns, JFXPARN)) {
  1742.                            var propns = new String(project.getProperty(pns));
  1743.                            var phs = replaceSuffix(pns, JFXPARN, JFXPARH);
  1744.                            var proph = new String(project.getProperty(phs));
  1745.                            if(isTrue(proph)) {
  1746.                                hides.push(propns);
  1747.                            }
  1748.                         }
  1749.                    }
  1750.                    var keys = project.getProperties().keys();
  1751.                    while(keys.hasMoreElements()) {
  1752.                        var pn = new String(keys.nextElement());
  1753.                        if(startsWith(pn, JFXPAR) && endsWith(pn, JFXPARN)) {
  1754.                            var propn = new String(project.getProperty(pn));
  1755.                            if(defined(propn) && !contains(hides, propn)) {
  1756.                                var pv = replaceSuffix(pn, JFXPARN, JFXPARV);
  1757.                                var propv = new String(project.getProperty(pv));
  1758.                                if(defined(propv)) {
  1759.                                    var par = app.createParam();
  1760.                                    par.setName(propn);
  1761.                                    par.setValue(propv);
  1762.                                } else {
  1763.                                    if(isTrue(fx_ant_api_1_1)) {
  1764.                                        var arg = app.createArgument();
  1765.                                        arg.addText(propn);
  1766.                                    } else {
  1767.                                        print("Warning: Unnamed parameters not supported by this version of JavaFX SDK deployment Ant tasks. Upgrade JavaFX to 2.0.2 or higher.");
  1768.                                    }
  1769.                                }
  1770.                            }
  1771.                        }
  1772.                    }
  1773.                    
  1774.                    // fx:resources
  1775.                    var res = jar.createResources();
  1776.                    res.setProject(project);
  1777.                    var pdir = new String(project.getProperty("pp_jar_dir"));
  1778.                    if(isTrue(withpreloader)) {
  1779.                        var f1 = res.createFileSet();
  1780.                        f1.setProject(project);
  1781.                        f1.setDir(new java.io.File(pdir));
  1782.                        var i1 = new String(project.getProperty("pp_jar_fs1"));
  1783.                        f1.setIncludes(i1);
  1784.                        f1.setRequiredFor("preloader");
  1785.                        var f2 = res.createFileSet();
  1786.                        f2.setProject(project);
  1787.                        f2.setDir(new java.io.File(pdir));
  1788.                        var i2b = new String(project.getProperty("pp_jar_fs2"));
  1789.                        var e2c = new String(project.getProperty("pp_jar_fs1"));
  1790.                        f2.setIncludes(i2b);
  1791.                        f2.setExcludes(e2c);
  1792.                        f2.setRequiredFor("startup");
  1793.                        var lazyjars = getLazyJars();
  1794.                        if(lazyjars != null) {
  1795.                            var f3 = res.createFileSet();
  1796.                            f3.setProject(project);
  1797.                            f3.setDir(new java.io.File(pdir));
  1798.                            f3.setRequiredFor("runtime");
  1799.                            setDownloadMode(f2,f3,lazyjars);
  1800.                        }
  1801.                    } else {
  1802.                        var fn = res.createFileSet();
  1803.                        fn.setProject(project);
  1804.                        fn.setDir(new java.io.File(pdir));
  1805.                        var ib = new String(project.getProperty("pp_jar_fs2"));
  1806.                        fn.setIncludes(ib);
  1807.                        fn.setRequiredFor("startup");
  1808.                        var lazyjars = getLazyJars();
  1809.                        if(lazyjars != null) {
  1810.                            var fn2 = res.createFileSet();
  1811.                            fn2.setProject(project);
  1812.                            fn2.setDir(new java.io.File(pdir));
  1813.                            fn2.setRequiredFor("runtime");
  1814.                            setDownloadMode(fn,fn2,lazyjars);
  1815.                        }
  1816.                    }
  1817.                    
  1818.                    // fileset to exclude *.css or *.bss
  1819.                    var fs = jar.createFileSet();
  1820.                    fs.setProject(project);
  1821.                    var buildcls = new String(project.getProperty("pp_jar_buildclasses"));
  1822.                    var exc = new String(project.getProperty("pp_jar_cssbss"));
  1823.                    fs.setDir(new java.io.File(buildcls));
  1824.                    fs.setExcludes(exc);
  1825.                    
  1826.                    // manifest
  1827.                    var man = jar.createManifest();
  1828.                    var a1val = new String(project.getProperty("application.vendor"));
  1829.                    var a1 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
  1830.                    a1.setName("Implementation-Vendor");
  1831.                    a1.setValue(a1val);
  1832.                    man.addConfiguredAttribute(a1);
  1833.                    var a2val = new String(project.getProperty("application.title"));
  1834.                    var a2 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
  1835.                    a2.setName("Implementation-Title");
  1836.                    a2.setValue(a2val);
  1837.                    man.addConfiguredAttribute(a2);
  1838.                    if(defined(appversion)) {
  1839.                        var a3 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
  1840.                        a3.setName("Implementation-Version");
  1841.                        a3.setValue(appversion);
  1842.                        man.addConfiguredAttribute(a3);
  1843.                    }
  1844.                    var a4prop = new String(project.getProperty("javafx.deploy.disable.proxy"));
  1845.                    if(isTrue(a4prop)) {
  1846.                        var a4 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
  1847.                        a4.setName("JavaFX-Feature-Proxy");
  1848.                        a4.setValue("None");
  1849.                        man.addConfiguredAttribute(a4);
  1850.                    }
  1851.                    // custom manifest entries
  1852.                    var searchManifestHides = project.getProperties().keys();
  1853.                    var manifestHides = new Array();
  1854.                    while(searchManifestHides.hasMoreElements()) {
  1855.                        // collect all hidden property names
  1856.                        var pns = new String(searchManifestHides.nextElement());
  1857.                        if(startsWith(pns, JFXMAN) && endsWith(pns, JFXPARN)) {
  1858.                            var propns = new String(project.getProperty(pns));
  1859.                            var phs = replaceSuffix(pns, JFXPARN, JFXPARH);
  1860.                            var proph = new String(project.getProperty(phs));
  1861.                            if(isTrue(proph)) {
  1862.                                manifestHides.push(propns);
  1863.                            }
  1864.                         }
  1865.                    }
  1866.                    var manifestKeys = project.getProperties().keys();
  1867.                    while(manifestKeys.hasMoreElements()) {
  1868.                        var pn = new String(manifestKeys.nextElement());
  1869.                        if(startsWith(pn, JFXMAN) && endsWith(pn, JFXPARN)) {
  1870.                            var propn = new String(project.getProperty(pn));
  1871.                            if(defined(propn) && !contains(manifestHides, propn)) {
  1872.                                var propnr = propn.replace(/\s/g, "-");
  1873.                                var entry = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
  1874.                                entry.setName(propnr);
  1875.                                var pv = replaceSuffix(pn, JFXPARN, JFXPARV);
  1876.                                var propv = new String(project.getProperty(pv));
  1877.                                if(defined(propv)) {
  1878.                                    entry.setValue(propv);
  1879.                                } else {
  1880.                                    entry.setValue("");
  1881.                                }
  1882.                                man.addConfiguredAttribute(entry);
  1883.                            }
  1884.                        }
  1885.                    }
  1886.                    var profileAvailable = new String(project.getProperty("profile.available"));
  1887.                    if (defined(profileAvailable)) {
  1888.                        var profileAttribute = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
  1889.                        profileAttribute.setName("Profile");
  1890.                        profileAttribute.setValue(new String(project.getProperty("javac.profile")));
  1891.                        man.addConfiguredAttribute(profileAttribute);
  1892.                    }
  1893.                    var perm_elev = new String(project.getProperty("permissions.elevated"));
  1894.                    var cust_perm = new String(project.getProperty("manifest.custom.permissions"));
  1895.                    var cust_cb = new String(project.getProperty("manifest.custom.codebase"));
  1896.                    var sa1 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
  1897.                    sa1.setName("Codebase");
  1898.                    if(!defined(cust_cb) || cust_cb == "*") {
  1899.                        sa1.setValue("*");
  1900.                        print("Warning: From JDK7u25 the Codebase manifest attribute should be used to restrict JAR repurposing.");
  1901.                        print("         Please set manifest.custom.codebase property to override the current default non-secure value '*'.");
  1902.                    } else {
  1903.                        sa1.setValue(cust_cb);
  1904.                    }
  1905.                    man.addConfiguredAttribute(sa1);
  1906.                    var sa2 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
  1907.                    sa2.setName("Permissions");
  1908.                    if(!defined(cust_perm)) {
  1909.                        if(isTrue(perm_elev)) {
  1910.                            sa2.setValue("all-permissions");
  1911.                        } else {
  1912.                            sa2.setValue("sandbox");
  1913.                        }
  1914.                    } else {
  1915.                        if(cust_perm == "all-permissions") {
  1916.                            sa2.setValue("all-permissions");
  1917.                        } else {
  1918.                            sa2.setValue("sandbox");
  1919.                        }
  1920.                    }
  1921.                    man.addConfiguredAttribute(sa2);
  1922.                    // Note: see JavaFX Jira issue #RT-25003 if attribute names are created lowercase in manifest
  1923.  
  1924.                    jar.perform();
  1925.                ]]>
  1926.             </script>
  1927.             <antcall target="-post-jfx-jar"/>
  1928.         </sequential>
  1929.     </macrodef>
  1930.  
  1931.     <macrodef name="deploy-sign">
  1932.         <sequential>
  1933.             <echo message="keystore=${javafx.signjar.keystore}" level="verbose"/>
  1934.             <echo message="storepass=${javafx.signjar.storepass}" level="verbose"/>
  1935.             <echo message="alias=${javafx.signjar.alias}" level="verbose"/>
  1936.             <echo message="keypass=${javafx.signjar.keypass}" level="verbose"/>
  1937.             <signjar keystore="${javafx.signjar.keystore}"
  1938.                storepass="${javafx.signjar.storepass}"
  1939.                alias="${javafx.signjar.alias}"
  1940.                keypass="${javafx.signjar.keypass}">
  1941.                 <fileset dir="${jfx.deployment.dir}">
  1942.                     <include name="${jfx.deployment.jar}"/>
  1943.                     <include name="lib${file.separator}*.jar"/>
  1944.                 </fileset>
  1945.             </signjar>
  1946.         </sequential>
  1947.     </macrodef>
  1948.  
  1949.     <macrodef name="deploy-sign-blob">
  1950.         <sequential>
  1951.             <echo message="keystore=${javafx.signjar.keystore}" level="verbose"/>
  1952.             <echo message="storepass=${javafx.signjar.storepass}" level="verbose"/>
  1953.             <echo message="alias=${javafx.signjar.alias}" level="verbose"/>
  1954.             <echo message="keypass=${javafx.signjar.keypass}" level="verbose"/>
  1955.             <echo message="Launching &lt;fx:signjar&gt; task from ${ant-javafx.jar.location}" level="info"/>
  1956.             <fx:signjar keystore="${javafx.signjar.keystore}"
  1957.                storepass="${javafx.signjar.storepass}"
  1958.                alias="${javafx.signjar.alias}"
  1959.                keypass="${javafx.signjar.keypass}">
  1960.                 <fileset dir="${jfx.deployment.dir}">
  1961.                     <include name="${jfx.deployment.jar}"/>
  1962.                     <include name="lib${file.separator}*.jar"/>
  1963.                 </fileset>
  1964.             </fx:signjar>
  1965.         </sequential>
  1966.     </macrodef>
  1967.  
  1968.     <macrodef name="deploy-sign-preloader">
  1969.         <sequential>
  1970.             <echo message="keystore=${javafx.signjar.keystore}" level="verbose"/>
  1971.             <echo message="storepass=${javafx.signjar.storepass}" level="verbose"/>
  1972.             <echo message="alias=${javafx.signjar.alias}" level="verbose"/>
  1973.             <echo message="keypass=${javafx.signjar.keypass}" level="verbose"/>
  1974.             <signjar keystore="${javafx.signjar.keystore}"
  1975.                storepass="${javafx.signjar.storepass}"
  1976.                alias="${javafx.signjar.alias}"
  1977.                keypass="${javafx.signjar.keypass}">
  1978.                 <fileset dir="${jfx.deployment.dir}">
  1979.                     <include name="lib${file.separator}${javafx.preloader.jar.filename}"/>
  1980.                 </fileset>
  1981.             </signjar>
  1982.             <signjar keystore="${javafx.signjar.keystore}"
  1983.                storepass="${javafx.signjar.storepass}"
  1984.                alias="${javafx.signjar.alias}"
  1985.                keypass="${javafx.signjar.keypass}">
  1986.                 <fileset dir="${jfx.deployment.dir}">
  1987.                     <include name="${jfx.deployment.jar}"/>
  1988.                     <include name="lib${file.separator}*.jar"/>
  1989.                     <exclude name="lib${file.separator}${javafx.preloader.jar.filename}"/>
  1990.                 </fileset>
  1991.             </signjar>
  1992.         </sequential>
  1993.     </macrodef>
  1994.  
  1995.     <macrodef name="deploy-sign-blob-preloader">
  1996.         <sequential>
  1997.             <echo message="keystore=${javafx.signjar.keystore}" level="verbose"/>
  1998.             <echo message="storepass=${javafx.signjar.storepass}" level="verbose"/>
  1999.             <echo message="alias=${javafx.signjar.alias}" level="verbose"/>
  2000.             <echo message="keypass=${javafx.signjar.keypass}" level="verbose"/>
  2001.             <signjar keystore="${javafx.signjar.keystore}"
  2002.                storepass="${javafx.signjar.storepass}"
  2003.                alias="${javafx.signjar.alias}"
  2004.                keypass="${javafx.signjar.keypass}">
  2005.                 <fileset dir="${jfx.deployment.dir}">
  2006.                     <include name="lib${file.separator}${javafx.preloader.jar.filename}"/>
  2007.                 </fileset>
  2008.             </signjar>
  2009.             <echo message="Launching &lt;fx:signjar&gt; task from ${ant-javafx.jar.location}" level="info"/>
  2010.             <fx:signjar keystore="${javafx.signjar.keystore}"
  2011.                storepass="${javafx.signjar.storepass}"
  2012.                alias="${javafx.signjar.alias}"
  2013.                keypass="${javafx.signjar.keypass}">
  2014.                 <fileset dir="${jfx.deployment.dir}">
  2015.                     <include name="${jfx.deployment.jar}"/>
  2016.                     <include name="lib${file.separator}*.jar"/>
  2017.                     <exclude name="lib${file.separator}${javafx.preloader.jar.filename}"/>
  2018.                 </fileset>
  2019.             </fx:signjar>
  2020.         </sequential>
  2021.     </macrodef>
  2022.  
  2023.     <macrodef name="deploy-process-template">
  2024.         <sequential>
  2025.             <echo message="javafx.run.htmltemplate = ${javafx.run.htmltemplate}" level="verbose"/>
  2026.             <pathconvert property="javafx.run.htmltemplate.processed">
  2027.                 <path path="${javafx.run.htmltemplate}"/>
  2028.                 <mapper>
  2029.                      <chainedmapper>
  2030.                           <flattenmapper/>
  2031.                           <globmapper from="*" to="${jfx.deployment.dir}${file.separator}*" casesensitive="no"/>
  2032.                      </chainedmapper>
  2033.                 </mapper>
  2034.             </pathconvert>
  2035.             <echo message="javafx.run.htmltemplate.processed = ${javafx.run.htmltemplate.processed}" level="verbose"/>
  2036.         </sequential>
  2037.     </macrodef>
  2038.  
  2039.     <!-- fx:deploy scripted call enables passing of arbitrarily long lists of params, vmoptions and callbacks and fx-version dependent behavior -->
  2040.     <macrodef name="deploy-deploy">
  2041.         <sequential>
  2042.             <antcall target="-pre-jfx-deploy"/>
  2043.             <antcall target="-call-pre-jfx-native"/>
  2044.             <echo message="javafx.ant.classpath = ${javafx.ant.classpath}" level="verbose"/>
  2045.             <typedef name="fx_deploy" classname="com.sun.javafx.tools.ant.DeployFXTask" classpath="${javafx.ant.classpath}"/>
  2046.             <echo message="Launching &lt;fx:deploy&gt; task from ${ant-javafx.jar.location}" level="info"/>
  2047.             <property name="pp_deploy_dir" value="${jfx.deployment.dir}"/>
  2048.             <property name="pp_deploy_fs1" value="lib${file.separator}${javafx.preloader.jar.filename}"/>
  2049.             <property name="pp_deploy_fs2" value="lib${file.separator}*.jar"/>
  2050.             <echo message="deploy_deploy: pp_deploy_dir = ${pp_deploy_dir}" level="verbose"/>
  2051.             <echo message="deploy_deploy: pp_deploy_fs1 = ${pp_deploy_fs1}" level="verbose"/>
  2052.             <echo message="deploy_deploy: pp_deploy_fs2 = ${pp_deploy_fs2}" level="verbose"/>
  2053.             <echo message="JavaScript: deploy-deploy" level="verbose"/>
  2054.             <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/>
  2055.             <script language="javascript">
  2056.                 <![CDATA[
  2057.                    function isTrue(prop) {
  2058.                        return prop != null &&
  2059.                           (prop.toLowerCase()=="true" || prop.toLowerCase()=="yes" || prop.toLowerCase()=="on");
  2060.                    }                    
  2061.                    function prefix(s, len) {
  2062.                        if(s == null || len <= 0 || s.length == 0) {
  2063.                            return new String("");
  2064.                        }
  2065.                        return new String(s.substr(0, len));
  2066.                    }
  2067.                    function replaceSuffix(s, os, ns) {
  2068.                        return prefix(s, s.indexOf(os)).concat(ns);
  2069.                    }
  2070.                    function startsWith(s, prefix) {
  2071.                        return (s != null) && (s.indexOf(prefix) == 0);
  2072.                    }
  2073.                    function endsWith(s, suffix) {
  2074.                        var i = s.lastIndexOf(suffix);
  2075.                        return  (i != -1) && (i == (s.length - suffix.length));
  2076.                    }
  2077.                    function defined(s) {
  2078.                        return (s != null) && (s != "null") && (s.length > 0);
  2079.                    }
  2080.                    function contains(array, prop) {
  2081.                        for (var i = 0; i < array.length; i++) {
  2082.                            var s1 = new String(array[i]);
  2083.                            var s2 = new String(prop);
  2084.                            if( s1.toLowerCase() == s2.toLowerCase() ) {
  2085.                                return true;
  2086.                            }
  2087.                        }
  2088.                        return false;
  2089.                    }
  2090.                    var S = java.io.File.separator;
  2091.                    var JFXPAR = "javafx.param";
  2092.                    var JFXPARN = "name";
  2093.                    var JFXPARV = "value";
  2094.                    var JFXPARH = "hidden";
  2095.                    var JFXCALLB = "javafx.jscallback";
  2096.                    var JFXLAZY = "download.mode.lazy.jar";
  2097.                    var withpreloader = new String(project.getProperty("app-with-preloader"));
  2098.                    var fx_ant_api_1_1 = new String(project.getProperty("have-fx-ant-api-1.1"));
  2099.                    var fx_ant_api_1_2 = new String(project.getProperty("have-fx-ant-api-1.2"));
  2100.                    var have_jdk_pre7u14 = new String(project.getProperty("have-jdk-pre7u14"));
  2101.                    var fx_in_swing_app = new String(project.getProperty("fx-in-swing-app"));
  2102.                    var debug_in_browser = new String(project.getProperty("project.state.debugging.in.browser"));
  2103.  
  2104.                    // get jars with lazy download mode property set
  2105.                    function getLazyJars() {
  2106.                        var jars = new Array();
  2107.                        var keys = project.getProperties().keys();
  2108.                        while(keys.hasMoreElements()) {
  2109.                            var pn = new String(keys.nextElement());
  2110.                            if(startsWith(pn, JFXLAZY)) {
  2111.                                var fname = pn.substring(JFXLAZY.length+1);
  2112.                                jars.push(fname);
  2113.                            }
  2114.                        }
  2115.                        return jars.length > 0 ? jars : null;
  2116.                    }
  2117.                    // set download mode of dependent libraries
  2118.                    function setDownloadMode(fsEager, fsLazy, jars) {
  2119.                        for(var i = 0; i < jars.length; i++) {
  2120.                            fsEager.setExcludes("lib" + S + jars[i]);
  2121.                            fsLazy.setIncludes("lib" + S + jars[i]);
  2122.                        }
  2123.                    }
  2124.                    // convert path to absolute if relative
  2125.                    function derelativizePath(path) {
  2126.                        var f = new java.io.File(path);
  2127.                        if(!f.exists()) {
  2128.                            f = new java.io.File(new String(project.getBaseDir()) + S + path);
  2129.                        }
  2130.                        if(f.exists()) {
  2131.                            try {
  2132.                                return f.getCanonicalPath();
  2133.                            } catch(err) {
  2134.                                return path;
  2135.                            }
  2136.                        }
  2137.                        return path;
  2138.                    }
  2139.                    
  2140.                    // fx:deploy
  2141.                    var deploy = project.createTask("fx_deploy");
  2142.                    deploy.setProject(project);
  2143.                    var width = new String(project.getProperty("javafx.width"));
  2144.                    var height = new String(project.getProperty("javafx.height"));
  2145.                    var outdir = new String(project.getProperty("jfx.deployment.dir"));
  2146.                    var embedJNLP = new String(project.getProperty("javafx.deploy.embedJNLP"));
  2147.                    var updatemode = new String(project.getProperty("update-mode"));
  2148.                    var outfile = new String(project.getProperty("application.title"));
  2149.                    var includeDT = new String(project.getProperty("javafx.deploy.includeDT"));
  2150.                    var offline = new String(project.getProperty("javafx.deploy.allowoffline"));
  2151.                    if (width.indexOf("%") != -1) {
  2152.                        deploy.setEmbeddedWidth(width);
  2153.                        deploy.setWidth(800);
  2154.                    } else {
  2155.                        deploy.setWidth(width);
  2156.                    }
  2157.                    if (height.indexOf("%") != -1) {
  2158.                        deploy.setEmbeddedHeight(height);
  2159.                        deploy.setHeight(600);
  2160.                    } else {
  2161.                        deploy.setHeight(height);
  2162.                    }
  2163.                    deploy.setOutdir(outdir);
  2164.                    deploy.setEmbedJNLP(isTrue(embedJNLP));
  2165.                    deploy.setUpdateMode(updatemode);
  2166.                    deploy.setOutfile(outfile);
  2167.                    deploy.setIncludeDT(isTrue(includeDT));
  2168.                    if(defined(offline)) {
  2169.                        if(isTrue(fx_ant_api_1_1)) {
  2170.                            deploy.setOfflineAllowed(isTrue(offline));
  2171.                        } else {
  2172.                            print("Warning: offlineAllowed not supported by this version of JavaFX SDK deployment Ant task. Please upgrade JavaFX to 2.0.2 or higher.");
  2173.                        }
  2174.                    }
  2175.                    // native packaging (time consuming, thus applied in explicit build only)
  2176.                    var nativeEnabled = new String(project.getProperty("do.build.native.package"));
  2177.                    var nativeType = new String(project.getProperty("javafx.native.bundling.type"));
  2178.                    var projStateRun = new String(project.getProperty("project.state.running"));
  2179.                    var projStateDbg = new String(project.getProperty("project.state.debugging"));
  2180.                    var projStatePrf = new String(project.getProperty("project.state.profiling"));
  2181.                    if(isTrue(nativeEnabled) && defined(nativeType) && nativeType != "none") {
  2182.                        if(!isTrue(projStateRun) && !isTrue(projStateDbg) && !isTrue(projStatePrf)) {
  2183.                            if(isTrue(fx_ant_api_1_2)) {
  2184.                                deploy.setNativeBundles(nativeType);
  2185.                                print("Note: To create native bundles the <fx:deploy> task may require external tools. See JavaFX 2.2+ documentation for details.");
  2186.                                print("");
  2187.                                print("Launching <fx:deploy> in native packager mode...");
  2188.                            } else {
  2189.                                print("Warning: Native packaging is not supported by this version of JavaFX SDK deployment Ant task. Please upgrade to JDK 7u6 or higher.");
  2190.                            }
  2191.                        }
  2192.                    }
  2193.  
  2194.                    // fx:application
  2195.                    var app = deploy.createApplication();
  2196.                    app.setProject(project);
  2197.                    var title = new String(project.getProperty("application.title"));
  2198.                    var mainclass;
  2199.                    if(isTrue(fx_in_swing_app) && isTrue(fx_ant_api_1_2)) {
  2200.                        mainclass = new String(project.getProperty("main.class"));
  2201.                        app.setToolkit("swing");
  2202.                    } else {
  2203.                        mainclass = new String(project.getProperty("javafx.main.class"));
  2204.                    }
  2205.                    var fallback = new String(project.getProperty("javafx.fallback.class"));
  2206.                    app.setName(title);
  2207.                    app.setMainClass(mainclass);
  2208.                    app.setFallbackClass(fallback);
  2209.                    if(isTrue(withpreloader)) {
  2210.                        preloaderclass = new String(project.getProperty("javafx.preloader.class"));
  2211.                        app.setPreloaderClass(preloaderclass);
  2212.                    }
  2213.                    var appversion = new String(project.getProperty("javafx.application.implementation.version"));
  2214.                    if(defined(appversion)) {
  2215.                        app.setVersion(appversion);
  2216.                    } else {
  2217.                        app.setVersion("1.0");
  2218.                    }
  2219.                    // fx:param, fx:argument
  2220.                    var searchHides = project.getProperties().keys();
  2221.                    var hides = new Array();
  2222.                    while(searchHides.hasMoreElements()) {
  2223.                        // collect all hidden property names
  2224.                        var pns = new String(searchHides.nextElement());
  2225.                        if(startsWith(pns, JFXPAR) && endsWith(pns, JFXPARN)) {
  2226.                            var propns = new String(project.getProperty(pns));
  2227.                            var phs = replaceSuffix(pns, JFXPARN, JFXPARH);
  2228.                            var proph = new String(project.getProperty(phs));
  2229.                            if(isTrue(proph)) {
  2230.                                hides.push(propns);
  2231.                            }
  2232.                         }
  2233.                    }
  2234.                    var keys = project.getProperties().keys();
  2235.                    while(keys.hasMoreElements()) {
  2236.                        var pn = new String(keys.nextElement());
  2237.                        if(startsWith(pn, JFXPAR) && endsWith(pn, JFXPARN)) {
  2238.                            var propn = new String(project.getProperty(pn));
  2239.                            if(defined(propn) && !contains(hides, propn)) {
  2240.                                var pv = replaceSuffix(pn, JFXPARN, JFXPARV);
  2241.                                var propv = new String(project.getProperty(pv));
  2242.                                if(defined(propv)) {
  2243.                                    var par = app.createParam();
  2244.                                    par.setName(propn);
  2245.                                    par.setValue(propv);
  2246.                                } else {
  2247.                                    if(isTrue(fx_ant_api_1_1)) {
  2248.                                        var arg = app.createArgument();
  2249.                                        arg.addText(propn);
  2250.                                    } else {
  2251.                                        print("Warning: Unnamed parameters not supported by this version of JavaFX SDK deployment Ant tasks. Upgrade JavaFX to 2.0.2 or higher.");
  2252.                                    }
  2253.                                }
  2254.                            }
  2255.                        }
  2256.                    }
  2257.                    
  2258.                    // fx:resources
  2259.                    var res = deploy.createResources();
  2260.                    res.setProject(project);
  2261.                    var deploydir = new String(project.getProperty("pp_deploy_dir"));
  2262.                    if(isTrue(withpreloader)) {
  2263.                        var f1 = res.createFileSet();
  2264.                        f1.setProject(project);
  2265.                        f1.setDir(new java.io.File(deploydir));
  2266.                        var i1 = new String(project.getProperty("pp_deploy_fs1"));
  2267.                        f1.setIncludes(i1);
  2268.                        f1.setRequiredFor("preloader");
  2269.                        var f2 = res.createFileSet();
  2270.                        f2.setProject(project);
  2271.                        f2.setDir(new java.io.File(deploydir));
  2272.                        var i2a = new String(project.getProperty("jfx.deployment.jar"));
  2273.                        var i2b = new String(project.getProperty("pp_deploy_fs2"));
  2274.                        var e2c = new String(project.getProperty("pp_deploy_fs1"));
  2275.                        f2.setIncludes(i2a);
  2276.                        f2.setIncludes(i2b);
  2277.                        f2.setExcludes(e2c);
  2278.                        f2.setRequiredFor("startup");
  2279.                        var lazyjars = getLazyJars();
  2280.                        if(lazyjars != null) {
  2281.                            var f3 = res.createFileSet();
  2282.                            f3.setProject(project);
  2283.                            f3.setDir(new java.io.File(deploydir));
  2284.                            f3.setRequiredFor("runtime");
  2285.                            setDownloadMode(f2,f3,lazyjars);
  2286.                        }
  2287.                    } else {
  2288.                        var fn = res.createFileSet();
  2289.                        fn.setProject(project);
  2290.                        fn.setDir(new java.io.File(deploydir));
  2291.                        var ia = new String(project.getProperty("jfx.deployment.jar"));
  2292.                        var ib = new String(project.getProperty("pp_deploy_fs2"));
  2293.                        fn.setIncludes(ia);
  2294.                        fn.setIncludes(ib);
  2295.                        fn.setRequiredFor("startup");
  2296.                        var lazyjars = getLazyJars();
  2297.                        if(lazyjars != null) {
  2298.                            var fn2 = res.createFileSet();
  2299.                            fn2.setProject(project);
  2300.                            fn2.setDir(new java.io.File(deploydir));
  2301.                            fn2.setRequiredFor("runtime");
  2302.                            setDownloadMode(fn,fn2,lazyjars);
  2303.                        }
  2304.                    }
  2305.                    
  2306.                    // fx:info
  2307.                    var info = deploy.createInfo();
  2308.                    info.setProject(project);
  2309.                    var vendor = new String(project.getProperty("application.vendor"));
  2310.                    var description = new String(project.getProperty("application.desc"));
  2311.                    info.setTitle(title); // title known from before
  2312.                    info.setVendor(vendor);
  2313.                    info.setDescription(description);
  2314.                    var splash = new String(project.getProperty("javafx.deploy.splash"));
  2315.                    if(defined(splash)) {
  2316.                        if(isTrue(fx_ant_api_1_1)) {
  2317.                            var sicon = info.createSplash();
  2318.                            sicon.setHref(splash);
  2319.                            sicon.setMode("any");
  2320.                            print("Adding splash image reference: " + splash);
  2321.                        } else {
  2322.                            print("Warning: Splash Image not supported by this version of JavaFX SDK deployment Ant task. Please upgrade JavaFX to 2.0.2 or higher.");
  2323.                        }
  2324.                    }
  2325.                    if(isTrue(nativeEnabled) && defined(nativeType) && nativeType != "none") {
  2326.                        var icon = new String(project.getProperty("javafx.deploy.icon.native"));
  2327.                        if(defined(icon)) {
  2328.                            if(isTrue(fx_ant_api_1_2) && !isTrue(have_jdk_pre7u14)) {
  2329.                                var dicon = derelativizePath(icon);
  2330.                                // create temporary icon copy renamed to application name (required by native packager)
  2331.                                var baseDir = new String(project.getProperty("basedir"));
  2332.                                var buildDir = new String(project.getProperty("build.dir"));
  2333.                                var deployBase = new String(project.getProperty("jfx.deployment.base"));
  2334.                                var copyTask = project.createTask("copy");
  2335.                                var source = new java.io.File(dicon);
  2336.                                var sourceName = new String(source.getName());
  2337.                                var lastDot = sourceName.lastIndexOf(".");
  2338.                                var sourceExt;
  2339.                                if(lastDot >=0) {
  2340.                                    sourceExt = sourceName.substr(lastDot);
  2341.                                } else {
  2342.                                    sourceExt = new String("");
  2343.                                }
  2344.                                var target = new java.io.File(baseDir.concat(S).concat(buildDir).concat(S).concat("icon").concat(S).concat(deployBase).concat(sourceExt));
  2345.                                copyTask.setFile(source);
  2346.                                copyTask.setTofile(target);
  2347.                                copyTask.setFlatten(true);
  2348.                                copyTask.setFailOnError(false);
  2349.                                copyTask.perform();
  2350.                                var tempicon;
  2351.                                if(target.exists()) {
  2352.                                    try {
  2353.                                        tempicon = target.getCanonicalPath();
  2354.                                    } catch(err) {
  2355.                                        tempicon = dicon;
  2356.                                    }
  2357.                                } else {
  2358.                                    tempicon = dicon;
  2359.                                }
  2360.                                var nicon = info.createIcon();
  2361.                                nicon.setHref(tempicon);
  2362.                                print("Source native icon reference: " + dicon);
  2363.                                print("Processed native icon reference: " + tempicon);
  2364.                            } else {
  2365.                                print("Warning: Native Package icon not supported by this version of JavaFX SDK deployment Ant task. Please upgrade to JDK7u14.");
  2366.                            }
  2367.                        }
  2368.                    } else {
  2369.                        var icon = new String(project.getProperty("javafx.deploy.icon"));
  2370.                        if(defined(icon)) {
  2371.                            if(isTrue(fx_ant_api_1_1)) {
  2372.                                var iicon = info.createIcon();
  2373.                                iicon.setHref(icon);
  2374.                                print("Adding WebStart icon reference: " + icon);
  2375.                            } else {
  2376.                                print("Warning: WebStart Icon not supported by this version of JavaFX SDK deployment Ant task. Please upgrade JavaFX to 2.0.2 or higher.");
  2377.                            }
  2378.                        }
  2379.                    }
  2380.                    
  2381.                    // fx:permissions
  2382.                    var perm = deploy.createPermissions();
  2383.                    perm.setProject(project);
  2384.                    var elev = new String(project.getProperty("permissions.elevated"));
  2385.                    perm.setElevated(isTrue(elev));
  2386.                    
  2387.                    // fx:preferences
  2388.                    var pref = deploy.createPreferences();
  2389.                    pref.setProject(project);
  2390.                    var scut = new String(project.getProperty("javafx.deploy.adddesktopshortcut"));
  2391.                    var instp = new String(project.getProperty("javafx.deploy.installpermanently"));
  2392.                    var smenu = new String(project.getProperty("javafx.deploy.addstartmenushortcut"));
  2393.                    pref.setShortcut(isTrue(scut));
  2394.                    pref.setInstall(isTrue(instp));
  2395.                    pref.setMenu(isTrue(smenu));
  2396.  
  2397.                    // fx:template
  2398.                    var templ = new String(project.getProperty("javafx.run.htmltemplate"));
  2399.                    var templp = new String(project.getProperty("javafx.run.htmltemplate.processed"));
  2400.                    if(defined(templ) && defined(templp)) {
  2401.                        var temp = deploy.createTemplate();
  2402.                        temp.setProject(project);
  2403.                        temp.setFile(new java.io.File(templ));
  2404.                        temp.setTofile(new java.io.File(templp));
  2405.                    }
  2406.  
  2407.                    // fx:platform
  2408.                    var plat = deploy.createPlatform();
  2409.                    plat.setProject(project);
  2410.                    var requestRT = new String(project.getProperty("javafx.deploy.request.runtime"));
  2411.                    if(defined(requestRT)) {
  2412.                        plat.setJavafx(requestRT);
  2413.                    }
  2414.                    var jvmargs = new String(project.getProperty("run.jvmargs"));
  2415.                    if(defined(jvmargs)) {
  2416.                        var jvmargss = jvmargs.split(" ");
  2417.                        for(var i = 0; i < jvmargss.length; i++) {
  2418.                            if(defined(jvmargss[i])) {
  2419.                                var vmarg = plat.createJvmarg();
  2420.                                vmarg.setValue(jvmargss[i]);
  2421.                            }
  2422.                        }
  2423.                    }
  2424.                    if(isTrue(debug_in_browser)) {
  2425.                        var vmarg = plat.createJvmarg();
  2426.                        vmarg.setValue(new String("-ea:javafx.browserdebug"));
  2427.                    }
  2428.                    if(isTrue(nativeEnabled) && defined(nativeType) && nativeType != "none") {
  2429.                        if(!isTrue(projStateRun) && !isTrue(projStateDbg) && !isTrue(projStatePrf)) {
  2430.                            if(plat.setBasedir) {
  2431.                                var sdkdir = new String(project.getProperty("javafx.sdk"));
  2432.                                if(defined(sdkdir)) {
  2433.                                    plat.setBasedir(sdkdir);
  2434.                                }
  2435.                            } else {
  2436.                                print("Note: the current version of native packager Ant task can bundle the default JRE only.");
  2437.                            }
  2438.                        }
  2439.                    }
  2440.                    
  2441.                    // fx:callbacks
  2442.                    var callbs = deploy.createCallbacks();
  2443.                    callbs.setProject(project);
  2444.                    var keys = project.getProperties().keys();
  2445.                    while(keys.hasMoreElements()) {
  2446.                        var pn = new String(keys.nextElement());
  2447.                        if(startsWith(pn, JFXCALLB)) {
  2448.                            var prop = new String(project.getProperty(pn));
  2449.                            if(defined(prop)) {
  2450.                                var cname = pn.substring(JFXCALLB.length+1);
  2451.                                var cb = callbs.createCallback();
  2452.                                cb.setProject(project);
  2453.                                cb.setName(cname);
  2454.                                cb.addText(prop);
  2455.                            }
  2456.                        }
  2457.                    }
  2458.                    
  2459.                    deploy.perform();
  2460.                ]]>
  2461.             </script>
  2462.             <antcall target="-post-jfx-deploy"/>
  2463.             <antcall target="-call-post-jfx-native"/>
  2464.         </sequential>
  2465.     </macrodef>
  2466.  
  2467.     <!-- JavaFX SDK 2.0.x and 2.1.x deploy task can not generate pre-FX jnlp which is needed for FX-in-Swing projects-->
  2468.     <macrodef name="deploy-deploy-swing">
  2469.         <sequential>
  2470.             <antcall target="-pre-jfx-deploy"/>
  2471.             <local name="permissions-elevated-token"/>
  2472.             <condition property="permissions-elevated-token" value="${line.separator}    &lt;security&gt;${line.separator}        &lt;all-permissions/&gt;${line.separator}    &lt;/security&gt;" else="">
  2473.                 <isset property="permissions-elevated"/>
  2474.             </condition>
  2475.             <local name="offline-allowed-token"/>
  2476.             <condition property="offline-allowed-token" value="${line.separator}        &lt;offline-allowed/&gt;" else="">
  2477.                 <isset property="offline-allowed"/>
  2478.             </condition>
  2479.             <local name="update-mode-background-token"/>
  2480.             <condition property="update-mode-background-token" value="background" else="always">
  2481.                 <isset property="update-mode-background"/>
  2482.             </condition>
  2483.             <local name="html-template-processed-available"/>
  2484.             <condition property="html-template-processed-available">
  2485.                 <and>
  2486.                     <isset property="javafx.run.htmltemplate.processed"/>
  2487.                     <not>
  2488.                         <equals arg1="${javafx.run.htmltemplate.processed}" arg2=""/>
  2489.                     </not>
  2490.                 </and>
  2491.             </condition>
  2492.             <local name="javafx.deploy.icon.basename"/>
  2493.             <basename property="javafx.deploy.icon.basename" file="${javafx.deploy.icon}"/>
  2494.             <local name="local-icon-filename-available"/>
  2495.             <condition property="local-icon-filename-available">
  2496.                 <and>
  2497.                     <isset property="icon-available"/>
  2498.                     <isset property="javafx.deploy.icon.basename"/>
  2499.                     <not><equals arg1="${javafx.deploy.icon.basename}" arg2=""/></not>
  2500.                     <not><contains string="${javafx.deploy.icon.basename}" substring="$${javafx" casesensitive="false"/></not>
  2501.                     <not><contains string="${javafx.deploy.icon}" substring="http:" casesensitive="false"/></not>
  2502.                 </and>
  2503.             </condition>
  2504.             <local name="icon-token"/>
  2505.             <condition property="icon-token" value="${line.separator}        &lt;icon href=&quot;${javafx.deploy.icon.basename}&quot; kind=&quot;default&quot;/&gt;">
  2506.                 <isset property="local-icon-filename-available"/>
  2507.             </condition>
  2508.             <condition property="icon-token" value="${line.separator}        &lt;icon href=&quot;${javafx.deploy.icon}&quot; kind=&quot;default&quot;/&gt;" else="">
  2509.                 <isset property="icon-available"/>
  2510.             </condition>
  2511.             <basename property="dist.filename" file="${dist.jar}" suffix=".jar"/>
  2512.             <length file="${dist.jar}" property="dist.jar.size" />
  2513.             <local name="vmargs-token"/>
  2514.             <condition property="vmargs-token" value="java-vm-args=&quot;${run.jvmargs}&quot; " else="">
  2515.                 <isset property="vmargs-available"/>
  2516.             </condition>
  2517.             <local name="applet-params-token"/>
  2518.             <local name="application-args-token"/>
  2519.             <echo message="JavaScript: deploy-deploy-swing 1" level="verbose"/>
  2520.             <script language="javascript">
  2521.                 <![CDATA[
  2522.                    function prefix(s, len) {
  2523.                        if(s == null || len <= 0 || s.length == 0) {
  2524.                            return new String("");
  2525.                        }
  2526.                        return new String(s.substr(0, len));
  2527.                    }
  2528.                    function replaceSuffix(s, os, ns) {
  2529.                        return prefix(s, s.indexOf(os)).concat(ns);
  2530.                    }
  2531.                    function startsWith(s, prefix) {
  2532.                        return (s != null) && (s.indexOf(prefix) == 0);
  2533.                    }
  2534.                    function endsWith(s, suffix) {
  2535.                        var i = s.lastIndexOf(suffix);
  2536.                        return  (i != -1) && (i == (s.length - suffix.length));
  2537.                    }
  2538.                    function defined(s) {
  2539.                        return (s != null) && (s != "null") && (s.length > 0);
  2540.                    }
  2541.                    var JFXPAR = "javafx.param";
  2542.                    var JFXPARN = "name";
  2543.                    var JFXPARV = "value";
  2544.  
  2545.                    var params = new java.lang.StringBuilder();
  2546.                    var args = new java.lang.StringBuilder();
  2547.                    var keys = project.getProperties().keys();
  2548.                    while(keys.hasMoreElements()) {
  2549.                        var pn = new String(keys.nextElement());
  2550.                        if(startsWith(pn, JFXPAR) && endsWith(pn, JFXPARN)) {
  2551.                            var propn = new String(project.getProperty(pn));
  2552.                            if(defined(propn)) {
  2553.                                var pv = replaceSuffix(pn, JFXPARN, JFXPARV);
  2554.                                var propv = new String(project.getProperty(pv));
  2555.                                if(defined(propv)) {
  2556.                                    params.append("\n        <param name=\"");
  2557.                                    params.append(propn);
  2558.                                    params.append("\" value=\"");
  2559.                                    params.append(propv);
  2560.                                    params.append("\"/>");
  2561.                                    args.append("\n        <argument>");
  2562.                                    args.append(propn);
  2563.                                    args.append("=");
  2564.                                    args.append(propv);
  2565.                                    args.append("</argument>");
  2566.                                } else {
  2567.                                    params.append("\n        <param name=\"");
  2568.                                    params.append(propn);
  2569.                                    params.append("\" value=\"\"/>");
  2570.                                    args.append("\n        <argument>");
  2571.                                    args.append(propn);
  2572.                                    args.append("</argument>");
  2573.                                }
  2574.                            }
  2575.                        }
  2576.                    }
  2577.                    project.setProperty("applet-params-token", new String(params.toString()));
  2578.                    project.setProperty("application-args-token", new String(args.toString()));
  2579.                ]]>
  2580.             </script>
  2581.             <local name="application.desc.processed"/>
  2582.             <condition property="application.desc.processed" value="${application.desc}" else="Swing applet embedding JavaFX components.">
  2583.                 <isset property="application.desc"/>
  2584.             </condition>
  2585.             <filterchain id="jnlp.template.filter">
  2586.                 <replacetokens>
  2587.                     <token key="NAME" value="${dist.filename}"/>
  2588.                     <token key="MAINCLASS" value="${main.class}"/>
  2589.                     <token key="FILESIZE" value="${dist.jar.size}"/>
  2590.                     <token key="VENDOR" value="${application.vendor}"/>
  2591.                     <token key="TITLE" value="${application.title}"/>
  2592.                     <token key="DESCRIPTION" value="${application.desc.processed}"/>
  2593.                     <token key="WIDTH" value="${javafx.run.width}"/>
  2594.                     <token key="HEIGHT" value="${javafx.run.height}"/>
  2595.                     <token key="PERMISSIONS" value="${permissions-elevated-token}"/>
  2596.                     <token key="OFFLINE" value="${offline-allowed-token}"/>
  2597.                     <token key="UPDATEMODE" value="${update-mode-background-token}"/>
  2598.                     <token key="ICON" value="${icon-token}"/>
  2599.                     <token key="VMARGS" value="${vmargs-token}"/>
  2600.                     <token key="PARAMETERS" value="${applet-params-token}"/>
  2601.                     <token key="ARGUMENTS" value="${application-args-token}"/>
  2602.                 </replacetokens>
  2603.             </filterchain>
  2604.             <copy file="${basedir}${file.separator}nbproject${file.separator}templates${file.separator}FXSwingTemplateApplication.jnlp"
  2605.                    tofile="${dist.dir}${file.separator}${dist.filename}_application.jnlp" >
  2606.                     <filterchain refid="jnlp.template.filter"/>
  2607.             </copy>        
  2608.             <copy file="${basedir}${file.separator}nbproject${file.separator}templates${file.separator}FXSwingTemplateApplet.jnlp"
  2609.                    tofile="${dist.dir}${file.separator}${dist.filename}_applet.jnlp" >
  2610.                     <filterchain refid="jnlp.template.filter"/>
  2611.             </copy>        
  2612.             <copy file="${basedir}${file.separator}nbproject${file.separator}templates${file.separator}FXSwingTemplate.html"
  2613.                    tofile="${dist.dir}${file.separator}${dist.filename}.html" >
  2614.                     <filterchain refid="jnlp.template.filter"/>
  2615.             </copy>
  2616.             <echo message="JavaScript: deploy-deploy-swing 2" level="verbose"/>
  2617.             <script language="javascript">
  2618.                 <![CDATA[
  2619.                    function startsWith(s, prefix) {
  2620.                        return (s != null) && (s.indexOf(prefix) == 0);
  2621.                    }
  2622.                    function defined(s) {
  2623.                        return (s != null) && (s != "null") && (s.length > 0);
  2624.                    }
  2625.                    var PREF = "file:";
  2626.                    var doCopyIcon = new String(project.getProperty("local-icon-filename-available"));
  2627.                    if(defined(doCopyIcon)) {
  2628.                        var iconProp = new String(project.getProperty("javafx.deploy.icon"));
  2629.                        if(startsWith(iconProp, PREF)) {
  2630.                            iconProp = iconProp.slice(PREF.length);
  2631.                        }
  2632.                        while(iconProp.charAt(0) == "/") {
  2633.                            iconProp = iconProp.slice(1);
  2634.                        }
  2635.                        var S = java.io.File.separator;
  2636.                        var baseDir = new String(project.getProperty("basedir"));
  2637.                        var distDir = new String(project.getProperty("dist.dir"));
  2638.                        var copyTask = new String(project.createTask("copy"));
  2639.                        var source = new java.io.File(iconProp);
  2640.                        var target = new java.io.File(baseDir.concat(S).concat(distDir));
  2641.                        copyTask.setFile(source);
  2642.                        copyTask.setTodir(target);
  2643.                        copyTask.setFlatten(true);
  2644.                        copyTask.setFailOnError(false);
  2645.                        copyTask.perform();
  2646.                    }
  2647.                    var doCopyHTMLFrom = new String(project.getProperty("html-template-available"));
  2648.                    var doCopyHTMLTo = new String(project.getProperty("html-template-processed-available"));
  2649.                    if(defined(doCopyHTMLFrom) && defined(doCopyHTMLTo)) {
  2650.                        var htmlFrom = new String(project.getProperty("javafx.run.htmltemplate"));
  2651.                        if(startsWith(htmlFrom, PREF)) {
  2652.                            htmlFrom = htmlFrom.slice(PREF.length);
  2653.                        }
  2654.                        while(startsWith(htmlFrom, "/")) {
  2655.                            htmlFrom = htmlFrom.slice(1);
  2656.                        }
  2657.                        var htmlTo = new String(project.getProperty("javafx.run.htmltemplate.processed"));
  2658.                        if(startsWith(htmlTo, PREF)) {
  2659.                            htmlTo = htmlTo.slice(PREF.length);
  2660.                        }
  2661.                        while(startsWith(htmlTo, "/")) {
  2662.                            htmlTo = htmlTo.slice(1);
  2663.                        }
  2664.                        var copyTask = project.createTask("copy");
  2665.                        var source = new java.io.File(htmlFrom);
  2666.                        var target = new java.io.File(htmlTo);
  2667.                        copyTask.setFile(source);
  2668.                        copyTask.setTofile(target);
  2669.                        copyTask.setFailOnError(false);
  2670.                        copyTask.perform();
  2671.                    }
  2672.                ]]>
  2673.             </script>
  2674.             <antcall target="-post-jfx-deploy"/>
  2675.         </sequential>
  2676.     </macrodef>
  2677.  
  2678.  
  2679.     <!-- Fallback Project Deployment Macros To Support At Least Partially JDKs Without JavaScript Support -->
  2680.    
  2681.     <macrodef name="fallback-deploy-application-def">
  2682.         <sequential>
  2683.             <echo message="Warning: Parameters (if any) not passed to &lt;fx:application&gt; in fallback build mode due to JDK missing JavaScript support."/>
  2684.             <fx:application id="fxApp"
  2685.                name="${application.title}"
  2686.                mainClass="${javafx.main.class}"
  2687.                fallbackClass="${javafx.fallback.class}">
  2688.                 <!-- PARAMETERS NOT PASSED IN FALLBACK -->
  2689.             </fx:application>
  2690.         </sequential>
  2691.     </macrodef>
  2692.  
  2693.     <macrodef name="fallback-deploy-application-def-preloader">
  2694.         <sequential>
  2695.             <echo message="Warning: Parameters (if any) not passed to &lt;fx:application&gt; in fallback build mode due to JDK missing JavaScript support."/>
  2696.             <fx:application id="fxApp"
  2697.                name="${application.title}"
  2698.                mainClass="${javafx.main.class}"
  2699.                preloaderClass="${javafx.preloader.class}"
  2700.                fallbackClass="${javafx.fallback.class}">
  2701.                 <!-- PARAMETERS NOT PASSED IN FALLBACK -->
  2702.             </fx:application>
  2703.         </sequential>
  2704.     </macrodef>
  2705.  
  2706.     <macrodef name="fallback-deploy-application-def-swing">
  2707.         <sequential>
  2708.             <echo message="Warning: Parameters (if any) not passed to &lt;fx:application&gt; in fallback build mode due to JDK missing JavaScript support."/>
  2709.             <fx:application id="fxApp"
  2710.                name="${application.title}"
  2711.                mainClass="${main.class}"
  2712.                fallbackClass="${javafx.fallback.class}"
  2713.                toolkit="swing">
  2714.                 <!-- PARAMETERS NOT PASSED IN FALLBACK -->
  2715.             </fx:application>
  2716.         </sequential>
  2717.     </macrodef>
  2718.  
  2719.     <macrodef name="fallback-deploy-resources">
  2720.         <sequential>
  2721.             <fx:resources id="appRes">
  2722.                 <fx:fileset requiredFor="startup" dir="${jfx.deployment.dir}">
  2723.                     <include name="${jfx.deployment.jar}"/>
  2724.                     <include name="lib${file.separator}*.jar"/>
  2725.                     <exclude name="lib${file.separator}${jfx.deployment.jar}"/>
  2726.                 </fx:fileset>
  2727.             </fx:resources>
  2728.         </sequential>
  2729.     </macrodef>
  2730.  
  2731.     <macrodef name="fallback-deploy-resources-preloader">
  2732.         <sequential>
  2733.             <fx:resources id="appRes">
  2734.                 <fx:fileset requiredFor="preloader" dir="${jfx.deployment.dir}">
  2735.                     <include name="lib${file.separator}${javafx.preloader.jar.filename}"/>
  2736.                 </fx:fileset>
  2737.                 <fx:fileset requiredFor="startup" dir="${jfx.deployment.dir}">
  2738.                     <include name="${jfx.deployment.jar}"/>
  2739.                     <include name="lib${file.separator}*.jar"/>
  2740.                     <exclude name="lib${file.separator}${javafx.preloader.jar.filename}"/>
  2741.                     <exclude name="lib${file.separator}${jfx.deployment.jar}"/>
  2742.                 </fx:fileset>
  2743.             </fx:resources>
  2744.         </sequential>
  2745.     </macrodef>
  2746.  
  2747.     <macrodef name="fallback-deploy-jar">
  2748.         <sequential>
  2749.             <antcall target="-pre-jfx-jar"/>
  2750.             <fx:jar destfile="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}">
  2751.                 <fx:application refid="fxApp"/>
  2752.                 <fx:resources refid="appRes"/>
  2753.                 <fileset dir="${build.classes.dir}">
  2754.                     <exclude name="**${file.separator}*.${css-exclude-ext}"/>
  2755.                 </fileset>
  2756.                 <manifest>
  2757.                     <attribute name="Implementation-Vendor" value="${application.vendor}"/>
  2758.                     <attribute name="Implementation-Title" value="${application.title}"/>
  2759.                     <attribute name="Implementation-Version" value="1.0"/>
  2760.                 </manifest>
  2761.             </fx:jar>
  2762.             <antcall target="-post-jfx-jar"/>
  2763.         </sequential>
  2764.     </macrodef>
  2765.  
  2766.     <macrodef name="fallback-deploy-deploy">
  2767.         <sequential>
  2768.             <antcall target="-pre-jfx-deploy"/>
  2769.             <echo message="Warning: JVM Arguments and Callbacks (if any) not passed to &lt;fx:deploy&gt; in fallback build mode due to JDK missing JavaScript support."/>
  2770.             <fx:deploy width="${javafx.width}" height="${javafx.height}"
  2771.                      outdir="${jfx.deployment.dir}" embedjnlp="true" updatemode="${update-mode}"
  2772.                      outfile="${application.title}" includeDT="${javafx.deploy.includeDT}">
  2773.                 <fx:application refid="fxApp"/>
  2774.                 <fx:resources refid="appRes"/>
  2775.                 <fx:info title="${application.title}" vendor="${application.vendor}"/>
  2776.                 <fx:permissions elevated="${permissions.elevated}"/>
  2777.                 <fx:preferences shortcut="${javafx.deploy.adddesktopshortcut}" install="${javafx.deploy.installpermanently}" menu="${javafx.deploy.addstartmenushortcut}"/>
  2778.                 <!-- PLATFORM NOT PASSED IN FALLBACK -->
  2779.                 <!-- CALLBACKS NOT PASSED IN FALLBACK -->
  2780.             </fx:deploy>
  2781.             <antcall target="-post-jfx-deploy"/>
  2782.         </sequential>
  2783.     </macrodef>
  2784.  
  2785.     <macrodef name="fallback-deploy-deploy-template">
  2786.         <sequential>
  2787.             <antcall target="-pre-jfx-deploy"/>
  2788.             <echo message="Warning: JVM Arguments and Callbacks (if any) not passed to &lt;fx:deploy&gt; in fallback build mode due to JDK missing JavaScript support."/>
  2789.             <deploy-process-template/>
  2790.             <fx:deploy width="${javafx.width}" height="${javafx.height}"
  2791.                      outdir="${jfx.deployment.dir}" embedjnlp="true" updatemode="${update-mode}"
  2792.                      outfile="${application.title}" includeDT="${javafx.deploy.includeDT}">
  2793.                 <fx:application refid="fxApp"/>
  2794.                 <fx:resources refid="appRes"/>
  2795.                 <fx:info title="${application.title}" vendor="${application.vendor}"/>
  2796.                 <fx:permissions elevated="${permissions.elevated}"/>
  2797.                 <fx:preferences shortcut="${javafx.deploy.adddesktopshortcut}" install="${javafx.deploy.installpermanently}" menu="${javafx.deploy.addstartmenushortcut}"/>
  2798.                 <fx:template file="${javafx.run.htmltemplate}" tofile="${javafx.run.htmltemplate.processed}"/>
  2799.                 <!-- PLATFORM NOT PASSED IN FALLBACK -->
  2800.                 <!-- CALLBACKS NOT PASSED IN FALLBACK -->
  2801.             </fx:deploy>
  2802.             <antcall target="-post-jfx-deploy"/>
  2803.         </sequential>
  2804.     </macrodef>
  2805.  
  2806.  
  2807.     <!-- Project Deployment Targets -->
  2808.  
  2809.     <target name="-check-sign" depends="-check-project,-javafx-init-keystore" if="javafx.signed.true+signjars.task.available">
  2810.         <condition property="sign-nopreloader-notemplate">
  2811.             <and>
  2812.                 <isset property="app-without-preloader"/>
  2813.                 <not><isset property="html-template-available"/></not>
  2814.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2815.                 <not><isset property="use-blob-signing"/></not>
  2816.             </and>
  2817.         </condition>
  2818.         <condition property="sign-preloader-notemplate">
  2819.             <and>
  2820.                 <isset property="app-with-preloader"/>
  2821.                 <not><isset property="html-template-available"/></not>
  2822.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2823.                 <not><isset property="use-blob-signing"/></not>
  2824.             </and>
  2825.         </condition>
  2826.         <condition property="sign-nopreloader-template">
  2827.             <and>
  2828.                 <isset property="app-without-preloader"/>
  2829.                 <isset property="html-template-available"/>
  2830.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2831.                 <not><isset property="use-blob-signing"/></not>
  2832.             </and>
  2833.         </condition>
  2834.         <condition property="sign-preloader-template">
  2835.             <and>
  2836.                 <isset property="app-with-preloader"/>
  2837.                 <isset property="html-template-available"/>
  2838.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2839.                 <not><isset property="use-blob-signing"/></not>
  2840.             </and>
  2841.         </condition>
  2842.         <condition property="sign-nopreloader-notemplate-swing">
  2843.             <and>
  2844.                 <isset property="app-without-preloader"/>
  2845.                 <not><isset property="html-template-available"/></not>
  2846.                 <isset property="fx-in-swing-app-workaround"/>
  2847.                 <not><isset property="use-blob-signing"/></not>
  2848.             </and>
  2849.         </condition>
  2850.         <condition property="sign-nopreloader-template-swing">
  2851.             <and>
  2852.                 <isset property="app-without-preloader"/>
  2853.                 <isset property="html-template-available"/>
  2854.                 <isset property="fx-in-swing-app-workaround"/>
  2855.                 <not><isset property="use-blob-signing"/></not>
  2856.             </and>
  2857.         </condition>
  2858.         <condition property="sign-blob-nopreloader-notemplate">
  2859.             <and>
  2860.                 <isset property="app-without-preloader"/>
  2861.                 <not><isset property="html-template-available"/></not>
  2862.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2863.                 <isset property="use-blob-signing"/>
  2864.             </and>
  2865.         </condition>
  2866.         <condition property="sign-blob-preloader-notemplate">
  2867.             <and>
  2868.                 <isset property="app-with-preloader"/>
  2869.                 <not><isset property="html-template-available"/></not>
  2870.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2871.                 <isset property="use-blob-signing"/>
  2872.             </and>
  2873.         </condition>
  2874.         <condition property="sign-blob-nopreloader-template">
  2875.             <and>
  2876.                 <isset property="app-without-preloader"/>
  2877.                 <isset property="html-template-available"/>
  2878.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2879.                 <isset property="use-blob-signing"/>
  2880.             </and>
  2881.         </condition>
  2882.         <condition property="sign-blob-preloader-template">
  2883.             <and>
  2884.                 <isset property="app-with-preloader"/>
  2885.                 <isset property="html-template-available"/>
  2886.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2887.                 <isset property="use-blob-signing"/>
  2888.             </and>
  2889.         </condition>
  2890.         <condition property="sign-blob-nopreloader-notemplate-swing">
  2891.             <and>
  2892.                 <isset property="app-without-preloader"/>
  2893.                 <not><isset property="html-template-available"/></not>
  2894.                 <isset property="fx-in-swing-app-workaround"/>
  2895.                 <isset property="use-blob-signing"/>
  2896.             </and>
  2897.         </condition>
  2898.         <condition property="sign-blob-nopreloader-template-swing">
  2899.             <and>
  2900.                 <isset property="app-without-preloader"/>
  2901.                 <isset property="html-template-available"/>
  2902.                 <isset property="fx-in-swing-app-workaround"/>
  2903.                 <isset property="use-blob-signing"/>
  2904.             </and>
  2905.         </condition>
  2906.     </target>
  2907.     <target name="-check-nosign" depends="-check-project">
  2908.         <condition property="nosign-nopreloader-notemplate">
  2909.             <and>
  2910.                 <isset property="app-without-preloader"/>
  2911.                 <not><isset property="html-template-available"/></not>
  2912.                 <not><isset property="javafx.signed.true"/></not>
  2913.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2914.             </and>
  2915.         </condition>
  2916.         <condition property="nosign-preloader-notemplate">
  2917.             <and>
  2918.                 <isset property="app-with-preloader"/>
  2919.                 <not><isset property="html-template-available"/></not>
  2920.                 <not><isset property="javafx.signed.true"/></not>
  2921.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2922.             </and>
  2923.         </condition>
  2924.         <condition property="nosign-nopreloader-template">
  2925.             <and>
  2926.                 <isset property="app-without-preloader"/>
  2927.                 <isset property="html-template-available"/>
  2928.                 <not><isset property="javafx.signed.true"/></not>
  2929.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2930.             </and>
  2931.         </condition>
  2932.         <condition property="nosign-preloader-template">
  2933.             <and>
  2934.                 <isset property="app-with-preloader"/>
  2935.                 <isset property="html-template-available"/>
  2936.                 <not><isset property="javafx.signed.true"/></not>
  2937.                 <not><isset property="fx-in-swing-app-workaround"/></not>
  2938.             </and>
  2939.         </condition>
  2940.         <condition property="nosign-nopreloader-notemplate-swing">
  2941.             <and>
  2942.                 <isset property="app-without-preloader"/>
  2943.                 <not><isset property="html-template-available"/></not>
  2944.                 <not><isset property="javafx.signed.true"/></not>
  2945.                 <isset property="fx-in-swing-app-workaround"/>
  2946.             </and>
  2947.         </condition>
  2948.         <condition property="nosign-nopreloader-template-swing">
  2949.             <and>
  2950.                 <isset property="app-without-preloader"/>
  2951.                 <isset property="html-template-available"/>
  2952.                 <not><isset property="javafx.signed.true"/></not>
  2953.                 <isset property="fx-in-swing-app-workaround"/>
  2954.             </and>
  2955.         </condition>
  2956.     </target>
  2957.  
  2958.  
  2959.     <!-- WITH SIGNING -->
  2960.  
  2961.     <!-- project without preloader -->
  2962.     <!-- no html template -->
  2963.     <target name="-deploy-app-sign-nopreloader-notemplate" depends="-check-sign" if="sign-nopreloader-notemplate" unless="preloader-app">
  2964.         <echo message="-deploy-app-sign-nopreloader-notemplate" level="verbose"/>
  2965.         <deploy-defines/>
  2966.         <deploy-preprocess/>
  2967.         <deploy-jar/>
  2968.         <deploy-sign/>
  2969.         <deploy-deploy/>
  2970.     </target>
  2971.     <target name="-deploy-app-sign-blob-nopreloader-notemplate" depends="-check-sign" if="sign-blob-nopreloader-notemplate" unless="preloader-app">
  2972.         <echo message="-deploy-app-sign-blob-nopreloader-notemplate" level="verbose"/>
  2973.         <deploy-defines/>
  2974.         <deploy-preprocess/>
  2975.         <deploy-jar/>
  2976.         <deploy-sign-blob/>
  2977.         <deploy-deploy/>
  2978.     </target>
  2979.  
  2980.     <!-- project with preloader -->
  2981.     <!-- no html template -->
  2982.     <target name="-deploy-app-sign-preloader-notemplate" depends="-check-sign" if="sign-preloader-notemplate" unless="preloader-app">
  2983.         <echo message="-deploy-app-sign-preloader-notemplate" level="verbose"/>
  2984.         <deploy-defines/>
  2985.         <deploy-preprocess/>
  2986.         <deploy-jar/>
  2987.         <deploy-sign-preloader/>
  2988.         <deploy-deploy/>
  2989.     </target>
  2990.     <target name="-deploy-app-sign-blob-preloader-notemplate" depends="-check-sign" if="sign-blob-preloader-notemplate" unless="preloader-app">
  2991.         <echo message="-deploy-app-sign-blob-preloader-notemplate" level="verbose"/>
  2992.         <deploy-defines/>
  2993.         <deploy-preprocess/>
  2994.         <deploy-jar/>
  2995.         <deploy-sign-blob-preloader/>
  2996.         <deploy-deploy/>
  2997.     </target>
  2998.  
  2999.     <!-- project without preloader -->
  3000.     <!-- html template -->
  3001.     <target name="-deploy-app-sign-nopreloader-template" depends="-check-sign" if="sign-nopreloader-template" unless="preloader-app">
  3002.         <echo message="-deploy-app-sign-nopreloader-template" level="verbose"/>
  3003.         <deploy-defines/>
  3004.         <deploy-preprocess/>
  3005.         <deploy-jar/>
  3006.         <deploy-sign/>
  3007.         <deploy-process-template/>
  3008.         <deploy-deploy/>
  3009.     </target>
  3010.     <target name="-deploy-app-sign-blob-nopreloader-template" depends="-check-sign" if="sign-blob-nopreloader-template" unless="preloader-app">
  3011.         <echo message="-deploy-app-sign-blob-nopreloader-template" level="verbose"/>
  3012.         <deploy-defines/>
  3013.         <deploy-preprocess/>
  3014.         <deploy-jar/>
  3015.         <deploy-sign-blob/>
  3016.         <deploy-process-template/>
  3017.         <deploy-deploy/>
  3018.     </target>
  3019.  
  3020.     <!-- project with preloader -->
  3021.     <!-- html template -->
  3022.     <target name="-deploy-app-sign-preloader-template" depends="-check-sign" if="sign-preloader-template" unless="preloader-app">
  3023.         <echo message="-deploy-app-sign-preloader-template" level="verbose"/>
  3024.         <deploy-defines/>
  3025.         <deploy-preprocess/>
  3026.         <deploy-jar/>
  3027.         <deploy-sign-preloader/>
  3028.         <deploy-process-template/>
  3029.         <deploy-deploy/>
  3030.     </target>
  3031.     <target name="-deploy-app-sign-blob-preloader-template" depends="-check-sign" if="sign-blob-preloader-template" unless="preloader-app">
  3032.         <echo message="-deploy-app-sign-blob-preloader-template" level="verbose"/>
  3033.         <deploy-defines/>
  3034.         <deploy-preprocess/>
  3035.         <deploy-jar/>
  3036.         <deploy-sign-blob-preloader/>
  3037.         <deploy-process-template/>
  3038.         <deploy-deploy/>
  3039.     </target>
  3040.  
  3041.     <!-- project without preloader -->
  3042.     <!-- no html template -->
  3043.     <!-- FX in Swing app -->
  3044.     <target name="-deploy-app-sign-nopreloader-notemplate-swing" depends="-check-sign" if="sign-nopreloader-notemplate-swing" unless="preloader-app-no-workaround">
  3045.         <echo message="-deploy-app-sign-nopreloader-notemplate-swing" level="verbose"/>
  3046.         <deploy-defines/>
  3047.         <deploy-preprocess/>
  3048.         <deploy-jar/>
  3049.         <deploy-sign/>
  3050.         <deploy-deploy-swing/>
  3051.     </target>
  3052.     <target name="-deploy-app-sign-blob-nopreloader-notemplate-swing" depends="-check-sign" if="sign-blob-nopreloader-notemplate-swing" unless="preloader-app-no-workaround">
  3053.         <echo message="-deploy-app-sign-blob-nopreloader-notemplate-swing" level="verbose"/>
  3054.         <deploy-defines/>
  3055.         <deploy-preprocess/>
  3056.         <deploy-jar/>
  3057.         <deploy-sign-blob/>
  3058.         <deploy-deploy-swing/>
  3059.     </target>
  3060.  
  3061.     <!-- project without preloader -->
  3062.     <!-- html template -->
  3063.     <!-- FX in Swing app -->
  3064.     <target name="-deploy-app-sign-nopreloader-template-swing" depends="-check-sign" if="sign-nopreloader-template-swing" unless="preloader-app-no-workaround">
  3065.         <echo message="-deploy-app-sign-nopreloader-template-swing" level="verbose"/>
  3066.         <deploy-defines/>
  3067.         <deploy-preprocess/>
  3068.         <deploy-jar/>
  3069.         <deploy-sign/>
  3070.         <deploy-process-template/>
  3071.         <deploy-deploy-swing/>
  3072.     </target>
  3073.     <target name="-deploy-app-sign-blob-nopreloader-template-swing" depends="-check-sign" if="sign-blob-nopreloader-template-swing" unless="preloader-app-no-workaround">
  3074.         <echo message="-deploy-app-sign-blob-nopreloader-template-swing" level="verbose"/>
  3075.         <deploy-defines/>
  3076.         <deploy-preprocess/>
  3077.         <deploy-jar/>
  3078.         <deploy-sign-blob/>
  3079.         <deploy-process-template/>
  3080.         <deploy-deploy-swing/>
  3081.     </target>
  3082.  
  3083.  
  3084.     <!-- NO SIGNING -->
  3085.  
  3086.     <!-- project without preloader -->
  3087.     <!-- no html template -->
  3088.     <target name="-deploy-app-nosign-nopreloader-notemplate" depends="-check-nosign" if="nosign-nopreloader-notemplate" unless="preloader-app">
  3089.         <echo message="-deploy-app-nosign-nopreloader-notemplate" level="verbose"/>
  3090.         <deploy-defines/>
  3091.         <deploy-preprocess/>
  3092.         <deploy-jar/>
  3093.         <deploy-deploy/>
  3094.     </target>
  3095.  
  3096.     <!-- project with preloader -->
  3097.     <!-- no html template -->
  3098.     <target name="-deploy-app-nosign-preloader-notemplate" depends="-check-nosign" if="nosign-preloader-notemplate" unless="preloader-app">
  3099.         <echo message="-deploy-app-nosign-preloader-notemplate" level="verbose"/>
  3100.         <deploy-defines/>
  3101.         <deploy-preprocess/>
  3102.         <deploy-jar/>
  3103.         <deploy-deploy/>
  3104.     </target>
  3105.  
  3106.     <!-- project without preloader -->
  3107.     <!-- html template -->
  3108.     <target name="-deploy-app-nosign-nopreloader-template" depends="-check-nosign" if="nosign-nopreloader-template" unless="preloader-app">
  3109.         <echo message="-deploy-app-nosign-nopreloader-template" level="verbose"/>
  3110.         <deploy-defines/>
  3111.         <deploy-preprocess/>
  3112.         <deploy-jar/>
  3113.         <deploy-process-template/>
  3114.         <deploy-deploy/>
  3115.     </target>
  3116.  
  3117.     <!-- project with preloader -->
  3118.     <!-- html template -->
  3119.     <target name="-deploy-app-nosign-preloader-template" depends="-check-nosign" if="nosign-preloader-template" unless="preloader-app">
  3120.         <echo message="-deploy-app-nosign-preloader-template" level="verbose"/>
  3121.         <deploy-defines/>
  3122.         <deploy-preprocess/>
  3123.         <deploy-jar/>
  3124.         <deploy-process-template/>
  3125.         <deploy-deploy/>
  3126.     </target>
  3127.  
  3128.     <!-- project without preloader -->
  3129.     <!-- no html template -->
  3130.     <!-- FX in Swing app -->
  3131.     <target name="-deploy-app-nosign-nopreloader-notemplate-swing" depends="-check-nosign" if="nosign-nopreloader-notemplate-swing" unless="preloader-app-no-workaround">
  3132.         <echo message="-deploy-app-nosign-nopreloader-notemplate-swing" level="verbose"/>
  3133.         <deploy-defines/>
  3134.         <deploy-preprocess/>
  3135.         <deploy-jar/>
  3136.         <deploy-deploy-swing/>
  3137.     </target>
  3138.  
  3139.     <!-- project without preloader -->
  3140.     <!-- html template -->
  3141.     <!-- FX in Swing app -->
  3142.     <target name="-deploy-app-nosign-nopreloader-template-swing" depends="-check-nosign" if="nosign-nopreloader-template-swing" unless="preloader-app-no-workaround">
  3143.         <echo message="-deploy-app-nosign-nopreloader-template-swing" level="verbose"/>
  3144.         <deploy-defines/>
  3145.         <deploy-preprocess/>
  3146.         <deploy-jar/>
  3147.         <deploy-process-template/>
  3148.         <deploy-deploy-swing/>
  3149.     </target>
  3150.  
  3151.  
  3152.     <!-- FALLBACK (NO JAVASCRIPT) TARGETS WITH SIGNING -->
  3153.  
  3154.     <target name="-check-fallback-sign-deploy-swing-possible" depends="-check-sign">
  3155.         <local name="fail-deploy-swing-possible"/>
  3156.         <condition property="fail-deploy-swing-possible">
  3157.             <and>
  3158.                 <or>
  3159.                     <isset property="sign-nopreloader-notemplate-swing"/>
  3160.                     <isset property="sign-nopreloader-template-swing"/>
  3161.                 </or>
  3162.                 <not><isset property="have-fx-ant-api-1.2"/></not>
  3163.             </and>
  3164.         </condition>
  3165.         <fail message="Error: JavaFX SDK version 2.2 or newer is needed to deploy FX-in-Swing on JDK without JavaScript support."
  3166.              if="fail-deploy-swing-possible"/>
  3167.     </target>
  3168.    
  3169.     <!-- FALLBACK project without preloader -->
  3170.     <!-- FALLBACK no html template -->
  3171.     <target name="-fallback-deploy-app-sign-nopreloader-notemplate" depends="-check-sign" if="sign-nopreloader-notemplate" unless="preloader-app">
  3172.         <echo message="-fallback-deploy-app-sign-nopreloader-notemplate" level="verbose"/>
  3173.         <deploy-defines/>
  3174.         <deploy-preprocess/>
  3175.         <fallback-deploy-application-def/>
  3176.         <fallback-deploy-resources/>
  3177.         <fallback-deploy-jar/>
  3178.         <deploy-sign/>
  3179.         <fallback-deploy-deploy/>
  3180.     </target>
  3181.     <target name="-fallback-deploy-app-sign-blob-nopreloader-notemplate" depends="-check-sign" if="sign-blob-nopreloader-notemplate" unless="preloader-app">
  3182.         <echo message="-fallback-deploy-app-sign-blob-nopreloader-notemplate" level="verbose"/>
  3183.         <deploy-defines/>
  3184.         <deploy-preprocess/>
  3185.         <fallback-deploy-application-def/>
  3186.         <fallback-deploy-resources/>
  3187.         <fallback-deploy-jar/>
  3188.         <deploy-sign-blob/>
  3189.         <fallback-deploy-deploy/>
  3190.     </target>
  3191.  
  3192.     <!-- FALLBACK project with preloader -->
  3193.     <!-- FALLBACK no html template -->
  3194.     <target name="-fallback-deploy-app-sign-preloader-notemplate" depends="-check-sign" if="sign-preloader-notemplate" unless="preloader-app">
  3195.         <echo message="-fallback-deploy-app-sign-preloader-notemplate" level="verbose"/>
  3196.         <deploy-defines/>
  3197.         <deploy-preprocess/>
  3198.         <fallback-deploy-application-def-preloader/>
  3199.         <fallback-deploy-resources-preloader/>
  3200.         <fallback-deploy-jar/>
  3201.         <deploy-sign-preloader/>
  3202.         <fallback-deploy-deploy/>
  3203.     </target>
  3204.     <target name="-fallback-deploy-app-sign-blob-preloader-notemplate" depends="-check-sign" if="sign-blob-preloader-notemplate" unless="preloader-app">
  3205.         <echo message="-fallback-deploy-app-sign-blob-preloader-notemplate" level="verbose"/>
  3206.         <deploy-defines/>
  3207.         <deploy-preprocess/>
  3208.         <fallback-deploy-application-def-preloader/>
  3209.         <fallback-deploy-resources-preloader/>
  3210.         <fallback-deploy-jar/>
  3211.         <deploy-sign-blob-preloader/>
  3212.         <fallback-deploy-deploy/>
  3213.     </target>
  3214.  
  3215.     <!-- FALLBACK project without preloader -->
  3216.     <!-- FALLBACK html template -->
  3217.     <target name="-fallback-deploy-app-sign-nopreloader-template" depends="-check-sign" if="sign-nopreloader-template" unless="preloader-app">
  3218.         <echo message="-fallback-deploy-app-sign-nopreloader-template" level="verbose"/>
  3219.         <deploy-defines/>
  3220.         <deploy-preprocess/>
  3221.         <fallback-deploy-application-def/>
  3222.         <fallback-deploy-resources/>
  3223.         <fallback-deploy-jar/>
  3224.         <deploy-sign/>
  3225.         <fallback-deploy-deploy-template/>
  3226.     </target>
  3227.     <target name="-fallback-deploy-app-sign-blob-nopreloader-template" depends="-check-sign" if="sign-blob-nopreloader-template" unless="preloader-app">
  3228.         <echo message="-fallback-deploy-app-sign-blob-nopreloader-template" level="verbose"/>
  3229.         <deploy-defines/>
  3230.         <deploy-preprocess/>
  3231.         <fallback-deploy-application-def/>
  3232.         <fallback-deploy-resources/>
  3233.         <fallback-deploy-jar/>
  3234.         <deploy-sign-blob/>
  3235.         <fallback-deploy-deploy-template/>
  3236.     </target>
  3237.  
  3238.     <!-- FALLBACK project with preloader -->
  3239.     <!-- FALLBACK html template -->
  3240.     <target name="-fallback-deploy-app-sign-preloader-template" depends="-check-sign" if="sign-preloader-template" unless="preloader-app">
  3241.         <echo message="-fallback-deploy-app-sign-preloader-template" level="verbose"/>
  3242.         <deploy-defines/>
  3243.         <deploy-preprocess/>
  3244.         <fallback-deploy-application-def-preloader/>
  3245.         <fallback-deploy-resources-preloader/>
  3246.         <fallback-deploy-jar/>
  3247.         <deploy-sign-preloader/>
  3248.         <fallback-deploy-deploy-template/>
  3249.     </target>
  3250.     <target name="-fallback-deploy-app-sign-blob-preloader-template" depends="-check-sign" if="sign-blob-preloader-template" unless="preloader-app">
  3251.         <echo message="-fallback-deploy-app-sign-blob-preloader-template" level="verbose"/>
  3252.         <deploy-defines/>
  3253.         <deploy-preprocess/>
  3254.         <fallback-deploy-application-def-preloader/>
  3255.         <fallback-deploy-resources-preloader/>
  3256.         <fallback-deploy-jar/>
  3257.         <deploy-sign-blob-preloader/>
  3258.         <fallback-deploy-deploy-template/>
  3259.     </target>
  3260.  
  3261.     <!-- FALLBACK project without preloader -->
  3262.     <!-- FALLBACK no html template -->
  3263.     <!-- FALLBACK FX in Swing app -->
  3264.     <target name="-fallback-deploy-app-sign-nopreloader-notemplate-swing" depends="-check-fallback-sign-deploy-swing-possible" if="sign-nopreloader-notemplate-swing" unless="preloader-app-no-workaround">
  3265.         <echo message="-fallback-deploy-app-sign-nopreloader-notemplate-swing" level="verbose"/>
  3266.         <deploy-defines/>
  3267.         <deploy-preprocess/>
  3268.         <fallback-deploy-application-def-swing/>
  3269.         <fallback-deploy-resources/>
  3270.         <fallback-deploy-jar/>
  3271.         <deploy-sign/>
  3272.         <fallback-deploy-deploy/>
  3273.     </target>
  3274.     <target name="-fallback-deploy-app-sign-blob-nopreloader-notemplate-swing" depends="-check-fallback-sign-deploy-swing-possible" if="sign-nopreloader-notemplate-swing" unless="preloader-app-no-workaround">
  3275.         <echo message="-fallback-deploy-app-sign-blob-nopreloader-notemplate-swing" level="verbose"/>
  3276.         <deploy-defines/>
  3277.         <deploy-preprocess/>
  3278.         <fallback-deploy-application-def-swing/>
  3279.         <fallback-deploy-resources/>
  3280.         <fallback-deploy-jar/>
  3281.         <deploy-sign-blob/>
  3282.         <fallback-deploy-deploy/>
  3283.     </target>
  3284.  
  3285.     <!-- FALLBACK project without preloader -->
  3286.     <!-- FALLBACK html template -->
  3287.     <!-- FALLBACK FX in Swing app -->
  3288.     <target name="-fallback-deploy-app-sign-nopreloader-template-swing" depends="-check-fallback-sign-deploy-swing-possible" if="sign-nopreloader-template-swing" unless="preloader-app-no-workaround">
  3289.         <echo message="-fallback-deploy-app-sign-nopreloader-template-swing" level="verbose"/>
  3290.         <deploy-defines/>
  3291.         <deploy-preprocess/>
  3292.         <fallback-deploy-application-def-swing/>
  3293.         <fallback-deploy-resources/>
  3294.         <fallback-deploy-jar/>
  3295.         <deploy-sign/>
  3296.         <fallback-deploy-deploy-template/>
  3297.     </target>
  3298.     <target name="-fallback-deploy-app-sign-blob-nopreloader-template-swing" depends="-check-fallback-sign-deploy-swing-possible" if="sign-nopreloader-template-swing" unless="preloader-app-no-workaround">
  3299.         <echo message="-fallback-deploy-app-sign-blob-nopreloader-template-swing" level="verbose"/>
  3300.         <deploy-defines/>
  3301.         <deploy-preprocess/>
  3302.         <fallback-deploy-application-def-swing/>
  3303.         <fallback-deploy-resources/>
  3304.         <fallback-deploy-jar/>
  3305.         <deploy-sign-blob/>
  3306.         <fallback-deploy-deploy-template/>
  3307.     </target>
  3308.  
  3309.  
  3310.     <!-- FALLBACK (NO JAVASCRIPT) TARGETS NO SIGNING -->
  3311.  
  3312.     <target name="-check-fallback-nosign-deploy-swing-possible" depends="-check-nosign">
  3313.         <local name="fail-deploy-swing-possible"/>
  3314.         <condition property="fail-deploy-swing-possible">
  3315.             <and>
  3316.                 <or>
  3317.                     <isset property="nosign-nopreloader-notemplate-swing"/>
  3318.                     <isset property="nosign-nopreloader-template-swing"/>
  3319.                 </or>
  3320.                 <not><isset property="have-fx-ant-api-1.2"/></not>
  3321.             </and>
  3322.         </condition>
  3323.         <fail message="Error: JavaFX SDK version 2.2 or newer is needed to deploy FX-in-Swing on JDK without JavaScript support."
  3324.              if="fail-deploy-swing-possible"/>
  3325.     </target>
  3326.  
  3327.     <!-- FALLBACK project without preloader -->
  3328.     <!-- FALLBACK no html template -->
  3329.     <target name="-fallback-deploy-app-nosign-nopreloader-notemplate" depends="-check-nosign" if="nosign-nopreloader-notemplate" unless="preloader-app">
  3330.         <echo message="-fallback-deploy-app-nosign-nopreloader-notemplate" level="verbose"/>
  3331.         <deploy-defines/>
  3332.         <deploy-preprocess/>
  3333.         <fallback-deploy-application-def/>
  3334.         <fallback-deploy-resources/>
  3335.         <fallback-deploy-jar/>
  3336.         <fallback-deploy-deploy/>
  3337.     </target>
  3338.  
  3339.     <!-- FALLBACK project with preloader -->
  3340.     <!-- FALLBACK no html template -->
  3341.     <target name="-fallback-deploy-app-nosign-preloader-notemplate" depends="-check-nosign" if="nosign-preloader-notemplate" unless="preloader-app">
  3342.         <echo message="-fallback-deploy-app-nosign-preloader-notemplate" level="verbose"/>
  3343.         <deploy-defines/>
  3344.         <deploy-preprocess/>
  3345.         <fallback-deploy-application-def-preloader/>
  3346.         <fallback-deploy-resources-preloader/>
  3347.         <fallback-deploy-jar/>
  3348.         <fallback-deploy-deploy/>
  3349.     </target>
  3350.  
  3351.     <!-- FALLBACK project without preloader -->
  3352.     <!-- FALLBACK html template -->
  3353.     <target name="-fallback-deploy-app-nosign-nopreloader-template" depends="-check-nosign" if="nosign-nopreloader-template" unless="preloader-app">
  3354.         <echo message="-fallback-deploy-app-nosign-nopreloader-template" level="verbose"/>
  3355.         <deploy-defines/>
  3356.         <deploy-preprocess/>
  3357.         <fallback-deploy-application-def/>
  3358.         <fallback-deploy-resources/>
  3359.         <fallback-deploy-jar/>
  3360.         <fallback-deploy-deploy-template/>
  3361.     </target>
  3362.  
  3363.     <!-- FALLBACK project with preloader -->
  3364.     <!-- FALLBACK html template -->
  3365.     <target name="-fallback-deploy-app-nosign-preloader-template" depends="-check-nosign" if="nosign-preloader-template" unless="preloader-app">
  3366.         <echo message="-fallback-deploy-app-nosign-preloader-template" level="verbose"/>
  3367.         <deploy-defines/>
  3368.         <deploy-preprocess/>
  3369.         <fallback-deploy-application-def-preloader/>
  3370.         <fallback-deploy-resources-preloader/>
  3371.         <fallback-deploy-jar/>
  3372.         <fallback-deploy-deploy-template/>
  3373.     </target>
  3374.  
  3375.     <!-- FALLBACK project without preloader -->
  3376.     <!-- FALLBACK no html template -->
  3377.     <!-- FALLBACK FX in Swing app -->
  3378.     <target name="-fallback-deploy-app-nosign-nopreloader-notemplate-swing" depends="-check-fallback-nosign-deploy-swing-possible" if="nosign-nopreloader-notemplate-swing" unless="preloader-app-no-workaround">
  3379.         <echo message="-fallback-deploy-app-nosign-nopreloader-notemplate-swing" level="verbose"/>
  3380.         <deploy-defines/>
  3381.         <deploy-preprocess/>
  3382.         <fallback-deploy-application-def-swing/>
  3383.         <fallback-deploy-resources/>
  3384.         <fallback-deploy-jar/>
  3385.         <fallback-deploy-deploy/>
  3386.     </target>
  3387.  
  3388.     <!-- FALLBACK project without preloader -->
  3389.     <!-- FALLBACK html template -->
  3390.     <!-- FALLBACK FX in Swing app -->
  3391.     <target name="-fallback-deploy-app-nosign-nopreloader-template-swing" depends="-check-fallback-nosign-deploy-swing-possible" if="nosign-nopreloader-template-swing" unless="preloader-app-no-workaround">
  3392.         <echo message="-fallback-deploy-app-nosign-nopreloader-template-swing" level="verbose"/>
  3393.         <deploy-defines/>
  3394.         <deploy-preprocess/>
  3395.         <fallback-deploy-application-def-swing/>
  3396.         <fallback-deploy-resources/>
  3397.         <fallback-deploy-jar/>
  3398.         <fallback-deploy-deploy-template/>
  3399.     </target>
  3400.  
  3401.  
  3402.     <!-- Project Build Targets -->
  3403.  
  3404.     <target name="jfx-build" depends="-jfx-do-compile, -jfx-do-jar, -jfx-do-post-jar"/>
  3405.     <target name="jfx-build-noscript" depends="-set-fallback-no-javascript, -jfx-do-compile, -jfx-do-jar, -jfx-do-post-jar"/>
  3406.    
  3407.     <target name="jfx-rebuild" depends="clean, -jfx-do-compile, -jfx-do-jar, -jfx-do-post-jar"/>
  3408.     <target name="jfx-rebuild-noscript" depends="-set-fallback-no-javascript, clean, -jfx-do-compile, -jfx-do-jar, -jfx-do-post-jar"/>
  3409.  
  3410.     <target name="jfx-build-native" depends="-set-do-build-native-package, -check-ant-jre-supports-native-packaging, -check-native-packager-external-tools, jfx-rebuild"/>
  3411.     <target name="jfx-build-native-noscript" depends="-set-do-build-native-package, -check-ant-jre-supports-native-packaging, -check-native-packager-external-tools, jfx-rebuild-noscript"/>
  3412.  
  3413.     <target name="build-native">
  3414.         <property name="javafx.native.bundling.type" value="${native.bundling.type}"/>
  3415.         <antcall target="jfx-build-native"/>
  3416.     </target>
  3417.     <target name="build-native-noscript">
  3418.         <property name="javafx.native.bundling.type" value="${native.bundling.type}"/>        
  3419.         <antcall target="jfx-build-native-noscript"/>
  3420.     </target>
  3421.    
  3422.     <target name="-check-do-jar">
  3423.         <condition property="do-jar-false">
  3424.             <and>
  3425.                 <isset property="do.jar"/>
  3426.                 <equals arg1="${do.jar}" arg2="false"/>
  3427.             </and>
  3428.         </condition>
  3429.     </target>
  3430.     <target name="-set-fallback-no-javascript">
  3431.         <property name="fallback.no.javascript" value="true"/>
  3432.         <echo message="Warning: Using fallback build infrastructure due to default JDK missing JavaScript support."/>
  3433.     </target>
  3434.     <target name="-jfx-do-compile" depends="-check-do-jar" if="do-jar-false">
  3435.         <antcall target="compile"/>
  3436.     </target>
  3437.     <target name="-jfx-do-jar" depends="-check-do-jar" unless="do-jar-false">
  3438.         <antcall target="jar"/>
  3439.     </target>
  3440.     <target name="-jfx-do-post-jar" depends="-init-check,-check-project" if="preloader-app">
  3441.         <!-- Preloaders are created using SE copylibs task that creates readme file relevant for SE only -->
  3442.         <delete file="${basedir}${file.separator}${dist.dir}${file.separator}README.TXT"/>
  3443.     </target>
  3444.    
  3445.     <target name="-set-do-build-native-package">
  3446.         <property name="do.build.native.package" value="true"/>
  3447.         <echo message="do.build.native.package = ${do.build.native.package}" level="verbose"/>
  3448.     </target>
  3449.     <target name="-check-ant-jre-supports-native-packaging" depends="-check-ant-jre-version">
  3450.         <fail message="Error:${line.separator}JavaFX native packager requires NetBeans to run on JDK 1.7u6 or later !" if="have-ant-jre-pre7u6"/>
  3451.     </target>
  3452.    
  3453.     <target name="-call-pre-jfx-native" if="do.build.native.package">
  3454.         <antcall target="-pre-jfx-native"/>
  3455.     </target>
  3456.     <target name="-call-post-jfx-native" if="do.build.native.package">
  3457.         <antcall target="-post-jfx-native"/>
  3458.     </target>
  3459.  
  3460.     <target name="-check-native-bundling-type" depends="-check-operating-system" if="do.build.native.package">
  3461.         <condition property="need.Inno.presence">
  3462.             <and>
  3463.                 <isset property="running.on.windows"/>
  3464.                 <isset property="javafx.native.bundling.type"/>
  3465.                 <or>
  3466.                     <equals arg1="${javafx.native.bundling.type}" arg2="all" casesensitive="false"/>
  3467.                     <equals arg1="${javafx.native.bundling.type}" arg2="installer" casesensitive="false"/>
  3468.                     <equals arg1="${javafx.native.bundling.type}" arg2="exe" casesensitive="false"/>
  3469.                 </or>
  3470.             </and>
  3471.         </condition>
  3472.         <condition property="need.WiX.presence">
  3473.             <and>
  3474.                 <isset property="running.on.windows"/>
  3475.                 <isset property="javafx.native.bundling.type"/>
  3476.                 <or>
  3477.                     <equals arg1="${javafx.native.bundling.type}" arg2="all" casesensitive="false"/>
  3478.                     <equals arg1="${javafx.native.bundling.type}" arg2="installer" casesensitive="false"/>
  3479.                     <equals arg1="${javafx.native.bundling.type}" arg2="msi" casesensitive="false"/>
  3480.                 </or>
  3481.             </and>
  3482.         </condition>
  3483.         <condition property="need.dpkg.presence">
  3484.             <and>
  3485.                 <isset property="running.on.unix"/>
  3486.                 <isset property="javafx.native.bundling.type"/>
  3487.                 <or>
  3488.                     <equals arg1="${javafx.native.bundling.type}" arg2="deb" casesensitive="false"/>
  3489.                 </or>
  3490.             </and>
  3491.         </condition>
  3492.         <condition property="need.rpmbuild.presence">
  3493.             <and>
  3494.                 <isset property="running.on.unix"/>
  3495.                 <isset property="javafx.native.bundling.type"/>
  3496.                 <or>
  3497.                     <equals arg1="${javafx.native.bundling.type}" arg2="rpm" casesensitive="false"/>
  3498.                 </or>
  3499.             </and>
  3500.         </condition>
  3501.         <echo message="need.Inno.presence:${need.Inno.presence}" level="verbose"/>
  3502.         <echo message="need.WiX.presence:${need.WiX.presence}" level="verbose"/>
  3503.         <echo message="need.dpkg.presence:${need.dpkg.presence}" level="verbose"/>
  3504.         <echo message="need.rpmbuild.presence:${need.rpmbuild.presence}" level="verbose"/>
  3505.     </target>
  3506.     <target name="-check-Inno-presence" depends="-check-native-bundling-type" if="need.Inno.presence">
  3507.         <local name="exec-output"/>
  3508.         <local name="exec-error"/>
  3509.         <local name="exec-result"/>
  3510.         <exec executable="iscc" outputproperty="exec-output" failifexecutionfails="false" errorproperty="exec-error" resultproperty="exec-result"/>
  3511.         <echo message="exec-output:${exec-output}" level="verbose"/>
  3512.         <echo message="exec-error:${exec-error}" level="verbose"/>
  3513.         <echo message="exec-result:${exec-result}" level="verbose"/>
  3514.         <condition property="missing.Inno">
  3515.             <not><and>
  3516.                 <contains string="${exec-output}" substring="Inno Setup"/>
  3517.                 <not><contains string="${exec-output}" substring="Inno Setup 1"/></not>
  3518.                 <not><contains string="${exec-output}" substring="Inno Setup 2"/></not>
  3519.                 <not><contains string="${exec-output}" substring="Inno Setup 3"/></not>
  3520.                 <not><contains string="${exec-output}" substring="Inno Setup 4"/></not>
  3521.             </and></not>
  3522.         </condition>
  3523.     </target>
  3524.     <target name="-check-WiX-presence" depends="-check-native-bundling-type" if="need.WiX.presence">
  3525.         <local name="exec-output"/>
  3526.         <local name="exec-error"/>
  3527.         <local name="exec-result"/>
  3528.         <exec executable="candle" outputproperty="exec-output" failifexecutionfails="false" errorproperty="exec-error" resultproperty="exec-result">
  3529.             <arg value="-?"/>
  3530.         </exec>
  3531.         <echo message="exec-output:${exec-output}" level="verbose"/>
  3532.         <echo message="exec-error:${exec-error}" level="verbose"/>
  3533.         <echo message="exec-result:${exec-result}" level="verbose"/>
  3534.         <condition property="missing.WiX">
  3535.             <not>
  3536.                 <matches string="${exec-output}" pattern="windows\s+installer\s+xml\s+(toolset\s+)?compiler\s+version\s+3.*" casesensitive="false"/>
  3537.             </not>
  3538.         </condition>
  3539.     </target>
  3540.     <target name="-check-dpkg-presence" depends="-check-native-bundling-type" if="need.dpkg.presence">
  3541.         <local name="exec.which.dpkg.result"/>
  3542.         <local name="exec.which.dpkg.output"/>
  3543.         <exec executable="command" failifexecutionfails="false" failonerror="false" resultproperty="exec.which.dpkg.result" outputproperty="exec.which.dpkg.output">
  3544.             <arg line="-v dpkg"/>
  3545.         </exec>
  3546.         <condition property="missing.dpkg">
  3547.             <not><and>
  3548.                 <isset property="exec.which.dpkg.result"/>
  3549.                 <equals arg1="${exec.which.dpkg.result}" arg2="0"/>
  3550.                 <isset property="exec.which.dpkg.output"/>
  3551.                 <not><equals arg1="${exec.which.dpkg.output}" arg2=""/></not>
  3552.             </and></not>
  3553.         </condition>
  3554.     </target>
  3555.     <target name="-check-rpmbuild-presence" depends="-check-native-bundling-type" if="need.rpmbuild.presence">
  3556.         <local name="exec.which.rpmbuild.result"/>
  3557.         <local name="exec.which.rpmbuild.output"/>
  3558.         <exec executable="command" failifexecutionfails="false" failonerror="false" resultproperty="exec.which.rpmbuild.result" outputproperty="exec.which.rpmbuild.output">
  3559.             <arg line="-v rpmbuild"/>
  3560.         </exec>
  3561.         <condition property="missing.rpmbuild">
  3562.             <not><and>
  3563.                 <isset property="exec.which.rpmbuild.result"/>
  3564.                 <equals arg1="${exec.which.rpmbuild.result}" arg2="0"/>
  3565.                 <isset property="exec.which.rpmbuild.output"/>
  3566.                 <not><equals arg1="${exec.which.rpmbuild.output}" arg2=""/></not>
  3567.             </and></not>
  3568.         </condition>
  3569.     </target>
  3570.     <target name="-check-native-packager-external-tools" depends="-check-Inno-presence, -check-WiX-presence, -check-dpkg-presence, -check-rpmbuild-presence">
  3571.         <property name="missing.Inno.message" value="JavaFX native packager requires external Inno Setup 5+ tools installed and included on PATH to create EXE installer. See http://www.jrsoftware.org/"/>
  3572.         <property name="missing.WiX.message" value="JavaFX native packager requires external WiX 3.0+ tools installed and included on PATH to create MSI installer. See http://wix.sourceforge.net/"/>
  3573.         <property name="missing.dpkg.message" value="JavaFX native packager requires Debian Packager tools to create DEB package, but dpkg could not be found."/>
  3574.         <property name="missing.rpmbuild.message" value="JavaFX native packager requires RPMBuild to create RPM package, but rpmbuild could not be found."/>
  3575.         <condition property="missing.Inno.WiX">
  3576.             <and>
  3577.                 <isset property="missing.Inno"/>
  3578.                 <isset property="missing.WiX"/>
  3579.             </and>
  3580.         </condition>
  3581.         <fail message="Error:${line.separator}${missing.Inno.message}${line.separator}${missing.WiX.message}" if="missing.Inno.WiX"/>
  3582.         <fail message="Error:${line.separator}${missing.Inno.message}" if="missing.Inno"/>
  3583.         <fail message="Error:${line.separator}${missing.WiX.message}" if="missing.WiX"/>
  3584.         <fail message="Error:${line.separator}${missing.dpkg.message}" if="missing.dpkg"/>
  3585.         <fail message="Error:${line.separator}${missing.rpmbuild.message}" if="missing.rpmbuild"/>
  3586.     </target>
  3587.  
  3588.     <!-- Project Run Support -->
  3589.  
  3590.     <target name="-warn-of-preloader" depends="-check-project" if="preloader-app-no-workaround">
  3591.         <fail message="Error:${line.separator}JavaFX 2 Preloader Project can not be executed directly.${line.separator}Please execute instead a JavaFX Application that uses the Preloader."/>
  3592.     </target>
  3593.    
  3594.     <target name="-mark-project-state-running">
  3595.         <property name="project.state.running" value="true"/>
  3596.         <echo message="project.state.running = ${project.state.running}" level="verbose"/>
  3597.     </target>
  3598.     <target name="-mark-project-state-debugging">
  3599.         <property name="project.state.debugging" value="true"/>
  3600.         <echo message="project.state.debugging = ${project.state.debugging}" level="verbose"/>
  3601.     </target>
  3602.     <target name="-mark-project-state-debugging-in-browser" depends="-mark-project-state-debugging">
  3603.         <property name="project.state.debugging.in.browser" value="true"/>
  3604.         <echo message="project.state.debugging.in.browser = ${project.state.debugging.in.browser}" level="verbose"/>
  3605.     </target>
  3606.     <target name="-mark-project-state-profiling">
  3607.         <property name="project.state.profiling" value="true"/>
  3608.         <echo message="project.state.profiling = ${project.state.profiling}" level="verbose"/>
  3609.     </target>
  3610.     <target name="-mark-project-needs-jnlp">
  3611.         <property name="project.needs.jnlp" value="true"/>
  3612.         <echo message="project.needs.jnlp = ${project.needs.jnlp}" level="verbose"/>
  3613.     </target>
  3614.    
  3615.     <!-- set property javafx.disable.concurrent.runs=true to disable runs from temporary directory -->
  3616.     <target name="-check-concurrent-runs">
  3617.         <condition property="disable-concurrent-runs">
  3618.             <and>
  3619.                 <isset property="javafx.disable.concurrent.runs"/>
  3620.                 <equals arg1="${javafx.disable.concurrent.runs}" arg2="true" trim="true"/>
  3621.             </and>
  3622.         </condition>
  3623.         <condition property="temp.run.jar" value="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}">
  3624.             <isset property="disable-concurrent-runs"/>
  3625.         </condition>
  3626.         <condition property="temp.run.jnlp" value="${jfx.deployment.jnlp}">
  3627.             <isset property="disable-concurrent-runs"/>
  3628.         </condition>
  3629.         <condition property="temp.run.html" value="${jfx.deployment.html}">
  3630.             <isset property="disable-concurrent-runs"/>
  3631.         </condition>
  3632.     </target>
  3633.     <target name="-create-temp-run-dir" depends="-check-concurrent-runs" unless="disable-concurrent-runs">
  3634.         <echo message="Creating temp run dir" level="verbose"/>
  3635.         <tempfile property="temp.run.dir" destDir="${basedir}${file.separator}${dist.dir}${file.separator}" prefix="run"/>
  3636.         <echo message="temp.run.dir = ${temp.run.dir}" level="verbose"/>
  3637.         <copy todir="${temp.run.dir}" includeemptydirs="true" overwrite="true">
  3638.             <fileset dir="${basedir}${file.separator}${dist.dir}">
  3639.                 <exclude name="**${file.separator}bundles${file.separator}**"/>
  3640.                 <exclude name="**${file.separator}run*${file.separator}**"/>
  3641.             </fileset>
  3642.         </copy>        
  3643.         <property name="temp.run.jar" value="${temp.run.dir}${file.separator}${jfx.deployment.jar}"/>
  3644.         <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/>
  3645.         <property name="temp.run.jnlp" value="${temp.run.dir}${file.separator}${jfx.deployment.base}.jnlp"/>
  3646.         <property name="temp.run.html" value="${temp.run.dir}${file.separator}${jfx.deployment.base}.html"/>
  3647.     </target>
  3648.     <target name="-remove-temp-run-dir" if="temp.run.dir">
  3649.         <echo message="Removing temp run dir" level="verbose"/>
  3650.         <delete dir="${temp.run.dir}" quiet="true" failonerror="false"/>
  3651.     </target>
  3652.     <target depends="init,compile,jar,-create-temp-run-dir" description="Run JavaFX project standalone." name="jfx-project-run">
  3653.         <echo message="Executing ${temp.run.jar} using platform ${platform.java}"/>
  3654.         <property name="run.jvmargs" value=""/>
  3655.         <property name="run.jvmargs.ide" value=""/>        
  3656.         <java jar="${temp.run.jar}" dir="${work.dir}" fork="true" jvm="${platform.java}">
  3657.             <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
  3658.             <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
  3659.             <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
  3660.             <jvmarg line="${run.jvmargs}"/>
  3661.             <jvmarg line="${run.jvmargs.ide}"/>
  3662.             <classpath>
  3663.                 <path path="${temp.run.jar}:${javac.classpath}"/>
  3664.             </classpath>
  3665.             <arg line="${application.args}"/>
  3666.             <syspropertyset>
  3667.                 <propertyref prefix="run-sys-prop."/>
  3668.                 <mapper from="run-sys-prop.*" to="*" type="glob"/>
  3669.             </syspropertyset>
  3670.         </java>
  3671.         <antcall target="-remove-temp-run-dir"/>
  3672.     </target>
  3673.     <target depends="init,compile,jar,-create-temp-run-dir,-debug-start-debugger" description="Debug JavaFX project standalone." name="jfx-project-debug">
  3674.         <echo message="Executing ${temp.run.jar} using platform ${platform.java}"/>
  3675.         <property name="run.jvmargs" value=""/>
  3676.         <property name="run.jvmargs.ide" value=""/>        
  3677.         <java jar="${temp.run.jar}" dir="${work.dir}" fork="true" jvm="${platform.java}">
  3678.             <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
  3679.             <jvmarg line="${debug-args-line}"/>
  3680.             <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
  3681.             <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
  3682.             <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
  3683.             <jvmarg line="${run.jvmargs}"/>
  3684.             <jvmarg line="${run.jvmargs.ide}"/>
  3685.             <classpath>
  3686.                 <path path="${temp.run.jar}:${javac.classpath}"/>
  3687.             </classpath>
  3688.             <arg line="${application.args}"/>
  3689.             <syspropertyset>
  3690.                 <propertyref prefix="run-sys-prop."/>
  3691.                 <mapper from="run-sys-prop.*" to="*" type="glob"/>
  3692.             </syspropertyset>
  3693.         </java>
  3694.         <antcall target="-remove-temp-run-dir"/>
  3695.     </target>
  3696.  
  3697.  
  3698.     <!-- Running/Debugging/Profiling Standalone -->
  3699.  
  3700.     <target name="jfxsa-run" depends="-mark-project-state-running,-clean-if-config-changed,-check-jfx-runtime,-warn-of-preloader,jfx-project-run"/>
  3701.     <target name="jfxsa-run-noscript" depends="-set-fallback-no-javascript, jfxsa-run"/>
  3702.  
  3703.     <target name="jfxsa-debug" depends="-mark-project-state-debugging,-clean-if-config-changed,jar,-check-jfx-runtime,-warn-of-preloader,jfx-project-debug"/>
  3704.     <target name="jfxsa-debug-noscript" depends="-set-fallback-no-javascript, jfxsa-debug"/>
  3705.    
  3706.     <target name="jfxsa-profile" depends="-mark-project-state-profiling,-check-jfx-runtime,-warn-of-preloader,jfx-project-profile"/>
  3707.     <target name="jfxsa-profile-noscript" depends="-set-fallback-no-javascript, jfxsa-profile"/>
  3708.  
  3709.     <target name="-check-clean-if-config-changed" depends="-init-project">
  3710.         <deploy-defines/>
  3711.         <uptodate property="jfx.deployment.jar.newer.than.nbproject" targetfile="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}" >
  3712.             <srcfiles dir="${basedir}${file.separator}nbproject" includes="**${file.separator}*"/>
  3713.         </uptodate>
  3714.         <echo message="jfx.deployment.jar.newer.than.nbproject = ${jfx.deployment.jar.newer.than.nbproject}" level="verbose"/>
  3715.         <available file="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}" type="file" property="jfx.deployment.jar.exists"/>
  3716.         <condition property="request.clean.due.to.config.change">
  3717.             <and>
  3718.                 <isset property="jfx.deployment.jar.exists"/>
  3719.                 <not><isset property="jfx.deployment.jar.newer.than.nbproject"/></not>
  3720.             </and>
  3721.         </condition>
  3722.     </target>
  3723.     <target name="-clean-if-config-changed" depends="-check-clean-if-config-changed" if="request.clean.due.to.config.change">
  3724.         <echo message="Config change detected. Invoking clean." level="verbose"/>
  3725.         <antcall target="clean"/>
  3726.     </target>
  3727.    
  3728.     <target depends="-profile-check-1,-profile-pre72" description="Profile a project in the IDE." if="profiler.configured" name="jfx-project-profile" unless="profiler.info.jvmargs.agent">
  3729.         <startprofiler/>
  3730.         <antcall target="jfxsa-run"/>
  3731.     </target>
  3732.  
  3733.     <!-- Shared Debugging init -->
  3734.  
  3735.     <target name="-init-debug-args">
  3736.         <property name="version-output" value="java version &quot;${ant.java.version}"/>
  3737.         <condition property="have-jdk-older-than-1.4">
  3738.             <or>
  3739.                 <contains string="${version-output}" substring="java version &quot;1.0"/>
  3740.                 <contains string="${version-output}" substring="java version &quot;1.1"/>
  3741.                 <contains string="${version-output}" substring="java version &quot;1.2"/>
  3742.                 <contains string="${version-output}" substring="java version &quot;1.3"/>
  3743.             </or>
  3744.         </condition>
  3745.         <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
  3746.             <istrue value="${have-jdk-older-than-1.4}"/>
  3747.         </condition>
  3748.         <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
  3749.             <os family="windows"/>
  3750.         </condition>
  3751.         <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
  3752.             <isset property="debug.transport"/>
  3753.         </condition>
  3754.     </target>
  3755.  
  3756.  
  3757.     <!-- Running/Debugging/Profiling as WebStart -->
  3758.  
  3759.     <target name="-check-jnlp-file-fx" depends="-swing-api-check" unless="fx-in-swing-app-workaround">
  3760.         <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/>
  3761.         <property name="jfx.deployment.jnlp" location="${jfx.deployment.dir}${file.separator}${jfx.deployment.base}.jnlp"/>
  3762.     </target>
  3763.     <target name="-check-jnlp-file-swing" depends="-swing-api-check" if="fx-in-swing-app-workaround">
  3764.         <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/>
  3765.         <property name="jfx.deployment.jnlp" location="${jfx.deployment.dir}${file.separator}${jfx.deployment.base}_application.jnlp"/>
  3766.     </target>
  3767.     <target name="-check-jnlp-file" depends="-check-jnlp-file-fx,-check-jnlp-file-swing">
  3768.         <condition property="jnlp-file-exists">
  3769.             <available file="${jfx.deployment.jnlp}"/>
  3770.         </condition>
  3771.         <condition property="jnlp-file-exists+netbeans.home">
  3772.             <and>
  3773.                 <isset property="jnlp-file-exists"/>
  3774.                 <isset property="netbeans.home"/>
  3775.             </and>
  3776.         </condition>
  3777.     </target>
  3778.  
  3779.     <target name="-resolve-jnlp-file" depends="-check-jnlp-file" unless="jnlp-file-exists">
  3780.         <antcall target="jfx-deployment"/>
  3781.         <antcall target="-check-jnlp-file"/>
  3782.     </target>
  3783.  
  3784.     <!-- set property javafx.enable.concurrent.external.runs=true to enable multiple runs of the same WebStart or Run-in-Browser project -->
  3785.     <target name="-check-concurrent-jnlp-runs" depends="-resolve-jnlp-file">
  3786.         <condition property="disable-concurrent-runs">
  3787.             <not>
  3788.                 <and>
  3789.                     <isset property="javafx.enable.concurrent.external.runs"/>
  3790.                     <equals arg1="${javafx.enable.concurrent.external.runs}" arg2="true" trim="true"/>
  3791.                 </and>
  3792.             </not>
  3793.         </condition>
  3794.         <condition property="temp.run.jnlp" value="${jfx.deployment.jnlp}">
  3795.             <isset property="disable-concurrent-runs"/>
  3796.         </condition>
  3797.     </target>
  3798.     <target name="-warn-concurrent-jnlp-runs" unless="disable-concurrent-runs">
  3799.         <echo message="Note: Concurrent Run as WebStart enabled.${line.separator}Temporary directory ${temp.run.dir}${line.separator}will remain unused when WebStart execution has finished. Use project Clean to delete unused directories."/>
  3800.     </target>
  3801.  
  3802.     <target name="jfxws-run" if="jnlp-file-exists" depends="-mark-project-state-running,-clean-if-config-changed,-mark-project-needs-jnlp,-check-jdk-7u4or5-mac,jar,
  3803.            -check-jfx-webstart,-resolve-jnlp-file,-check-jfx-runtime,-check-concurrent-jnlp-runs,-create-temp-run-dir,-warn-insufficient-signing"
  3804.            description="Start JavaFX javaws execution">
  3805.         <echo message="Executing ${temp.run.jnlp} using ${active.webstart.executable}"/>
  3806.         <exec executable="${active.webstart.executable}">
  3807.             <arg file="${temp.run.jnlp}"/>
  3808.         </exec>
  3809.         <antcall target="-warn-concurrent-jnlp-runs"/>
  3810.     </target>
  3811.    
  3812.     <target name="jfxws-debug" if="jnlp-file-exists+netbeans.home" depends="-mark-project-state-debugging,-clean-if-config-changed,-mark-project-needs-jnlp,
  3813.            -check-jdk-7u4or5-mac,jar,-check-jfx-webstart,-resolve-jnlp-file,-check-jfx-runtime,-warn-insufficient-signing,
  3814.            -debug-start-debugger,-debug-javaws-debuggee" description="Debug JavaFX javaws project in IDE"/>
  3815.        
  3816.     <target name="-debug-javaws-debuggee" depends="-init-debug-args">
  3817.         <echo message="Executing ${jfx.deployment.jnlp} in debug mode using ${active.webstart.executable}"/>
  3818.         <exec executable="${active.webstart.executable}">
  3819.             <env key="JAVAWS_VM_ARGS" value="${debug-args-line} -Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
  3820.             <arg value="-wait"/>
  3821.             <arg file="${jfx.deployment.jnlp}"/>
  3822.         </exec>
  3823.     </target>
  3824.    
  3825.     <target name="-profile-check-1">
  3826.         <property name="run.jvmargs.ide" value=""/>        
  3827.         <condition property="profiler.configured">
  3828.             <or>
  3829.                 <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
  3830.                 <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
  3831.             </or>
  3832.         </condition>
  3833.     </target>
  3834.    
  3835.     <target if="jnlp-file-exists+netbeans.home" name="-profile-check-jnlp">
  3836.         <antcall target="-profile-check-1"/>
  3837.     </target>
  3838.    
  3839.     <target name="-do-jfxws-profile" depends="-mark-project-state-profiling,-mark-project-needs-jnlp,
  3840.            -check-jdk-7u4or5-mac,jar,-check-jfx-webstart,-resolve-jnlp-file,-check-jfx-runtime,-warn-insufficient-signing">
  3841.         <echo message="Executing ${jfx.deployment.jnlp} in profile mode using ${active.webstart.executable}"/>
  3842.         <property name="run.jvmargs.ide" value=""/>        
  3843.         <exec executable="${active.webstart.executable}">
  3844.             <env key="JAVAWS_VM_ARGS" value="${run.jvmargs.ide}"/>
  3845.             <arg value="-wait"/>
  3846.             <arg file="${jfx.deployment.jnlp}"/>
  3847.         </exec>
  3848.     </target>
  3849.    
  3850.     <target name="jfxws-profile" if="profiler.configured"
  3851.        depends="-profile-check-1"
  3852.        description="Profile JavaFX javaws project in IDE">
  3853.         <startprofiler/>
  3854.         <antcall target="-do-jfxws-profile"/>
  3855.     </target>
  3856.    
  3857.     <target name="jfxws-run-noscript" depends="-set-fallback-no-javascript, jfxws-run"/>
  3858.  
  3859.     <target name="jfxws-debug-noscript" depends="-set-fallback-no-javascript, jfxws-debug"/>
  3860.  
  3861.     <target name="jfxws-profile-noscript" depends="-set-fallback-no-javascript, jfxws-profile"/>
  3862.  
  3863.  
  3864.     <!-- Running/Debugging/Profiling in Browser -->
  3865.  
  3866.     <target name="-check-selected-browser-path" depends="-check-default-run-config">
  3867.         <condition property="javafx.run.inbrowser.undefined">
  3868.             <or>
  3869.                 <and>
  3870.                     <isset property="javafx.run.inbrowser"/>
  3871.                     <equals arg1="${javafx.run.inbrowser}" arg2="undefined"/>
  3872.                 </and>
  3873.                 <and>
  3874.                     <isset property="javafx.run.inbrowser.path"/>
  3875.                     <equals arg1="${javafx.run.inbrowser.path}" arg2="undefined"/>
  3876.                 </and>
  3877.             </or>
  3878.         </condition>
  3879.         <condition property="javafx.run.inbrowser.path-exists">
  3880.             <and>
  3881.                 <isset property="javafx.run.inbrowser.path"/>
  3882.                 <available file="${javafx.run.inbrowser.path}"/>
  3883.             </and>
  3884.         </condition>
  3885.         <fail message="Error:${line.separator}Browser selection not recognizable from ${config} run configuration.${line.separator}Please go to Project Properties dialog, category Run, to select a valid browser." unless="javafx.run.inbrowser.path"/>
  3886.         <fail message="Error:${line.separator}No browser defined in ${config} run configuration.${line.separator}Please verify in Tools->Options dialog that NetBeans recognizes a valid browser, then go to Project Properties dialog, category Run, to select a valid browser." if="javafx.run.inbrowser.undefined"/>
  3887.         <fail message="Error:${line.separator}Browser ${javafx.run.inbrowser.path} referred from ${config} run configuration can not be found.${line.separator}(This can happen, e.g, when the JavaFX Project is transferred to another system.)${line.separator}Please go to Project Properties dialog, category Run, to select a valid browser." unless="javafx.run.inbrowser.path-exists"/>
  3888.     </target>
  3889.  
  3890.     <target name="-substitute-template-processed-html-file" depends="-check-project" if="html-template-available">
  3891.         <deploy-process-template/>
  3892.     </target>
  3893.     <target name="-check-template-processed-html-file" depends="-substitute-template-processed-html-file">
  3894.         <condition property="html-file-exists">
  3895.             <and>
  3896.                 <isset property="html-template-available"/>
  3897.                 <available file="${javafx.run.htmltemplate.processed}"/>
  3898.             </and>
  3899.         </condition>
  3900.     </target>
  3901.    
  3902.     <target name="-set-template-processed-html-file" depends="-check-template-processed-html-file" if="html-file-exists">
  3903.         <property name="jfx.deployment.html" location="${javafx.run.htmltemplate.processed}"/>
  3904.     </target>
  3905.    
  3906.     <target name="-set-html-file" depends="-set-template-processed-html-file" unless="html-file-exists">
  3907.         <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/>
  3908.         <property name="jfx.deployment.html" location="${jfx.deployment.dir}${file.separator}${jfx.deployment.base}.html"/>
  3909.         <condition property="html-file-exists">
  3910.             <available file="${jfx.deployment.html}"/>
  3911.         </condition>
  3912.         <condition property="html-file-exists+netbeans.home">
  3913.             <and>
  3914.                 <isset property="html-file-exists"/>
  3915.                 <isset property="netbeans.home"/>
  3916.             </and>
  3917.         </condition>
  3918.     </target>
  3919.  
  3920.     <!-- set property javafx.enable.concurrent.external.runs=true to enable multiple runs of the same WebStart or Run-in-Browser project -->
  3921.     <target name="-check-concurrent-html-runs" depends="-set-html-file">
  3922.         <condition property="disable-concurrent-runs">
  3923.             <or>
  3924.                 <not>
  3925.                     <and>
  3926.                         <isset property="javafx.enable.concurrent.external.runs"/>
  3927.                         <equals arg1="${javafx.enable.concurrent.external.runs}" arg2="true" trim="true"/>
  3928.                     </and>
  3929.                 </not>
  3930.                 <and>
  3931.                     <isset property="html-template-available"/>
  3932.                     <available file="${javafx.run.htmltemplate.processed}"/>
  3933.                 </and>
  3934.             </or>
  3935.         </condition>
  3936.         <condition property="temp.run.html" value="${jfx.deployment.html}">
  3937.             <isset property="disable-concurrent-runs"/>
  3938.         </condition>
  3939.     </target>
  3940.     <target name="-warn-concurrent-html-runs" unless="disable-concurrent-runs">
  3941.         <echo message="Note: Concurrent Run in Browser enabled.${line.separator}Temporary directory ${temp.run.dir}${line.separator}will remain unused when execution in browser has finished. Use project Clean to delete unused directories."/>
  3942.     </target>
  3943.  
  3944.     <target name="jfxbe-run" if="html-file-exists" depends="-mark-project-state-running,-clean-if-config-changed,-mark-project-needs-jnlp,-check-jdk-7u4or5-mac,jar,
  3945.            -check-selected-browser-path,-set-html-file,-check-jfx-runtime,-check-concurrent-html-runs,-create-temp-run-dir,-warn-insufficient-signing"
  3946.            description="Start JavaFX execution in browser">
  3947.         <echo message="Executing ${temp.run.html} using ${javafx.run.inbrowser}"/>
  3948.         <echo message="(${javafx.run.inbrowser.path})"/>
  3949.         <property name="javafx.run.inbrowser.arguments" value=""/>
  3950.         <exec executable="${javafx.run.inbrowser.path}">
  3951.             <arg line="${javafx.run.inbrowser.arguments}"/>
  3952.             <arg file="${temp.run.html}"/>
  3953.         </exec>
  3954.         <antcall target="-warn-concurrent-html-runs"/>
  3955.     </target>
  3956.    
  3957.     <target name="jfxbe-debug" if="html-file-exists+netbeans.home" depends="-mark-project-state-debugging-in-browser,-init-debug-args,
  3958.            clean,-debug-start-debugger,-mark-project-needs-jnlp,-check-jdk-7u4or5-mac,jar,
  3959.            -check-selected-browser-path,-set-html-file,-check-jfx-runtime,-warn-insufficient-signing,
  3960.            -debug-jfxbe-debuggee" description="Debug JavaFX project in browser">
  3961.         <!-- after the session clean up the jnlp containing debug settings -->
  3962.         <antcall target="clean"/>
  3963.     </target>
  3964.        
  3965.     <target name="-debug-jfxbe-debuggee" depends="-init-debug-args">
  3966.         <echo message="Executing ${jfx.deployment.html} in debug mode using ${javafx.run.inbrowser}"/>
  3967.         <echo message="(${javafx.run.inbrowser.path})"/>
  3968.         <property name="javafx.run.inbrowser.arguments" value=""/>
  3969.         <exec executable="${javafx.run.inbrowser.path}">
  3970.             <arg line="${javafx.run.inbrowser.arguments}"/>
  3971.             <env key="_JPI_VM_OPTIONS" value="-agentlib:jdwp=transport=${debug-transport},address=${jpda.address}"/>
  3972.             <arg file="${jfx.deployment.html}"/>
  3973.         </exec>
  3974.     </target>
  3975.  
  3976.     <target if="html-file-exists+netbeans.home" name="-profile-check-html">
  3977.         <antcall target="-profile-check-1"/>
  3978.     </target>
  3979.  
  3980.     <target name="-do-jfxbe-profile" depends="-mark-project-state-profiling,-mark-project-needs-jnlp,
  3981.            -check-jdk-7u4or5-mac,jar,-check-selected-browser-path,-set-html-file,-check-jfx-runtime,-warn-insufficient-signing">
  3982.         <echo message="Executing ${jfx.deployment.html} in profile mode using ${javafx.run.inbrowser}"/>
  3983.         <echo message="(${javafx.run.inbrowser.path})"/>
  3984.         <property name="run.jvmargs.ide" value=""/>
  3985.         <property name="javafx.run.inbrowser.arguments" value=""/>
  3986.         <exec executable="${javafx.run.inbrowser.path}">
  3987.             <arg line="${javafx.run.inbrowser.arguments}"/>
  3988.             <env key="_JPI_VM_OPTIONS" value="${run.jvmargs.ide}"/>
  3989.             <arg file="${jfx.deployment.html}"/>
  3990.         </exec>
  3991.     </target>
  3992.  
  3993.     <target name="jfxbe-profile" if="profiler.configured"
  3994.        depends="-profile-check-html"
  3995.        description="Profile JavaFX project in browser">
  3996.         <startprofiler/>
  3997.         <antcall target="-do-jfxbe-profile"/>
  3998.     </target>
  3999.  
  4000.     <target name="jfxbe-run-noscript" depends="-set-fallback-no-javascript, jfxbe-run"/>
  4001.  
  4002.     <target name="jfxbe-debug-noscript" depends="-set-fallback-no-javascript, jfxbe-debug"/>
  4003.  
  4004.     <target name="jfxbe-profile-noscript" depends="-set-fallback-no-javascript, jfxbe-profile"/>
  4005.  
  4006.  
  4007. </project>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement