- add nbi installer project for SDK to be able to build releases on the server

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8767 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
nor..om 13 years ago
parent c76ae508ff
commit 5a259ec16f
  1. 19
      build.xml
  2. 26
      sdk/build.xml
  3. 258
      sdk/nbi/.common/common.properties
  4. 834
      sdk/nbi/.common/common.xml
  5. 70
      sdk/nbi/.common/engine.properties
  6. 324
      sdk/nbi/.common/engine.xml
  7. 69
      sdk/nbi/.common/group.properties
  8. 283
      sdk/nbi/.common/group.xml
  9. 111
      sdk/nbi/.common/product.properties
  10. 746
      sdk/nbi/.common/product.xml
  11. BIN
      sdk/nbi/antlib/nbi-ant-tasks.jar
  12. BIN
      sdk/nbi/antlib/nbi-engine.jar
  13. BIN
      sdk/nbi/antlib/nbi-registries-management.jar
  14. 49
      sdk/nbi/stub/build.properties
  15. 203
      sdk/nbi/stub/build.xml
  16. 74
      sdk/nbi/stub/ext/components/products/helloworld/build.xml
  17. 41
      sdk/nbi/stub/ext/components/products/helloworld/data/Bundle.properties
  18. BIN
      sdk/nbi/stub/ext/components/products/helloworld/data/icon.png
  19. BIN
      sdk/nbi/stub/ext/components/products/helloworld/data/icon48.png
  20. 1
      sdk/nbi/stub/ext/components/products/helloworld/manifest.mf
  21. 631
      sdk/nbi/stub/ext/components/products/helloworld/nbproject/build-impl.xml
  22. 8
      sdk/nbi/stub/ext/components/products/helloworld/nbproject/genfiles.properties
  23. 4
      sdk/nbi/stub/ext/components/products/helloworld/nbproject/private/private.xml
  24. 62
      sdk/nbi/stub/ext/components/products/helloworld/nbproject/project.properties
  25. 26
      sdk/nbi/stub/ext/components/products/helloworld/nbproject/project.xml
  26. 22
      sdk/nbi/stub/ext/components/products/helloworld/src/org/mycompany/Bundle.properties
  27. 451
      sdk/nbi/stub/ext/components/products/helloworld/src/org/mycompany/ConfigurationLogic.java
  28. 43
      sdk/nbi/stub/ext/components/products/helloworld/src/org/mycompany/wizard.xml
  29. 51
      sdk/nbi/stub/ext/components/products/helloworld/src/org/mycompany/wizard/panels/Bundle.properties
  30. 184
      sdk/nbi/stub/ext/components/products/helloworld/src/org/mycompany/wizard/panels/HelloWorldPanel.java
  31. 41
      sdk/nbi/stub/ext/engine/build.properties
  32. 73
      sdk/nbi/stub/ext/engine/build.xml
  33. 2
      sdk/nbi/stub/ext/engine/manifest.mf
  34. 646
      sdk/nbi/stub/ext/engine/nbproject/build-impl.xml
  35. 8
      sdk/nbi/stub/ext/engine/nbproject/genfiles.properties
  36. 4
      sdk/nbi/stub/ext/engine/nbproject/private/private.xml
  37. 102
      sdk/nbi/stub/ext/engine/nbproject/project.properties
  38. 64
      sdk/nbi/stub/ext/engine/nbproject/project.xml
  39. 89
      sdk/nbi/stub/ext/engine/src/data/engine.properties
  40. 71
      sdk/nbi/stub/ext/engine/src/native/launcher/unix/i18n/launcher.properties
  41. 74
      sdk/nbi/stub/ext/engine/src/native/launcher/windows/i18n/launcher.properties
  42. 43
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/utils/applications/Bundle.properties
  43. 191
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/utils/applications/NetBeansRCPUtils.java
  44. 3
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/actions/Bundle.properties
  45. 112
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/actions/InitializeAction.java
  46. 94
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/panels/Bundle.properties
  47. 457
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/panels/PostInstallSummaryPanel.java
  48. 620
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/panels/PreInstallSummaryPanel.java
  49. 333
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/panels/WelcomePanel.java
  50. BIN
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/panels/resources/welcome-left-bottom.png
  51. BIN
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/panels/resources/welcome-left-top.png
  52. 43
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/sequences/Bundle.properties
  53. 154
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/components/sequences/MainSequence.java
  54. 52
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/wizard-components.xml
  55. BIN
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/wizard-description-background-left.png
  56. BIN
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/wizard-description-background-right.png
  57. BIN
      sdk/nbi/stub/ext/engine/src/org/mycompany/installer/wizard/wizard-icon.png
  58. 77
      sdk/nbi/stub/ext/infra/build/engine/build.properties
  59. 77
      sdk/nbi/stub/ext/infra/build/engine/build.xml
  60. 159
      sdk/nbi/stub/ext/infra/build/products/helloworld/build.properties
  61. 98
      sdk/nbi/stub/ext/infra/build/products/helloworld/build.xml
  62. 198
      sdk/nbi/stub/template.xml
  63. 16
      sdk/nbi/stub/tmpl.properties

@ -111,4 +111,23 @@
<ant dir="sdk" target="hudson-stable"/>
</target>
<target name="hudson-release" depends="-check-platform, -update-sdk-platform-config">
<exec executable="svn" dir="engine">
<arg value="cleanup" />
</exec>
<exec executable="svn" dir="engine">
<arg value="revert" />
</exec>
<exec executable="svn" dir="engine">
<arg value="cleanup" />
</exec>
<exec executable="svn" dir="engine">
<arg value="update" />
</exec>
<ant dir="engine" target="dist"/>
<ant dir="engine" target="build-bullet-natives"/>
<ant dir="engine" target="update-sdk"/>
<ant dir="sdk" target="hudson-release"/>
</target>
</project>

@ -22,6 +22,27 @@
<ant antfile="build.xml" target="update-help-sets" inheritall="false" inheritrefs="false" dir="jme3-core/"/>
</target>
<target name="build-installers">
<property file="nbproject/project.properties"/>
<ant antfile="template.xml" dir="nbi/stub">
<property name="suite.location" value="${basedir}"/>
<property name="suite.nbi.product.uid" value="${app.name}"/>
<property name="suite.nbi.product.version" value="${plugins.version}.0.0"/>
<property name="nbi.stub.location" value="${basedir}/nbi/stub"/>
<property name="nbi.stub.common.location" value="${basedir}/nbi/.common"/>
<property name="nbi.ant.tasks.jar" value="${basedir}/nbi/antlib/nbi-ant-tasks.jar"/>
<property name="nbi.registries.management.jar" value="${basedir}/nbi/antlib/nbi-registries-management.jar"/>
<property name="nbi.engine.jar" value="${basedir}/nbi/antlib/nbi-engine.jar"/>
<property name="nbi.license.file" value="${basedir}/jme-license.txt"/>
<property name="generate.installer.for.platforms" value="windows linux macosx"/>
<property name="generator-jdk-location-forward-slashes" value="${java.home}"/>
<property name="generated-installers-location-forward-slashes" value="${basedir}/build/installer"/>
<property name="pack200.enabled" value="true"/>
<property name="nbi.icon.file" value="${basedir}/jmonkeyplatform.png"/>
<property name="nbi.dock.icon.file" value="${basedir}/jmonkeyplatform.icns"/>
</ant>
</target>
<target name="-create-netbeans-config">
<!--replaces default values in jmonkeyplatform.conf file with run.args.extra from project.properties-->
<mkdir dir="build/launcher/etc"/>
@ -106,6 +127,9 @@
<target name="hudson-stable" depends="suite.clean, -revert-svn-changes, set-impl-version, suite.nbms, unset-spec-version">
</target>
<target name="hudson-release" depends="suite.clean, set-spec-version, build-installers, unset-spec-version">
</target>
<target name="set-spec-version">
<property file="nbproject/project.properties"/>
<foreach target="-do-spec-version" list="${modules}" delimiter=":" param="module_dir" inheritall="true">
@ -318,5 +342,5 @@ for coding and for managing and creating game assets.
</description>
</deb>
</target>
</project>

@ -0,0 +1,258 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
#####################################################################################
# Initialization. Properties that are used during build script initialization.
# location of the custom tasks' sources and the destination directory for their
# build
custom.tasks.src=${common.dir}/../.ant-lib/src
custom.tasks.cls=${basedir}/.ant-lib
#####################################################################################
# Check-out. Properties that are used during check-out.
# whether to check out sources, or copy them from the location specified in
# ${sources.dir}; 'true'/'false'
checkout.sources=true
# coordinates of the project's sources within the cvs repository
# * ${cvs.root} - obvious
# * ${cvs.branch} - the branch from which the sources should be checked out; if
# this property is empty, then the sources will be checked out from trunk
# * ${cvs.timestamp} - the timestamp for which the sources should be checked out; if
# this property is empty, then the latest sources will be checked out
# * ${cvs.module} - the module that should be checked out; at this point the
# build framework is not compatible with modules which alias several other
# modules
cvs.root=:pserver:anoncvs@netbeans.org:/cvs
cvs.branch=
cvs.module=nbi
cvs.timestamp=
# coordinates of the project's sources' localized files within the cvs
# repository
# * ${translatedfiles.module} - name of the cvs module with the localized files
# * ${translatedfiles.path} - path to the localized files for the project
# within the cvs module
translatedfiles.module=translatedfiles
translatedfiles.path=src/${cvs.module}/${cvs.path}
# sources parameters; a search-and-replace will be run over the sources after
# check-out, replacing [token] => [value]; regular expressions are not allowed
# * ${sources.params.length} - total number of the parameters
# * indices should start with 1
# * parameters are not i18n compliant
sources.params.length=0
#sources.params.1.token=
#sources.params.1.value=
# several simple shorthands for various directories
# * ${cvs.module.dir} - path to the root of the cvs module
# * ${cvs.dir} - path to the current project's sources root
# * ${translatedfiles.dir} - path to the localized files for the project
cvs.module.dir=${work.dir}/${cvs.module}
cvs.dir=${cvs.module.dir}/${cvs.path}
translatedfiles.dir=${work.dir}/${translatedfiles.module}/${translatedfiles.path}
#####################################################################################
# NB Projects. Properties related to cleaning/building netbeans projects.
# path to the netbeans project that should be built; relative to the
# ${cvs.dir}
nbproject.path=.
# names of targets in component's (or engine's) build script that will be
# called as part of the build process
# * ${nb.target.clean} - will be called when cleaning the netbeans project
# * ${nb.target.build} - will be called when building the netbeans project
nb.target.clean=clean
nb.target.build=jar
# additional properties which will be passed to the netbeans project build
# script
# * ${nb.platform.home} - location of the jdk codenamed "JDK 1.5", this jdk
# is expected to be used by all netbeans projects
# * ${nb.ignore.native} - tells the netbeans project's build script to skip
# building native components, if it is able to do so - these will be built
# as part of the project's global build script
# * ${nb.no.dependencies} - tells the netbeans project's build script to skip
# building its dependencies, the dependencies are expected to be built by the
# project's global build script
# * ${nb.dont.build.custom.tasks} - tells the netbeans project's build script
# to skip building custom tasks for it, as they will already be built by the
# global script
# * ${nb.custom.tasks.cls} - points the netbeans project's build script to the
# location of the built custom tasks
nb.platform.home=-Dplatforms.JDK_1.5.home=${java.home}/..
nb.platform.home.macos=-Dplatforms.JDK_1.5.home=${java.home}
nb.ignore.native=-Dignore.native=true
nb.no.dependencies=-Dno.dependencies=true
nb.dont.build.custom.tasks=-Ddont.build.custom.tasks=true
nb.custom.tasks.cls=-Dcustom.tasks.cls=${custom.tasks.cls}
# default path to the distributives directory of the netbeans project; relative
# to ${nbproject.path}
nb.dist.path=dist
# path to the classes directory of the netbeans project; relative to
# ${nbproject.path}
nb.classes.dir=build/classes
# path to the manifest file of the netbeans project; relative to the
# ${nbproject.path}
nbproject.manifest=manifest.mf
# path to the dist directory that the nbproject should use; since we do not use
# the netbeans' packaging mechanism, we have the flexibility to specify any
# distributives directory we want
nbproject.dist.dir=${cvs.dir}/${nbproject.path}/${nb.dist.path}
#####################################################################################
# Native. Properties related to cleaning/building native components.
# path to the directory with the sources for the native components; relative
# to the root of the project's sources
native.path=${cvs.module}/${cvs.path}/native
# path to the directory with the localized files for the native components;
# relative to the root of the project's localized files directory
translatedfiles.native.path=${translatedfiles.module}/${translatedfiles.path}/native
# list of platforms for which the native components should be built
# * the list should be space-separated
native.platforms=windows linux solaris-x86 solaris-sparc macosx
# directory on the remote machine where the build script should operate
# * this is the default value, the actual value is expected to be passed in
# through the environment properties
remote.work.dir=~/.nbi-build
# ssh properties: executable name, set of arguments and the command.
# * ${remote.host}, ${remote.port} and ${remote.user} are environment specific
# and are expected to be passed in through the environment properties
ssh.executable=ssh
ssh.arguments=-l ${remote.user} -p ${remote.port} ${remote.host}
ssh.command.clean=rm -rf ${remote.work.dir};
ssh.command.build=rm -rf ${remote.work.dir}; \
mkdir ${remote.work.dir}; \
cd ${remote.work.dir}; \
if [ "${cvs.branch}" = "" ]; then \
if [ "${cvs.timestamp}" = "" ]; then \
cvs -d ${cvs.root} co -P ${native.path}; \
cvs -d ${cvs.root} co -P ${translatedfiles.native.path}; \
else\
cvs -D ${cvs.timestamp} -d ${cvs.root} co -P ${native.path}; \
cvs -D ${cvs.timestamp} -d ${cvs.root} co -P ${translatedfiles.native.path}; \
fi;\
else \
if [ "${cvs.timestamp}" = "" ]; then \
cvs -d ${cvs.root} co -r ${cvs.branch} -P ${native.path}; \
cvs -d ${cvs.root} co -r ${cvs.branch} -P ${translatedfiles.native.path}; \
else \
cvs -D ${cvs.timestamp} -d ${cvs.root} co -r ${cvs.branch} -P ${native.path}; \
cvs -D ${cvs.timestamp} -d ${cvs.root} co -r ${cvs.branch} -P ${translatedfiles.native.path}; \
fi;\
fi; \
cp -r ${translatedfiles.native.path} ${native.path}; \
cd ${native.path}/${platform}; \
make
# scp properties: executable name, set of arguments, remote directory, local
# directory
# * ${remote.host}, ${remote.port} and ${remote.user} are platform and
# environment specific and are expected to be passed in through the
# environment properties
# * name of the file to copy is platform specific and is defined elsewhere,
# most likely in the base build script for a project type (engine, product,
# etc.)
# * ${platform} will be defined at runtime, as these commands will be executed
# in loop over the list of platforms
scp.executable=scp
scp.arguments=-P ${remote.port}
scp.remote.dir=${remote.user}@${remote.host}:${remote.work.dir}/${native.path}/${platform}/${nb.dist.path}
scp.local.dir=${work.dir}/${native.path}/${platform}/${nb.dist.path}
# names of the native distributive files for various platforms
native.dist.file.windows=windows.dll
native.dist.file.linux=linux.so
native.dist.file.solaris-x86=solaris-x86.so
native.dist.file.solaris-sparc=solaris-sparc.so
native.dist.file.macosx=macosx.dylib
#####################################################################################
# Release. Properties controlling the 'release' process
release.to.server=true
#####################################################################################
# Miscellaneous. Properties that are used elsewhere.
# these properties control the environment for the jarsigner process
# * ${jarsigner.enabled} - whether to sign jars
# * ${jarsigner.xmx} - max heap size for the jarsigner process
# * ${jarsigner.executable} - path to jarsigner executable (optional)
jarsigner.enabled=true
jarsigner.xmx=1024m
# these properties control the environment for the pack200 and unpack200
# processes
# * ${pack200.enabled} - whether to repackage jars (can be specified in each product)
# * ${use.internal.packer} - whether to use the same JVM for packing jars (can be specified in each product)
# it is risky because of memory leaks and possible OOMs
# * ${use.internal.unpacker} - whether to use the same JVM for unpacking jars (can be specified in each product)
# it is risky because of memory leaks and possible OOMs
# * ${pack200.xmx} - -Xmx jvm argument value
# * ${pack200.perm.size} - -XX:PermSize jvm argument value
# * ${pack200.max.perm.size} - -XX:MaxPermSize jvm argument value
# * ${pack200.executable} - path to pack200 executable (optional)
# * ${unpack200.executable} - path to unpack200 executable (optional)
# * ${verification.java.executable} - path to java executable that would be used for verification of packaged jars (optional)
pack200.xmx=768m
pack200.perm.size=32m
pack200.max.perm.size=512m
# these properties control the environment for the external processes running during the build
# * ${process.max.execution.time} - maximum time (in milliseconds) for running the process
# if set to zero then processes would run without timeout
# default value is 600000=10min (defined in nbi/infra/build/.ant-lib/src/org/netbeans/installer/infra/build/ant/utils/Utils.java)
# these properties control native executable paths
# * ${tar.executable} - path to native tar/gtar/gnutar executable
# * ${ls.executable} - path to native ls executable
# * ${unzip.executable} - path to native unzip executable

@ -0,0 +1,834 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<!--
This is a target library which is intended to be used by other build scripts.
It contains the standard, fucntionality, common across all scripts which
allows to perform some basic initialization, check out sources from a cvs
repository and, finally, clean or build a netbeans project and jni libraries.
None ot the targets defined in this script are intended to be called
directly, instead it is expected that targets in build dcripts which import
this one will declare dependecies on this script's targets.
@author Kirill Sorokin
-->
<project name="common" default="usage" basedir=".">
<!-- ============================================================================
Aggregates
============================================================================= -->
<!--
Cleans the project.
This is an aggregation target, which does not contain any functionality,
but defines a dependency on the 'clean' target.
For more details, please consult the documentation for this target.
-->
<target name="clean-all" depends="clean"/>
<!--
Cleans and builds the project.
This is an aggregation target, which does not contain any functionality,
but defines dependencies on the 'clean-all', 'checkout' and 'build'
targets. For more details, please consult the documentation for these
targets.
-->
<target name="build-all" depends="clean-all,checkout,build"/>
<!--
Cleans, builds and releases the project.
This is an aggregation target, which does not contain any functionality,
but defines dependencies on the 'clean', 'checkout', 'build' and
'release' targets. For more details, please consult the documentation
for these targets.
-->
<target name="release-all" depends="build-all,release"/>
<!-- ============================================================================
Initialization
============================================================================= -->
<!--
Initializes the projects's build script.
This is an aggregation target, it does not contain any functionality, but
defines dependencies on '-pre-init', '-init' and '-post-init'
targets. The '-pre-init' and '-post-init' targets are empty hooks,
which allow derivative scripts to inject custom logic which will be
executed prior to the initialization process or after it. The '-init'
target contains the code which actually initializes the script and should
be overriden in the derivative scripts.
-->
<target name="init" depends="-pre-init,-init,-post-init"/>
<!--
Performs the default initialization.
This target defines a set of custom ant tasks which are used throughout
the script and may be useful for the derivative scripts.
It also sets some properties which control the flow of the build process,
such as whether to check-out sources from trunk or branch, or to copy
them from a given location; whether to build the native components or
not, whether to build the netbeans project or not.
Finally this target initializes the local working directory and the
distributives directory and sets a special property which will prevent it
from repeated execution.
This target is not intended to be called directly.
-->
<target name=".init" depends=".build-custom-tasks" unless="skip.initialization">
<!-- define custom ant tasks -->
<taskdef
name="for-each"
classname="org.netbeans.installer.infra.build.ant.ForEach"
classpath="${custom.tasks.cls}"/>
<taskdef
name="set"
classname="org.netbeans.installer.infra.build.ant.SetProperty"
classpath="${custom.tasks.cls}"/>
<taskdef
name="if"
classname="org.netbeans.installer.infra.build.ant.If"
classpath="${custom.tasks.cls}"/>
<!-- decide whether to checkout sources from trunk -->
<condition property="do.checkout">
<and>
<equals arg1="${checkout.sources}" arg2="true"/>
</and>
</condition>
<!-- decide whether to copy sources from a given location -->
<condition property="do.checkout.copy">
<not>
<equals arg1="${checkout.sources}" arg2="true"/>
</not>
</condition>
<!-- decide whether to build native libraries/launchers or not -->
<condition property="do.build.native">
<equals arg1="${build.native}" arg2="true"/>
</condition>
<!-- decide whether there is need to build a netbeans project -->
<condition property="do.build.nbproject">
<equals arg1="${build.nbproject}" arg2="true"/>
</condition>
<!-- deduce the path to the ant executable -->
<condition property="ant.executable" value="${ant.home}/bin/ant.bat">
<os family="windows"/>
</condition>
<condition property="ant.executable" value="${ant.home}/bin/ant">
<not>
<os family="windows"/>
</not>
</condition>
<!-- initialize the local working directory -->
<mkdir dir="${work.dir}"/>
<!-- initialize the local distributive directory -->
<mkdir dir="${dist.dir}"/>
<!-- set the marker property which will prevent the script running the
initialization procedure again, if history is lost, e.g. as a
result of an antcall -->
<property name="skip.initialization" value="true"/>
</target>
<!--
Builds custom ant tasks.
This target deletes the directory which is the target for the custom ant
tasks compilation, recreates it and runs javac on the custom tasks'
sources.
It also sets a special property which will prevent it from repeated
execution.
This target is not intended to be called directly.
-->
<target name=".build-custom-tasks" unless="dont.build.custom.tasks">
<!-- quick clean-up and initialization -->
<delete dir="${custom.tasks.cls}"/>
<mkdir dir="${custom.tasks.cls}"/>
<!-- compile -->
<javac
srcdir="${custom.tasks.src}"
destdir="${custom.tasks.cls}"
debug="true"/>
<property name="dont.build.custom.tasks" value="true"/>
</target>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed prior to the script's initialization.
This target is not intended to be called directly.
-->
<target name="-pre-init"/>
<!--
An empty hook.
It must be overriden in derivative scripts, in order to implement custom
functionality required for the build script initialization.
This target is not intended to be called directly.
-->
<target name="-init" depends=".init"/>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed after the script's initialization.
This target is not intended to be called directly.
-->
<target name="-post-init"/>
<!-- ============================================================================
Clean-up
============================================================================= -->
<!--
Cleans the current working directory and the distributives directory.
This is an aggregation target, it does not contain any functionality, but
defines dependencies on '-pre-clean', '-clean' and '-post-clean'
targets. The '-pre-clean' and '-post-clean' targets are empty hooks,
which allow derivative scripts to inject custom logic which will be
executed prior to the clean process or after it. The '-clean' target
contains the code which actually cleans the project and should be
overriden in the derivative scripts.
-->
<target name="clean" depends="init,-pre-clean,-clean,-post-clean"/>
<!--
Performs the standard clean-up procedures.
It cleans the native components (iterates over the list of platforms for
which the native components should be built and deletes the distributive
files of these components), tries to run cleanup on the netbeans project
and finally deletes the local working directory.
This target is not intended to be called directly.
-->
<target name=".clean">
<!-- for each of the defined platforms set the appropriate property
and execute the clean-up procedure -->
<for-each list="${native.platforms}" property="platform">
<antcall target=".clean-native"/>
</for-each>
<!-- attempt to run the clean-up procedure on the netbeans project -->
<antcall target=".clean-nbproject"/>
<!-- delete the local working directory -->
<delete dir="${work.dir}" includeemptydirs="true"/>
</target>
<!--
Cleans the native components of the project.
It is meant to be antcall'ed from a loop which would iterate over the
list of supported platforms. This target expects the property
'platform' to point to the current platform for which clean-up should be
performed.
By default it falls back to '.clean-jni' target, but it is meant to be
overriden by derivative build scripts, if there is need to do more than
that.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".clean-native" if="do.build.native">
<antcall target=".clean-jni"/>
</target>
<!--
Cleans up the native jni libraries for the project.
It removes the distributive file for the jni library for the current
platform.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".clean-jni" if="do.build.native">
<!-- set required properties -->
<set property="current.scp.local.dir"
source="scp.local.dir"/>
<set property="current.native.dist.file"
source="native.dist.file.${platform}"/>
<!-- delete the distributive -->
<delete dir="${scp.local.dir}/${current.native.dist.file}"/>
</target>
<!--
Cleans up the netbeans part of the project.
It runs the 'clean' target on the netbeans project's build script.
This target is only executed if the the ${build.nbproject} property was
set to 'true'.
This target is not intended to be called directly.
-->
<target name=".clean-nbproject" if="do.build.nbproject">
<!-- check whether the netbeans project's directory exists -->
<condition property="nbproject.exists" value="true">
<available file="${cvs.dir}/${nbproject.path}"/>
</condition>
<!-- is it exists, run the 'clean' target on the netbeans project's
build script -->
<if property="nbproject.exists" value="true">
<condition property="nb.jdk.home"
value="${nb.platform.home}"
else="${nb.platform.home.macos}">
<not>
<equals arg1="Apple Inc." arg2="${java.vendor}"/>
</not>
</condition>
<exec executable="${ant.executable}"
dir="${cvs.dir}/${nbproject.path}"
failonerror="false"
failifexecutionfails="false">
<env key="JAVA_HOME" value="${java.home}"/>
<arg value="${nb.target.clean}"/>
<arg value="${nb.jdk.home}"/>
<arg value="${nb.ignore.native}"/>
<arg value="${nb.no.dependencies}"/>
<arg value="${nb.dont.build.custom.tasks}"/>
<arg value="${nb.custom.tasks.cls}"/>
<arg value="${nb.custom.parameter}"/>
</exec>
</if>
</target>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed prior to cleaning the projects's local working directory.
This target is not intended to be called directly.
-->
<target name="-pre-clean"/>
<!--
An empty hook.
It must be overriden in derivative scripts, in order to implement custom
functionality required for the cleaning the project.
This target is not intended to be called directly.
-->
<target name="-clean" depends=".clean"/>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed after cleaning the project's local working directory.
This target is not intended to be called directly.
-->
<target name="-post-clean"/>
<!-- ============================================================================
Check-out
============================================================================= -->
<!--
Checks out the the project's sources from the CVS repository.
This is an aggregation target, it does not contain any functionality, but
defines dependencies on '-pre-checkout', '-checkout' and '-post-checkout'
targets. The '-pre-checkout' and '-post-checkout' target are empty hooks,
which allow derivative scripts to inject custom logic which will be
executed prior to the check-out process or after it. The '-checkout'
target contains the code which actually checks out the sources and should
be overriden in the derivative scripts.
-->
<target name="checkout"
depends="init,-pre-checkout,-checkout,-post-checkout"/>
<!--
Checks out sources from a CVS repository with the given coordinates.
This target uses the values of ${cvs.root}, ${cvs.module}, ${cvs.path},
${cvs.branch}, ${cvs.timestamp} properties to check out the required sources.
It falls back to the two targets: '.checkout-repository' and '.checkout-copy',
which correspond to the choosen check-out method. Only one of these
targets will be executed under any conditions.
This target is not intended to be called directly.
-->
<target name=".checkout"
depends=".checkout-repository,.pre-checkout-copy,.checkout-copy,.post-checkout-copy">
<copy todir="${cvs.dir}" failonerror="false">
<fileset dir="${translatedfiles.dir}"/>
</copy>
<!-- substitute the params in the source tree -->
<for-each from="1" to="${sources.params.length}" property="i">
<set property="current.token"
source="sources.params.${i}.token"/>
<set property="current.value"
source="sources.params.${i}.value"/>
<replace dir="${cvs.dir}"
token="${current.token}"
value="${current.value}"/>
</for-each>
</target>
<!--
Checks out sources from trunk or from a given branch.
This target executes the <cvs> task, which performs the actual check-out.
This target is only executed if the the ${checkout.sources} property was
set to 'true' and the ${cvs.branch} property is not empty.
This target is not intended to be called directly.
-->
<target name=".checkout-repository" if="do.checkout">
<cvs cvsroot="${cvs.root}"
command="checkout"
package="${cvs.module}/${cvs.path}"
tag="${cvs.branch}"
date="${cvs.timestamp}"
dest="${work.dir}"
failonerror="true"/>
<cvs cvsroot="${cvs.root}"
command="checkout"
package="${translatedfiles.module}/${translatedfiles.path}"
tag="${cvs.branch}"
date="${cvs.timestamp}"
dest="${work.dir}"
failonerror="false"/>
</target>
<!--
Copies the sources from a given location.
This target serves as an alternative to the actual check-out targets and
is used in case when the calling script already knows the location of the
appropriate source files and there is no need to check them out again.
Several filters are applied to the sources files, e.g. no already built
files are copied, the private parts of the netbeans projects are omitted,
CVS metadata is also omitted.
This target is only executed if the the ${checkout.sources} property was
set to 'false'.
This target is not intended to be called directly.
-->
<target name=".checkout-copy" if="do.checkout.copy">
<!-- create the destination directory for the sources -->
<mkdir dir="${work.dir}/${cvs.module}/${cvs.path}"/>
<!-- copy the sources, applying the selected filters -->
<copy todir="${work.dir}/${cvs.module}/${cvs.path}" verbose="true">
<fileset dir="${sources.dir}/${cvs.module}/${cvs.path}">
<include name="**/*.*"/>
<exclude name="**/nbproject/private/*.*"/>
<exclude name="build/**/*.*"/>
<exclude name="dist/**/*.*"/>
<exclude name="**/CVS"/>
<exclude name="**/.cvsignore"/>
</fileset>
</copy>
<!-- copy the translatedfiles for the sources, applying the selected filters -->
<copy todir="${translatedfiles.dir}" verbose="true" failonerror="false">
<fileset dir="${sources.dir}/${translatedfiles.module}/${translatedfiles.path}">
<include name="**/*.*"/>
<exclude name="**/nbproject/private/*.*"/>
<exclude name="build/**/*.*"/>
<exclude name="dist/**/*.*"/>
<exclude name="**/CVS"/>
<exclude name="**/.cvsignore"/>
</fileset>
</copy>
</target>
<!--
Empty hooks.
They allow derivative scripts to inject custom logic which will be
executed prior and after copying out the project's sources.
These targets are not intended to be called directly.
-->
<target name=".pre-checkout-copy"/>
<target name=".post-checkout-copy"/>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed prior to checking out the project's sources.
This target is not intended to be called directly.
-->
<target name="-pre-checkout"/>
<!--
An empty hook.
It must be overriden in derivative scripts, in order to implement custom
functionality required for the correctly checking out the project's
sources.
This target is not intended to be called directly.
-->
<target name="-checkout" depends=".checkout"/>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed after checking out the project's sources.
This target is not intended to be called directly.
-->
<target name="-post-checkout"/>
<!-- ============================================================================
Build
============================================================================= -->
<!--
Builds the project and (optionally) its native components.
It is assumed that the sources of the project are already checked out,
but a dependency on the 'checkout' target is not defined as it may be
desirable to check-out the sources once and then rebuild the engine as
appropriate.
The build process consists of two steps: first, the native components
of the project (jni libraries) are built (if it is required), then the
projects's netbeans part is compiled and packaged.
This is an aggregation target, it does not contain any functionality, but
defines dependencies on '-pre-build', '-build' and '-post-build'
targets. The '-pre-build' and '-post-build' target are empty hooks,
which allow derivative scripts to inject custom logic which will be
executed prior to the build process or after it. The '-build' target
contains the code which actually builds the project and should be
overriden in the derivative scripts.
-->
<target name="build" depends="init,-pre-build,-build,-post-build"/>
<!--
Performs the standard build procedures.
This target builds the native components for the project (iterates over
the list of platforms, calling the '.build-native' target) and executes
the 'build' target on the netbeans part of the project.
This target is not intended to be called directly.
-->
<target name=".build">
<!-- for each of the defined platforms set the appropriate property
and execute the build procedure -->
<for-each list="${native.platforms}" property="platform">
<antcall target=".build-native"/>
</for-each>
<!-- run the 'build' target on the netbeans project -->
<antcall target=".build-nbproject"/>
</target>
<!--
Builds the native components of the project for a given platform.
By default this target falls back to the '.build-jni' target, which
builds the jni libraries for the project.
This target is called in a loop from the '.build-native' target, and
expects the ${platform} property to contain the code mane of the platform
for which the native components should be built.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".build-native" if="do.build.native">
<antcall target=".build-jni"/>
</target>
<!--
Builds the jni library for the given platform.
This target is antcall'ed as part of the call to the '.build-native'
target, and expects the ${platform} property to contain the code name of
the platform for which the library should be built.
It connects to the registered satellite machine for the current platform
using the 'ssh' utility, checks out the library's sources and builds it.
The built binary is then copied back to the host machine using 'scp'.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".build-jni" if="do.build.native">
<!-- set required properties -->
<set property="remote.host"
source="remote.host.${platform}"/>
<set property="remote.port"
source="remote.port.${platform}"/>
<set property="remote.user"
source="remote.user.${platform}"/>
<set property="current.native.dist.file"
source="native.dist.file.${platform}"/>
<!-- now we need to re-evaluate the values of the ssh and scp-related
properties as they contain references to the properties that have
just been set above -->
<set property="current.ssh.arguments"
source="ssh.arguments"/>
<set property="current.ssh.command.clean"
source="ssh.command.clean"/>
<set property="current.ssh.command.build"
source="ssh.command.build"/>
<set property="current.scp.arguments"
source="scp.arguments"/>
<set property="current.scp.remote.dir"
source="scp.remote.dir"/>
<set property="current.scp.local.dir"
source="scp.local.dir"/>
<!-- run the ssh command - it is expected that it will build
everything -->
<exec executable="${ssh.executable}" failonerror="true">
<arg line="${current.ssh.arguments}"/>
<arg value="${current.ssh.command.build}"/>
</exec>
<!-- run the scp command to copy the resulting file back to the
host system -->
<mkdir dir="${current.scp.local.dir}"/>
<exec executable="${scp.executable}" failonerror="true">
<arg line="${current.scp.arguments}"/>
<arg value="${current.scp.remote.dir}/${current.native.dist.file}"/>
<arg value="${current.scp.local.dir}/${current.native.dist.file}"/>
</exec>
<!-- run the ssh command - we need to clean after us -->
<exec executable="${ssh.executable}" failonerror="true">
<arg line="${current.ssh.arguments}"/>
<arg value="${current.ssh.command.clean}"/>
</exec>
</target>
<!--
Builds the netbeans part of the project.
It runs the 'jar' target on the netbeans project's build script.
This target is only executed if the the ${build.nbproject} property was
set to 'true'.
This target is not intended to be called directly.
-->
<target name=".build-nbproject" if="do.build.nbproject">
<condition property="nb.jdk.home"
value="${nb.platform.home}"
else="${nb.platform.home.macos}">
<not>
<equals arg1="Apple Inc." arg2="${java.vendor}"/>
</not>
</condition>
<exec executable="${ant.executable}"
dir="${cvs.dir}/${nbproject.path}"
failonerror="true"
failifexecutionfails="true"
errorproperty="error.property">
<env key="JAVA_HOME" value="${java.home}"/>
<arg value="clean"/>
<arg value="compile"/>
<arg value="${nb.jdk.home}"/>
<arg value="${nb.ignore.native}"/>
<arg value="${nb.no.dependencies}"/>
<arg value="${nb.dont.build.custom.tasks}"/>
<arg value="${nb.custom.tasks.cls}"/>
<arg value="${nb.custom.parameter}"/>
</exec>
<mkdir dir="${nbproject.dist.dir}"/>
<jar manifest="${cvs.dir}/${nbproject.path}/${nbproject.manifest}"
destfile="${nbproject.dist.dir}/${nbproject.dist.file.name}">
<fileset dir="${cvs.dir}/${nbproject.path}/build/classes">
<include name="**/*.*"/>
</fileset>
</jar>
</target>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed prior to building the project.
This target is not intended to be called directly.
-->
<target name="-pre-build"/>
<!--
An empty hook.
It must be overriden in derivative scripts, in order to implement custom
functionality required for the correctly building the project.
This target is not intended to be called directly.
-->
<target name="-build" depends=".build"/>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed after building the project.
This target is not intended to be called directly.
-->
<target name="-post-build"/>
<!-- ============================================================================
Release
============================================================================= -->
<!--
Releases the project to the registries server.
It is assumed that the project has already been built, but a dependency
on the 'build' target is not defined, as it may be desirable to build
once and then release several times to different registries servers.
This is an aggregation target, it does not contain any functionality, but
defines dependencies on '-pre-release', '-release' and '-post-release'
targets. The '-pre-release' and '-post-release' target are empty hooks,
which allow derivative scripts to inject custom logic which will be
executed prior to the release process or after it. The '-release' target
contains the code which actually releases the project and should be
overriden in the derivative scripts.
-->
<target name="release" depends="init,-pre-release,-release,-post-release"/>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed prior to releasing the project.
This target is not intended to be called directly.
-->
<target name="-pre-release"/>
<!--
An empty hook.
It must be overriden in derivative scripts, in order to implement custom
functionality required for the correctly releasing the project.
This target is not intended to be called directly.
-->
<target name="-release"/>
<!--
An empty hook.
It allows derivative scripts to inject custom logic which will be
executed after releasing the project.
This target is not intended to be called directly.
-->
<target name="-post-release"/>
<!-- ============================================================================
Default
============================================================================= -->
<!--
The default target.
Does nothing except printing the usage information.
-->
<target name="usage">
<echo>
This build script is a targets library and must not be used
directly.
</echo>
</target>
</project>

@ -0,0 +1,70 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
# whether to build native components or not; 'true'/'false'
# * the engine has a bunch of native code dependencies, thus it is feasible to
# rebuild them every time
build.native=true
# whether to build the netbeans part of the project or not; 'true'/'false'
# * essentially the engine IS a netbeans project, thus we should always build
# it
build.nbproject=true
# dummy value for the custom parameter; which will be passed to the netbeans
# project build script; more sensible value is present in the base product
# build script
nb.custom.parameter=-Dtrue=true
# name of the distributive file for the netbeans project
# * ${engine.dist.file.name} is expected to be defined in the derivative
# instance build script
nbproject.dist.file.name=${engine.dist.file.name}
# path to the engine's distributive file; the file at this path would be
# considered the result of the build script and be copied to the distributives
# directory
nbproject.dist.file=${nbproject.dist.dir}/${nbproject.dist.file.name}
# names of the distributive files for the native jni libraries for the engine
native.dist.file.windows=windows.dll
native.dist.file.linux=linux.so
native.dist.file.solaris-x86=solaris-x86.so
native.dist.file.solaris-sparc=solaris-sparc.so
native.dist.file.macosx=macosx.dylib

@ -0,0 +1,324 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<!--
This is the base build script for nbi engine.
It is not intended to be used directly, but to be imported into derivative
implementaion scripts, which will provide properties' values that are
specific the concrete engine implementation. The derivative scripts may also
provide some additional functionality that is required by their respective
engine implementations.
This script exposes five primary targets: 'init', 'clean', 'checkout',
'build' and 'release'; as well as two aggregate targets: 'build-all',
which tranlates into 'init', 'clean', 'checkout', 'build', and
'release-all' - 'init', 'clean', 'checkout', 'build', 'release'. For the
detailed description of the functionality of these targets, consult the
corresponsing documentation.
-->
<project name="engine" default="usage" basedir=".">
<!-- a default value for the ${common.dir} property, which allows the user
to see the usage information is he calls this script directly and not
via a derivative (which is the proper way to do this) -->
<property name="common.dir" value="${basedir}"/>
<!-- import the common properties -->
<property file="${common.dir}/common.properties"/>
<!-- import properties specific to the engine's build script -->
<property file="${common.dir}/engine.properties"/>
<!-- import the common target library -->
<import file="common.xml" optional="false"/>
<!-- ============================================================================
Initialization
============================================================================= -->
<!--
Initializes the engine's build script.
This target overrides the '-init' target in common.xml, providing the
custom functionality that is required for the engine's build script
initialization.
In addition to the standard initialization routine, this target defines
several custom ant tasks, which are specific to the engine's build
script.
This target is not intended to be called directly.
-->
<target name="-init" depends=".init">
<!-- define custom ant tasks -->
<if property="release.to.server" value="true">
<taskdef
name="release-engine-server"
classname="org.netbeans.installer.infra.build.ant.ReleaseEngine"
classpath="${custom.tasks.cls}"/>
</if>
<if property="release.to.server" value="false">
<taskdef
name="release-engine-filesystem"
classname="org.netbeans.installer.infra.build.ant.registries.UpdateEngine"
classpath="${custom.tasks.cls}"/>
</if>
</target>
<!-- ============================================================================
Clean-up
============================================================================= -->
<!--
Cleans the current working directory and the distributives directory.
This target overrides the '-clean' target in common.xml, providing the
custom functionality that is required for correctly cleaning the engine.
In addition to the standard behavior the engine distributive file is
removed from the distributives directory.
This target is not intended to be called directly.
-->
<target name="-clean" depends=".clean">
<!-- remove the engine's distributive file from the distributives
directory -->
<delete file="${dist.dir}/${engine.dist.file.name}"/>
</target>
<!--
Cleans the native components of the engine.
This target overrides the '.clean-native' target defined in common.xml,
as the engine's native components slightly differ from the defaults.
Besides cleaning the jni libraries, the engine also needs to clean the
native launcher stubs.
This target is antcall'ed in a loop over the list of platforms from the
'.clean' target in common.xml.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".clean-native" if="do.build.native">
<antcall target=".clean-jni"/>
<antcall target=".clean-launcher"/>
</target>
<!--
Cleans the native launcher stub for the given platform.
This target is antcall'ed as part of the call to the '.clean-native'
target, and expects the ${platform} property to contain the code name of
the platform for which the launcher should be built.
It simply removes the current launcher stub.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".clean-launcher" if="do.build.native">
<!-- does nothing at the moment -->
</target>
<!-- ============================================================================
Check-out
============================================================================= -->
<!--
The functionality of the checkout procedure for the engine is indentical
to the standard one, thus there is not need to override the '-checkout'
target, whosew default implementation is present in common.xml.
-->
<!-- ============================================================================
Build
============================================================================= -->
<!--
Builds the engine and (optionally) its native components.
This target overrides the '-build' target in common.xml, providing the
custom functionality that is required for correctly building the engine.
The build process consists of three steps: first, the native components
of the engine (jni libraries and native launcher stubs) are built (if it
is required), then the engine's netbeans project is compiled and
packaged, last the engine jar file is digitally signed and copied to the
distributives directory.
This target is not intended to be called directly.
-->
<target name="-build" depends=".build">
<!-- copy the built binary to the distributives directory -->
<copy file="${nbproject.dist.file}" todir="${dist.dir}"/>
<!-- digitally sign the built binary -->
<if property="jarsigner.enabled" value="true">
<signjar jar="${dist.dir}/${engine.dist.file.name}"
keystore="${jarsigner.keystore}"
storepass="${jarsigner.storepass}"
alias="${jarsigner.alias}"
maxmemory="${jarsigner.xmx}"/>
</if>
</target>
<!--
Builds the native components of the engine.
This target overrides the '.build-native' target defined in common.xml,
as the engine's native components slightly differ from the defaults.
Besides building the jni libraries, the engine also needs to build the
native launcher stubs, which will later be used to create redistributable
bundles.
This target is antcall'ed in a loop over the list of platforms from the
'.build' target in common.xml.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".build-native" if="do.build.native">
<antcall target=".build-jni"/>
<antcall target=".build-launcher"/>
<antcall target=".build-cleaner"/>
</target>
<!--
Builds the native launcher stub for the given platform.
This target is antcall'ed as part of the call to the '.build-native'
target, and expects the ${platform} property to contain the code name of
the platform for which the launcher should be built.
It connects to the registered satellite machine for the current platform
using the 'ssh' utility, checks out the launcher's sources and builds it.
The built binary is then copied back to the host machine using 'scp'.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".build-launcher" if="do.build.native">
<!-- does nothing at the moment -->
</target>
<!--
Builds the native cleaner for locked files for the given platform.
This target is antcall'ed as part of the call to the '.build-native'
target, and expects the ${platform} property to contain the code name of
the platform for which the launcher should be built.
It connects to the registered satellite machine for the current platform
using the 'ssh' utility, checks out the launcher's sources and builds it.
The built binary is then copied back to the host machine using 'scp'.
This target is only executed if the the ${build.native} property was set
to 'true'.
This target is not intended to be called directly.
-->
<target name=".build-cleaner" if="do.build.native">
<!-- does nothing at the moment -->
</target>
<!-- ============================================================================
Release
============================================================================= -->
<!--
Releases the engine to the registries server.
This target overrides the '-release' target in common.xml, providing the
custom functionality that is required for correctly releasing the engine.
It is assumed that the engine has already been built, but a dependency
on the 'build' target is not defined, as it may be desirable to build
once and then release several times to different registries servers.
This target is not intended to be called directly.
-->
<target name="-release">
<if property="release.to.server" value="true">
<echo message="Release URL is ${release.url}"/>
<echo message="Archive is ${dist.dir}/${engine.dist.file.name}"/>
<release-engine-server
url="${release.url}"
archive="${dist.dir}/${engine.dist.file.name}"/>
</if>
<if property="release.to.server" value="false">
<echo message="Registry root is ${release.registry.dir}"/>
<echo message="Archive is ${dist.dir}/${engine.dist.file.name}"/>
<release-engine-filesystem
root="${release.registry.dir}"
archive="${dist.dir}/${engine.dist.file.name}"/>
</if>
</target>
<!-- ============================================================================
Default
============================================================================= -->
<!--
The default target.
Does nothing except printing the usage information.
-->
<target name="usage">
<echo>
This is the base build script for nbi engine and is not intended to
be called directly. In order to create a derivative implementation
script, see
${basedir}/.templates/engine-template.xml
</echo>
</target>
</project>

@ -0,0 +1,69 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
# groups do not normally have any native components, thus there is no need to
# attempt to build anything native
build.native=false
# groups do not normally have any netbeans projects, thus there is no need to
# attempt to build any nbproject
build.nbproject=false
# various directories and file paths that will be used for packaging the
# group
package.dir=${work.dir}/package
package.descriptor.path=registry.xml
group.path=groups/${group.uid}
group.icon.path=${group.path}/icon.png
group.dist.file.name=${group.uid}.jar
# path to the group's icon; the contents of this file will be copied to the
# file identified by ${group.icon.file}
group.icon=${cvs.dir}/data/icon.png
# path to the group's localizing bundle; the bundle is expected to contain
# two properties: 'group.display.name' and 'group.description', which will be
# used in creating the registry entry for this group
group.bundle=${cvs.dir}/data/Bundle
# uri of the group's icon, which will appear in the registry
group.icon.uri=resource:${group.icon.path}

@ -0,0 +1,283 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<!--
This is the base build script for an nbi group package.
It is not intended to be used directly, but to be imported into derivative
implementation scripts, which will provide properties' values that are
specific the concrete group implementation. The derivative scripts may also
provide some additional functionality that is required by their respective
group implementations.
This script exposes five primary targets: 'init', 'clean', 'checkout',
'build' and 'release'; as well as two aggregate targets: 'build-all',
which tranlates into 'init', 'clean', 'checkout', 'build', and
'release-all' - 'init', 'clean', 'checkout', 'build', 'release'. For the
detailed description of the functionality of these targets, consult the
corresponding documentation.
-->
<project name="group" default="usage" basedir=".">
<!-- a default value for the ${common.dir} property, which allows the user
to see the usage information is he calls this script directly and not
via a derivative (which is the proper way to do this) -->
<property name="common.dir" value="${basedir}"/>
<!-- import the common properties -->
<property file="${common.dir}/common.properties"/>
<!-- import properties specific to the group package's build script -->
<property file="${common.dir}/group.properties"/>
<!-- import the common target library -->
<import file="common.xml" optional="false"/>
<!-- ============================================================================
Initialization
============================================================================= -->
<!--
Initializes the group package's build script.
This target overrides the '-init' target in common.xml, providing the
custom functionality that is required for the group package's build
script initialization.
In addition to the standard initialization routine, this target defines
several custom ant tasks, which are specific to the group package's build
script.
This target is not intended to be called directly.
-->
<target name="-init" depends=".init">
<!-- define custom ant tasks -->
<taskdef
name="sizeof"
classname="org.netbeans.installer.infra.build.ant.SizeOf"
classpath="${custom.tasks.cls}"/>
<taskdef
name="md5"
classname="org.netbeans.installer.infra.build.ant.Md5"
classpath="${custom.tasks.cls}"/>
<taskdef
name="load-locales"
classname="org.netbeans.installer.infra.build.ant.LoadLocales"
classpath="${custom.tasks.cls}"/>
<taskdef
name="group-descriptor"
classname="org.netbeans.installer.infra.build.ant.GroupDescriptor"
classpath="${custom.tasks.cls}"/>
<if property="release.to.server" value="true">
<taskdef
name="release-package-server"
classname="org.netbeans.installer.infra.build.ant.ReleasePackage"
classpath="${custom.tasks.cls}"/>
</if>
<if property="release.to.server" value="false">
<taskdef
name="release-package-filesystem"
classname="org.netbeans.installer.infra.build.ant.registries.AddPackage"
classpath="${custom.tasks.cls}"/>
</if>
</target>
<!-- ============================================================================
Clean-up
============================================================================= -->
<!--
Cleans the current working directory and the distributives directory.
This target overrides the '-clean' target in common.xml, providing the
custom functionality that is required for correctly cleaning the group
package.
In addition to the standard behavior the group package distributive file
is removed from the distributives directory.
This target is not intended to be called directly.
-->
<target name="-clean" depends=".clean">
<!-- remove the group's distributive file from the distributives
directory -->
<delete file="${dist.dir}/${group.dist.file.name}"/>
</target>
<!-- ============================================================================
Check-out
============================================================================= -->
<!--
The functionality of the checkout procedure for the group package is
indentical to the standard one, thus there is not need to override the
'-checkout' target, whosew default implementation is present in
common.xml.
-->
<!-- ============================================================================
Build
============================================================================= -->
<!--
Builds the group package.
This target overrides the '-build' target in common.xml, providing the
custom functionality that is required for correctly building the group
package.
The build process for the grup package consists of four steps.
1) The group's icon is copied from its location to the group's package
directory structure and some metadata is calculated
2) The group's localizing bundle is loaded and the group package
descriptor is generated
3) The manifest for the group package is generated
4) The package directory structure is jarred, digitally signed and moved
to the distributives directory
This target is not intended to be called directly.
-->
<target name="-build" depends=".build">
<!-- copy the group's icon to the soon-to-be package directory
structure and calculate some metadata for it -->
<copy file="${group.icon}"
tofile="${package.dir}/${group.icon.path}"/>
<sizeof file="${package.dir}/${group.icon.path}"
property="group.icon.size"/>
<md5 file="${package.dir}/${group.icon.path}"
property="group.icon.md5"/>
<set
property="group.icon.correct.uri"
value="${group.icon.uri}"/>
<!-- load the group's localizing bundle and store the locales list to
${group.locales.list} -->
<load-locales basename="${group.bundle}" list="group.locales.list"/>
<!-- generate the group package descriptor -->
<group-descriptor file="${package.dir}/${package.descriptor.path}"/>
<!-- create the package jar file and sign it -->
<jar basedir="${package.dir}"
destfile="${work.dir}/${group.dist.file.name}"
compress="true">
<manifest>
<attribute
name="Product-Descriptor"
value="${package.descriptor.path}"/>
</manifest>
</jar>
<!-- copy the distributive to the distributives directory -->
<move file="${work.dir}/${group.dist.file.name}"
todir="${dist.dir}"/>
<if property="jarsigner.enabled" value="true">
<signjar jar="${dist.dir}/${group.dist.file.name}"
keystore="${jarsigner.keystore}"
storepass="${jarsigner.storepass}"
alias="${jarsigner.alias}"
maxmemory="${jarsigner.xmx}"/>
</if>
</target>
<!-- ============================================================================
Release
============================================================================= -->
<!--
Releases the group package to the registries server.
This target overrides the '-release' target in common.xml, providing the
custom functionality that is required for correctly releasing the group
package.
It is assumed that the group package has already been built, but a
dependency on the 'build' target is not defined, as it may be desirable
to build once and then release several times to different registries
servers.
This target is not intended to be called directly.
-->
<target name="-release">
<if property="release.to.server" value="true">
<echo message="Release URL is ${release.url}"/>
<echo message="Archive is ${dist.dir}/${group.dist.file.name}"/>
<release-package-server
url="${release.url}"
registry="${release.registry}"
uid="${release.parent.uid}"
version="${release.parent.version}"
archive="${dist.dir}/${group.dist.file.name}"/>
</if>
<if property="release.to.server" value="false">
<echo message="Registry root is ${release.registry.dir}"/>
<echo message="Archive is ${dist.dir}/${group.dist.file.name}"/>
<release-package-filesystem
root="${release.registry.dir}"
uid="${release.parent.uid}"
version="${release.parent.version}"
archive="${dist.dir}/${group.dist.file.name}"/>
</if>
</target>
<!-- ============================================================================
Default
============================================================================= -->
<!--
The default target.
Does nothing except printing the usage information.
-->
<target name="usage">
<echo>
This is the base build script for nbi group package and is not
intended to be called directly. In order to create a derivative
implementation script, see
${basedir}/.templates/group-template.xml
</echo>
</target>
</project>

@ -0,0 +1,111 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
# whether to build native components or not; 'true'/'false'
# * normally a product does not have any native components, thus
# ${build.native} should be 'false' in most of the cases
build.native=false
# whether to build the netbeans part of the project or not; 'true'/'false'
build.nbproject=true
nbproject.dist.file.name=${product.uid},logic.jar
# whether to build engine or not; 'true'/'false'
build.engine=true
# whether to repackage the installation data or not; 'true'/'false'/'default'
# * if set to 'false' the data will be taken as it is (i.e. will be considered
# as already packaged)
# * if set to 'true' the data will be downloaded and packaged
# * if set to 'default' packaged data will be taken if it's available,
# otherwise raw data will be downloaded and packaged
package.data=default
# whether the packaged data should be released (copied) to the local packaged
# data repository; 'true'/'false'
release.packaged.data=true
# various properties controlling the engine's build process
engine.dir=${common.dir}/../engine
engine.work.dir=${work.dir}/.engine
engine.dist.dir=${dist.dir}/.engine
engine.dist.file.name=engine.jar
# path to the distributive file of the engine; it will be used as the classpath
# for building the product's netbeans project
# * if the ${build.engine} has been set to 'false', make sure that
# ${engine.dist.file} points to a precompiled engine
engine.dist.file=${engine.dist.dir}/${engine.dist.file.name}
downloads.cache.dir=${packaged.data.dir}/.raw
# various paths and file names that will be used for packaging the
# product
package.dir=${work.dir}/package
package.descriptor.path=registry.xml
product.path=products/${product.uid}/${product.version}/${product.platforms}
product.logic.path=${product.path}/logic
product.data.path=${product.path}/data
product.icon.path=${product.path}/icon.png
product.icon.uri=resource:${product.icon.path}
product.dist.file.name=${product.uid},${product.version},${product.platforms}.jar
# name of the product's configuration logic jar with index ${i}
product.logic.file.name=logic,${i}.jar
product.data.file.name=data,${i}.jar
# list of the locally cached pre-packaged data files
# * the length of the list equals to ${product.data.length}
# * ${packaged.data.dir} is the path to the local packaged data repository and
# is environment specific; it is expected to be passed in via the environment
# properties
product.packaged.data.file=${packaged.data.dir}/${product.uid},${product.version},${product.platforms},${i}.jar
product.packaged.data.properties.file=${packaged.data.dir}/${product.uid},${product.version},${product.platforms},${i}.jar.properties
# product icon and the localizing bundle, which is expected to contain
# display names and descriptions for all locales, supported by the product
# * these are file paths as opposed to uris for configuration logic and
# installation data
product.icon=${cvs.dir}/data/icon.png
product.bundle=${cvs.dir}/data/Bundle

@ -0,0 +1,746 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<!--
This is the base build script for an nbi product package.
It is not intended to be used directly, but to be imported into derivative
implementation scripts, which will provide properties' values that are
specific the concrete product implementation. The derivative scripts may also
provide some additional functionality that is required by their respective
product implementations.
This script exposes five primary targets: 'init', 'clean', 'checkout',
'build' and 'release'; as well as two aggregate targets: 'build-all',
which tranlates into 'init', 'clean', 'checkout', 'build', and
'release-all' - 'init', 'clean', 'checkout', 'build', 'release'. For the
detailed description of the functionality of these targets, consult the
corresponding documentation.
-->
<project name="product" default="usage" basedir=".">
<!-- a default value for the ${common.dir} property, which allows the user
to see the usage information is he calls this script directly and not
via a derivative (which is the proper way to do this) -->
<property name="common.dir" value="${basedir}"/>
<!-- import the common properties -->
<property file="${common.dir}/common.properties"/>
<!-- import properties specific to the product package's build script -->
<property file="${common.dir}/product.properties"/>
<!-- import the common target library -->
<import file="common.xml" optional="false"/>
<!-- ============================================================================
Initialization
============================================================================= -->
<!--
Initializes the product package's build script.
This target overrides the '-init' target in common.xml, providing the
custom functionality that is required for the product package's build
script initialization.
In addition to the standard initialization routine, this target defines
several custom ant tasks, which are specific to the product package's build
script.
This target is not intended to be called directly.
-->
<target name="-init" depends=".init">
<!-- define custom ant tasks -->
<taskdef
name="sizeof"
classname="org.netbeans.installer.infra.build.ant.SizeOf"
classpath="${custom.tasks.cls}"/>
<taskdef
name="md5"
classname="org.netbeans.installer.infra.build.ant.Md5"
classpath="${custom.tasks.cls}"/>
<taskdef
name="sum"
classname="org.netbeans.installer.infra.build.ant.Sum"
classpath="${custom.tasks.cls}"/>
<taskdef
name="package"
classname="org.netbeans.installer.infra.build.ant.Package"
classpath="${custom.tasks.cls}"/>
<taskdef
name="load-locales"
classname="org.netbeans.installer.infra.build.ant.LoadLocales"
classpath="${custom.tasks.cls}"/>
<taskdef
name="product-descriptor"
classname="org.netbeans.installer.infra.build.ant.ProductDescriptor"
classpath="${custom.tasks.cls}"/>
<taskdef
name="absolutize"
classname="org.netbeans.installer.infra.build.ant.Absolutize"
classpath="${custom.tasks.cls}"/>
<taskdef
name="uri-to-path"
classname="org.netbeans.installer.infra.build.ant.UriToPath"
classpath="${custom.tasks.cls}"/>
<taskdef
name="n-unzip"
classname="org.netbeans.installer.infra.build.ant.NativeUnzip"
classpath="${custom.tasks.cls}"/>
<taskdef
name="n-untar"
classname="org.netbeans.installer.infra.build.ant.NativeUntar"
classpath="${custom.tasks.cls}"/>
<if property="release.to.server" value="true">
<taskdef
name="release-package-server"
classname="org.netbeans.installer.infra.build.ant.ReleasePackage"
classpath="${custom.tasks.cls}"/>
</if>
<if property="release.to.server" value="false">
<taskdef
name="release-package-filesystem"
classname="org.netbeans.installer.infra.build.ant.registries.AddPackage"
classpath="${custom.tasks.cls}"/>
</if>
<!-- check whether the engine should be built -->
<condition property="do.build.engine">
<equals arg1="${build.engine}" arg2="true"/>
</condition>
<!-- make the engine-related paths absolute -->
<absolutize property="engine.work.dir"/>
<absolutize property="engine.dist.dir"/>
<absolutize property="engine.dist.file"/>
<!-- define the javac.classpath for the netbeans project -->
<property
name="nb.custom.parameter"
value="-Djavac.classpath=${engine.dist.file}"/>
</target>
<!-- ============================================================================
Clean-up
============================================================================= -->
<!--
Cleans the current working directory and the distributives directory.
This target overrides the '-clean' target in common.xml, providing the
custom functionality that is required for correctly cleaning the product
package.
In addition to the standard behavior the product package distributive file
is removed from the distributives directory.
This target is not intended to be called directly.
-->
<target name="-clean" depends="-clean-engine,.clean">
<!-- remove the product's distributive file from the distributives
directory -->
<delete file="${dist.dir}/${product.dist.file.name}"/>
</target>
<!--
Cleans the engine.
It runs the 'clean' target on the engine's build script.
This target is only executed if the the ${build.engine} property was
set to 'true'.
This target is not intended to be called directly.
-->
<target name="-clean-engine" depends="init" if="do.build.engine">
<exec executable="${ant.executable}"
dir="${engine.dir}"
failonerror="false">
<env key="JAVA_HOME" value="${java.home}"/>
<arg value="clean"/>
<arg value="-Dwork.dir=${engine.work.dir}"/>
<arg value="-Ddist.dir=${engine.dist.dir}"/>
<arg value="-Dbuild.native=false"/>
<arg value="-Ddont.build.custom.tasks=true"/>
<arg value="-Dcustom.tasks.cls=${custom.tasks.cls}"/>
<arg value="-Dengine.dist.file.name=${engine.dist.file.name}"/>
<arg value="-Denvironment.properties=${environment.properties}"/>
</exec>
</target>
<!-- ============================================================================
Check-out
============================================================================= -->
<!--
The functionality of the checkout procedure for the product package is
indentical to the standard one, thus there is not need to override the
'-checkout' target, whosew default implementation is present in
common.xml.
-->
<!-- ============================================================================
Build
============================================================================= -->
<!--
Builds the product package.
This target overrides the '-build' target in common.xml, providing the
custom functionality that is required for correctly building the product
package.
The build process for the grup package consists of five steps.
1) The search-and-replace is run over the product's sources, based on the
[token] => [value] pairs defined in ${product.params.N.token} and
${product.params.N.value}
2) The product's icon is copied from its location to the product's package
directory structure and some metadata is calculated
3) The product's localizing bundle is loaded and the product package
descriptor is generated
4) The manifest for the product package is generated
5) The package directory structure is jarred, digitally signed and moved
to the distributives directory
This target is not intended to be called directly.
-->
<target name="-build" depends="-build-engine,.build">
<!-- init the required disk space -->
<set property="product.disk.space"
value="${product.disk.space.modificator}"/>
<!-- init several shorthands -->
<set
property="product.logic.dir"
value="${package.dir}/${product.logic.path}"/>
<set
property="product.data.dir"
value="${package.dir}/${product.data.path}"/>
<!-- some necessary mkdirs -->
<mkdir dir="${packaged.data.dir}"/>
<mkdir dir="${downloads.cache.dir}"/>
<mkdir dir="${product.logic.dir}"/>
<mkdir dir="${product.data.dir}"/>
<!-- fetch the configuration logic jars; the first jar is handled
separately, if the the ${build.nbproject} has been set to true -
we don't need to fetch it, as we ca just copy -->
<if property="build.nbproject" value="true">
<set
property="i"
value="1"/>
<set
property="current.file"
value="${product.logic.dir}/${product.logic.file.name}"/>
<copy
file="${nbproject.dist.dir}/${nbproject.dist.file.name}"
tofile="${current.file}"/>
<!-- sign the current jar file -->
<if property="jarsigner.enabled" value="true">
<signjar jar="${current.file}"
keystore="${jarsigner.keystore}"
storepass="${jarsigner.storepass}"
alias="${jarsigner.alias}"
maxmemory="${jarsigner.xmx}"/>
</if>
<!-- calculate the metadata for the file -->
<sizeof file="${current.file}" property="product.logic.${i}.size"/>
<md5 file="${current.file}" property="product.logic.${i}.md5"/>
<set property="product.logic.${i}.correct.uri"
value="resource:${product.logic.path}/${product.logic.file.name}"/>
<property
name="start.index"
value="2"/>
</if>
<property name="start.index" value="1"/>
<for-each from="${start.index}"
to="${product.logic.length}"
property="i">
<!-- set the properties relevant to the current file -->
<set
property="current.file"
value="${product.logic.dir}/${product.logic.file.name}"/>
<condition property="product.logic.${i}.is.local" value="true" else="false">
<isset property="product.logic.${i}.path"/>
</condition>
<if property="product.logic.${i}.is.local" value="false">
<set
property="current.uri"
source="product.logic.${i}.uri"/>
<get
src="${current.uri}"
dest="${current.file}"
usetimestamp="true"/>
</if>
<if property="product.logic.${i}.is.local" value="true">
<set
property="current.path"
source="product.logic.${i}.path"/>
<copy
file="${current.path}"
tofile="${current.file}"
preservelastmodified="true"/>
</if>
<!-- sign the current jar file -->
<if property="jarsigner.enabled" value="true">
<signjar
jar="${current.file}"
keystore="${jarsigner.keystore}"
storepass="${jarsigner.storepass}"
alias="${jarsigner.alias}"
maxmemory="${jarsigner.xmx}"/>
</if>
<!-- calculate the metadata for the file -->
<sizeof
file="${current.file}"
property="product.logic.${i}.size"/>
<md5
file="${current.file}"
property="product.logic.${i}.md5"/>
<set
property="product.logic.${i}.correct.uri"
value="resource:${product.logic.path}/${product.logic.file.name}"/>
</for-each>
<!-- fetch and repackage installation data zips -->
<set property="current.product.data.length"
value="${product.data.length}"/>
<for-each from="1" to="${current.product.data.length}" property="i">
<!-- define the path to the current working file and the temporary
directory which should be used for repackaging -->
<set
property="current.zip"
value="${product.data.${i}.zip}"/>
<condition property="product.tar.${i}.is.set" value="true" else="false">
<isset property="product.data.${i}.tar"/>
</condition>
<if property="product.tar.${i}.is.set" value="true">
<set
property="current.tar"
value="${product.data.${i}.tar}"/>
</if>
<if property="product.tar.${i}.is.set" value="false">
<set
property="current.tar"
value="false"/>
</if>
<set
property="current.file"
value="${product.data.dir}/${product.data.file.name}"/>
<set
property="current.temp.dir"
value="${work.dir}/temp"/>
<set
property="current.packaged.data.file"
value="${product.packaged.data.file}"/>
<set
property="current.packaged.data.properties.file"
value="${product.packaged.data.properties.file}"/>
<condition property="do.package.data.${i}" value="true">
<or>
<equals arg1="${package.data}" arg2="true"/>
<and>
<equals
arg1="${package.data}"
arg2="default"/>
<not>
<and>
<available
file="${current.packaged.data.file}"/>
<available
file="${current.packaged.data.properties.file}"/>
</and>
</not>
</and>
</or>
</condition>
<condition property="do.package.data.${i}" value="false">
<or>
<equals arg1="${package.data}" arg2="false"/>
<and>
<equals
arg1="${package.data}"
arg2="default"/>
<available
file="${current.packaged.data.file}"/>
<available
file="${current.packaged.data.properties.file}"/>
</and>
</or>
</condition>
<!-- if the data needs to be packaged -->
<if property="do.package.data.${i}" value="true">
<condition property="product.data.${i}.is.local" value="true" else="false">
<isset property="product.data.${i}.path"/>
</condition>
<if property="product.data.${i}.is.local" value="false">
<set
property="current.uri"
source="product.data.${i}.uri"/>
<uri-to-path
property="current.downloaded.path"
uri="${current.uri}"/>
<set
property="current.download"
value="${downloads.cache.dir}/${current.downloaded.path}"/>
<dirname
property="current.download.${i}.dir"
file="${current.download}"/>
<set
property="current.download.dir"
source="current.download.${i}.dir"/>
<mkdir
dir="${current.download.dir}"/>
<get
src="${current.uri}"
dest="${current.download}"
usetimestamp="true"/>
</if>
<if property="product.data.${i}.is.local" value="true">
<set property="current.download"
source="product.data.${i}.path"/>
</if>
<!-- extract the zip file to a temporary directory, if it's a
zip file, or simply move it there if it is the data we
need -->
<mkdir
dir="${current.temp.dir}"/>
<if property="current.zip" value="true">
<n-unzip
src="${current.download}"
dest="${current.temp.dir}"/>
</if>
<if property="current.tar" value="true">
<n-untar
src="${current.download}"
dest="${current.temp.dir}"/>
</if>
<condition property="do.copy.data.${i}" value="true">
<and>
<not>
<equals arg1="${current.zip}" arg2="true"/>
</not>
<not>
<equals arg1="${current.tar}" arg2="true"/>
</not>
</and>
</condition>
<if property="do.copy.data.${i}" value="true">
<copy file="${current.download}"
todir="${current.temp.dir}"/>
</if>
<!-- call the pre-package hook, to allow derivative scripts to
perform any required operations on the data if they
like -->
<antcall target="-pre-package">
<param name="i" value="${i}"/>
<param name="data.directory" value="${current.temp.dir}"/>
</antcall>
<!-- measure its size and add it to the required disk space -->
<sizeof
file="${current.temp.dir}"
property="current.disk.space"/>
<sum
arg1="${product.disk.space}"
arg2="${current.disk.space}"
property="product.disk.space"/>
<!-- repackage (pack200, jar) and build files list -->
<package
directory="${current.temp.dir}"
file="${current.file}"/>
<!-- if we need to release the packaged data - copy the file
and the original size to the specified directory -->
<if property="release.packaged.data" value="true">
<mkdir
dir="${packaged.data.dir}"/>
<copy file="${current.file}"
tofile="${current.packaged.data.file}"/>
<echo
message="product.data.${i}.size=${current.disk.space}"
file="${current.packaged.data.properties.file}"/>
</if>
<!-- remove the temporary directory -->
<delete dir="${current.temp.dir}"/>
</if>
<!-- if the data does not need to be packaged -->
<if property="do.package.data.${i}" value="false">
<copy
file="${current.packaged.data.file}"
tofile="${current.file}"/>
<!-- fetch the real size data -->
<property
file="${current.packaged.data.properties.file}"/>
<set
property="current.disk.space"
source="product.data.${i}.size"/>
<sum
arg1="${product.disk.space}"
arg2="${current.disk.space}"
property="product.disk.space"/>
</if>
<!-- sign the resulting jar file -->
<if property="jarsigner.enabled" value="true">
<signjar
jar="${current.file}"
keystore="${jarsigner.keystore}"
storepass="${jarsigner.storepass}"
alias="${jarsigner.alias}"
maxmemory="${jarsigner.xmx}"/>
</if>
<!-- calculate the metadata for the file -->
<sizeof
file="${current.file}"
property="product.data.${i}.size"/>
<md5
file="${current.file}"
property="product.data.${i}.md5"/>
<set
property="product.data.${i}.correct.uri"
value="resource:${product.data.path}/${product.data.file.name}"/>
</for-each>
<!-- fetch the icon -->
<set
property="product.icon.file"
value="${package.dir}/${product.icon.path}"/>
<copy
file="${product.icon}"
tofile="${product.icon.file}"/>
<sizeof
file="${product.icon.file}"
property="product.icon.size"/>
<md5
file="${product.icon.file}"
property="product.icon.md5"/>
<set
property="product.icon.correct.uri"
value="${product.icon.uri}"/>
<!-- load product's localizing bundle and generate descriptor -->
<load-locales
basename="${product.bundle}"
list="product.locales.list"/>
<product-descriptor
file="${package.dir}/${package.descriptor.path}"/>
<!-- create the distributive jar file and sign it -->
<set
property="product.dist.file"
value="${dist.dir}/${product.dist.file.name}"/>
<jar basedir="${package.dir}"
destfile="${product.dist.file}"
compress="true">
<manifest>
<attribute
name="Product-Descriptor"
value="${package.descriptor.path}"/>
</manifest>
</jar>
<if property="jarsigner.enabled" value="true">
<signjar
jar="${product.dist.file}"
keystore="${jarsigner.keystore}"
storepass="${jarsigner.storepass}"
alias="${jarsigner.alias}"
maxmemory="${jarsigner.xmx}"/>
</if>
</target>
<!--
Builds the engine.
It runs the 'build-all' target on the engine's build script.
This target is only executed if the the ${build.engine} property was
set to 'true'.
This target is not intended to be called directly.
-->
<target name="-build-engine" depends="init" if="do.build.engine">
<exec executable="${ant.executable}"
dir="${engine.dir}"
failonerror="true"
failifexecutionfails="true">
<arg value="checkout,build"/>
<arg value="-Dwork.dir=${engine.work.dir}"/>
<arg value="-Ddist.dir=${engine.dist.dir}"/>
<arg value="-Dbuild.native=false"/>
<arg value="-Ddont.build.custom.tasks=true"/>
<arg value="-Dcustom.tasks.cls=${custom.tasks.cls}"/>
<arg value="-Dengine.dist.file.name=${engine.dist.file.name}"/>
<arg value="-Denvironment.properties=${environment.properties}"/>
</exec>
</target>
<!--
An empty hook.
It allows derivative scripts to perform arbitrary manipulations on the
data prior to it getting packaged. E.g. the netbeans ide build script
might want to remove the 'netbeans' directory and move its contents up one
level.
A special property - 'data.directory' will be set pointing to the
unzipped data.
This target is not intended to be called directly.
-->
<target name="-pre-package"/>
<!-- ============================================================================
Release
============================================================================= -->
<!--
Releases the product package to the registries server.
This target overrides the '-release' target in common.xml, providing the
custom functionality that is required for correctly releasing the product
package.
It is assumed that the product package has already been built, but a
dependency on the 'build' target is not defined, as it may be desirable
to build once and then release several times to different registries
servers.
This target is not intended to be called directly.
-->
<target name="-release">
<if property="release.to.server" value="true">
<echo message="Release URL is ${release.url}"/>
<echo message="Archive is ${product.dist.file}"/>
<release-package-server
url="${release.url}"
registry="${release.registry}"
uid="${release.parent.uid}"
version="${release.parent.version}"
platforms="${product.platforms}"
archive="${product.dist.file}"/>
</if>
<if property="release.to.server" value="false">
<echo message="Registry root is ${release.registry.dir}"/>
<echo message="Archive is ${product.dist.file}"/>
<release-package-filesystem
root="${release.registry.dir}"
uid="${release.parent.uid}"
version="${release.parent.version}"
platforms="${product.platforms}"
archive="${product.dist.file}"/>
</if>
</target>
<!-- ============================================================================
Default
============================================================================= -->
<!--
The default target.
Does nothing except printing the usage information.
-->
<target name="usage">
<echo>
This is the base build script for nbi product package and is not
intended to be called directly. In order to create a derivative
implementation script, see
${basedir}/.templates/product-template.xml
</echo>
</target>
</project>

Binary file not shown.

Binary file not shown.

@ -0,0 +1,49 @@
#
# The contents of this file are subject to the terms of the Common Development and
# Distribution License (the License). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html or
# http://www.netbeans.org/cddl.txt.
#
# When distributing Covered Code, include this CDDL Header Notice in each file and
# include the License file at http://www.netbeans.org/cddl.txt. If applicable, add
# the following below the CDDL Header, with the fields enclosed by brackets []
# replaced by your own identifying information:
#
# "Portions Copyrighted [year] [name of copyright owner]"
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
output.dir=${basedir}/build
jarsigner.enabled=false
pack200.enabled={pack200.enabled}
core.module.name=nbi
ext.module.name=ext
nbi.all.dir=${basedir}/nbi_all
nbi.core.dir=${nbi.all.dir}/${core.module.name}
nbi.ext.dir=${nbi.all.dir}/${ext.module.name}
temp.file=${nbi.all.dir}/temp.ant.tmp
environment.properties=${nbi.all.dir}/environment.properties
context.path.token=/nbi/dev
context.path.replacement=${context.path}
context.dir.token=ROOT = new File\\(".*?"\\);
context.dir.replacement=ROOT = new File\\("${context.dir}"\);
custom.tasks.cls={nbi.ant.tasks.jar}${path.separator}{nbi.registries.management.jar}${path.separator}{nbi.engine.jar}
nbi.engine.jar={nbi.engine.jar}
jdk.home={generator-jdk-location-forward-slashes}
bundles.release.dir={generated-installers-location-forward-slashes}
bundle.files.prefix={generated-installers-prefix}
target.platforms={product-platforms}
main.product.uid={product-uid}
main.product.version={product-version}

@ -0,0 +1,203 @@
<project name="build installers" default="build" basedir=".">
<property file="${basedir}/build.properties"/>
<property file="${basedir}/custom.properties"/>
<target name="build" depends="init,-build,-generate-bundles,post-build"/>
<target name="init" depends="-clean,-checkout,-init,-init-properties,-post-init-clean"/>
<target name="-clean-cvs" unless="no.checkout">
<delete dir="${nbi.all.dir}"/>
</target>
<target name="-clean" depends="-clean-cvs" unless="no.clean">
<delete dir="${output.dir}"/>
<delete dir="${nbi.ext.dir}/products/helloworld/build"/>
<delete dir="${nbi.ext.dir}/products/helloworld/dist"/>
<delete dir="${nbi.ext.dir}/engine/build"/>
<delete dir="${nbi.ext.dir}/engine/dist"/>
<!--<delete dir="${basedir}/cache"/>-->
</target>
<target name="post-build">
<delete dir="${output.dir}/registry-temp"/>
</target>
<target name="-checkout">
<copy todir="${nbi.all.dir}/.common">
<fileset dir="${basedir}/.common"/>
</copy>
<copy todir="${nbi.ext.dir}">
<fileset dir="${basedir}/ext">
</fileset>
</copy>
</target>
<target name="-init">
<taskdef
name="if"
classpath="${custom.tasks.cls}"
classname="org.netbeans.installer.infra.build.ant.If"/>
<taskdef
name="for-each"
classpath="${custom.tasks.cls}"
classname="org.netbeans.installer.infra.build.ant.ForEach"/>
<taskdef
name="set"
classpath="${custom.tasks.cls}"
classname="org.netbeans.installer.infra.build.ant.SetProperty"/>
<taskdef
name="create-bundle"
classpath="${custom.tasks.cls}"
classname="org.netbeans.installer.infra.build.ant.registries.CreateBundle"/>
<delete file="${temp.file}"/>
</target>
<target name="-init-properties">
<echo file="${nbi.all.dir}/environment.tmp" encoding="utf-8">
checkout.sources=false
sources.dir=${nbi.all.dir}
cvs.module=ext
release.to.server=false
release.registry.dir=${output.dir}/registry-temp
dont.build.custom.tasks=true
custom.tasks.cls=${custom.tasks.cls}
build.engine=false
engine.dist.file.name=nbi-engine.jar
engine.dist.file=${nbi.core.dir}/infra/build/engine/dist/nbi-engine.jar
packaged.data.dir=${basedir}/cache/packaged
downloads.cache.dir=${basedir}/cache/raw
jarsigner.enabled=${jarsigner.enabled}
</echo>
<replace file="${nbi.all.dir}/environment.tmp" token="\" value="/" encoding="utf-8"/>
<native2ascii src="${nbi.all.dir}" dest="${nbi.all.dir}" encoding="utf-8" includes="environment.tmp" ext=".properties"/>
</target>
<target name="-post-init-clean">
<delete dir="${basedir}/cache/raw"/>
</target>
<target name="-build">
<delete dir="${output.dir}"/>
<mkdir dir="${output.dir}"/>
<mkdir dir="${bundles.release.dir}"/>
<mkdir dir="${output.dir}/components"/>
<property name="engine.dist.file.name" value="nbi-engine.jar"/>
<echo message="BUILDING HELLOWORLD EXT ENGINE =================================="/>
<ant dir="${nbi.ext.dir}/infra/build/engine" target="release-all">
<property
name="basedir"
value="${nbi.ext.dir}/infra/build/engine"/>
<property
name="environment.properties"
value="${environment.properties}"/>
<property
name="core.engine.dist.file"
value="${nbi.engine.jar}"/>
</ant>
<echo message="BUILDING HELLOWORLD PRODUCT =================================="/>
<ant dir="${nbi.ext.dir}/infra/build/products/helloworld" target="release-all">
<property
name="basedir"
value="${nbi.ext.dir}/infra/build/products/helloworld"/>
<property
name="environment.properties"
value="${environment.properties}"/>
<property
name="dist.dir"
value="${output.dir}/components"/>
<property
name="release.parent.uid"
value=""/>
<property
name="release.parent.version"
value=""/>
<property
name="release.parent.platforms"
value=""/>
<property
name="engine.dist.file"
value="${output.dir}/registry-temp/engine.jar"/>
</ant>
</target>
<target name="-generate-bundles">
<for-each property="platform" list="${target.platforms}" separator=" ">
<condition property="bundle.extention.${platform}" value="exe">
<contains string="${platform}" substring="windows"/>
</condition>
<condition property="bundle.extention.${platform}" value="sh">
<or>
<contains string="${platform}" substring="linux"/>
<contains string="${platform}" substring="solaris"/>
</or>
</condition>
<condition property="bundle.extention.${platform}" value="zip">
<contains string="${platform}" substring="macosx"/>
</condition>
<set property="bundle.extention" source="bundle.extention.${platform}"/>
<create-bundle root="${output.dir}/registry-temp"
platform="${platform}"
target="${bundles.release.dir}/${bundle.files.prefix}-${platform}.${bundle.extention}">
<!--normen-->
<component uid="${main.product.uid}" version="${main.product.version}"/><!--0.8.0.0.0-->
</create-bundle>
<if property="bundle.extention" value="zip">
<antcall target="zip-to-tgz">
<param name="input.file" value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
<param name="output.file" value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.tgz"/>
</antcall>
<delete file="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
</if>
</for-each>
<echo>Installer(s) for [${target.platforms}] are available at ${bundles.release.dir}</echo>
</target>
<target name="zip-to-tgz">
<set property="tar.tmpdir"
value="${bundles.release.dir}/tempdir"/>
<mkdir dir="${tar.tmpdir}"/>
<unzip
src="${input.file}"
dest="${tar.tmpdir}"/>
<tar tarfile="${output.file}"
compression="gzip">
<tarfileset dir="${tar.tmpdir}" mode="644">
<include name="**/*.*"/>
<exclude name="**/executable"/>
</tarfileset>
<tarfileset dir="${tar.tmpdir}" mode="755">
<include name="**/executable"/>
</tarfileset>
</tar>
<delete dir="${tar.tmpdir}"/>
</target>
</project>

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="helloworld" default="default" basedir=".">
<description>Builds, tests, and runs the project helloworld.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="helloworld-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>

@ -0,0 +1,41 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
product.display.name={product-name}
product.description={product-description}

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -0,0 +1 @@
Configuration-Logic-Class: org.mycompany.ConfigurationLogic

@ -0,0 +1,631 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
*** GENERATED FROM project.xml - DO NOT EDIT ***
*** EDIT ../build.xml INSTEAD ***
For the purpose of easier reading the script
is divided into following sections:
- initialization
- compilation
- jar
- execution
- debugging
- javadoc
- junit compilation
- junit execution
- junit debugging
- applet
- cleanup
-->
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="helloworld-impl">
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
<!--
======================
INITIALIZATION SECTION
======================
-->
<target name="-pre-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init" name="-init-private">
<property file="nbproject/private/config.properties"/>
<property file="nbproject/private/configs/${config}.properties"/>
<property file="nbproject/private/private.properties"/>
</target>
<target depends="-pre-init,-init-private" name="-init-user">
<property file="${user.properties.file}"/>
<!-- The two properties below are usually overridden -->
<!-- by the active platform. Just a fallback. -->
<property name="default.javac.source" value="1.4"/>
<property name="default.javac.target" value="1.4"/>
</target>
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
<property file="nbproject/configs/${config}.properties"/>
<property file="nbproject/project.properties"/>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
<condition property="manifest.available+main.class">
<and>
<isset property="manifest.available"/>
<isset property="main.class"/>
<not>
<equals arg1="${main.class}" arg2="" trim="true"/>
</not>
</and>
</condition>
<condition property="manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class}"/>
<isset property="libs.CopyLibs.classpath"/>
</and>
</condition>
<condition property="have.tests">
<or>
<available file="${test.src.dir}"/>
</or>
</condition>
<condition property="have.sources">
<or>
<available file="${src.dir}"/>
</or>
</condition>
<condition property="netbeans.home+have.tests">
<and>
<isset property="netbeans.home"/>
<isset property="have.tests"/>
</and>
</condition>
<condition property="no.javadoc.preview">
<and>
<isset property="javadoc.preview"/>
<isfalse value="${javadoc.preview}"/>
</and>
</condition>
<property name="run.jvmargs" value=""/>
<property name="javac.compilerargs" value=""/>
<property name="work.dir" value="${basedir}"/>
<condition property="no.deps">
<and>
<istrue value="${no.dependencies}"/>
</and>
</condition>
<property name="javac.debug" value="true"/>
<property name="javadoc.preview" value="true"/>
<property name="application.args" value=""/>
<property name="source.encoding" value="${file.encoding}"/>
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
<and>
<isset property="javadoc.encoding"/>
<not>
<equals arg1="${javadoc.encoding}" arg2=""/>
</not>
</and>
</condition>
<property name="javadoc.encoding.used" value="${source.encoding}"/>
<property name="includes" value="**"/>
<property name="excludes" value=""/>
<property name="do.depend" value="false"/>
<condition property="do.depend.true">
<istrue value="${do.depend}"/>
</condition>
<condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
<and>
<isset property="jaxws.endorsed.dir"/>
<available file="nbproject/jaxws-build.xml"/>
</and>
</condition>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
<fail unless="src.dir">Must set src.dir</fail>
<fail unless="test.src.dir">Must set test.src.dir</fail>
<fail unless="build.dir">Must set build.dir</fail>
<fail unless="dist.dir">Must set dist.dir</fail>
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
<fail unless="dist.jar">Must set dist.jar</fail>
</target>
<target name="-init-macrodef-property">
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute name="name"/>
<attribute name="value"/>
<sequential>
<property name="@{name}" value="${@{value}}"/>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-javac">
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="${javac.debug}" name="debug"/>
<attribute default="" name="sourcepath"/>
<element name="customize" optional="true"/>
<sequential>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
<classpath>
<path path="@{classpath}"/>
</classpath>
<compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
<customize/>
</javac>
</sequential>
</macrodef>
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<sequential>
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</depend>
</sequential>
</macrodef>
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${build.classes.dir}" name="destdir"/>
<sequential>
<fail unless="javac.includes">Must set javac.includes</fail>
<pathconvert pathsep="," property="javac.includes.binary">
<path>
<filelist dir="@{destdir}" files="${javac.includes}"/>
</path>
<globmapper from="*.java" to="*.class"/>
</pathconvert>
<delete>
<files includes="${javac.includes.binary}"/>
</delete>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-junit">
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
</batchtest>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg line="${run.jvmargs}"/>
</junit>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-nbjpda">
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="name"/>
<attribute default="${debug.classpath}" name="classpath"/>
<attribute default="" name="stopclassname"/>
<sequential>
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
<classpath>
<path path="@{classpath}"/>
</classpath>
</nbjpdastart>
</sequential>
</macrodef>
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${build.classes.dir}" name="dir"/>
<sequential>
<nbjpdareload>
<fileset dir="@{dir}" includes="${fix.includes}*.class"/>
</nbjpdareload>
</sequential>
</macrodef>
</target>
<target name="-init-debug-args">
<property name="version-output" value="java version &quot;${ant.java.version}"/>
<condition property="have-jdk-older-than-1.4">
<or>
<contains string="${version-output}" substring="java version &quot;1.0"/>
<contains string="${version-output}" substring="java version &quot;1.1"/>
<contains string="${version-output}" substring="java version &quot;1.2"/>
<contains string="${version-output}" substring="java version &quot;1.3"/>
</or>
</condition>
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
<istrue value="${have-jdk-older-than-1.4}"/>
</condition>
</target>
<target depends="-init-debug-args" name="-init-macrodef-debug">
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${main.class}" name="classname"/>
<attribute default="${debug.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-java">
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="classname"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="${run.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}"/>
</jar>
</presetdef>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
<!--
===================
COMPILATION SECTION
===================
-->
<target depends="init" name="deps-jar" unless="no.deps">
<ant antfile="${project.Core_NBI_Engine}/build.xml" inheritall="false" target="jar"/>
</target>
<target depends="init,deps-jar" name="-pre-pre-compile">
<mkdir dir="${build.classes.dir}"/>
</target>
<target name="-pre-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-depend">
<j2seproject3:depend/>
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
<j2seproject3:javac/>
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
<target name="-pre-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile/>
<j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
</target>
<target name="-post-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
<!--
====================
JAR BUILDING SECTION
====================
-->
<target depends="init" name="-pre-pre-jar">
<dirname file="${dist.jar}" property="dist.jar.dir"/>
<mkdir dir="${dist.jar.dir}"/>
</target>
<target name="-pre-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
<j2seproject1:jar/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
<j2seproject1:jar manifest="${manifest.file}">
<j2seproject1:manifest>
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
</j2seproject1:manifest>
</j2seproject1:jar>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<pathconvert property="run.classpath.with.dist.jar">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
</pathconvert>
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
=================
-->
<target depends="init,compile" description="Run a main class." name="run">
<j2seproject1:java>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject1:java>
</target>
<target name="-do-not-recompile">
<property name="javac.includes.binary" value=""/>
</target>
<target depends="init,-do-not-recompile,compile-single" name="run-single">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<j2seproject1:java classname="${run.class}"/>
</target>
<!--
=================
DEBUGGING SECTION
=================
-->
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
<j2seproject1:nbjpdastart name="${debug.class}"/>
</target>
<target depends="init,compile" name="-debug-start-debuggee">
<j2seproject3:debug>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
</target>
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
<j2seproject3:debug classname="${debug.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
<target depends="init" name="-pre-debug-fix">
<fail unless="fix.includes">Must set fix.includes</fail>
<property name="javac.includes" value="${fix.includes}.java"/>
</target>
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
<j2seproject1:nbjpdareload/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
<!--
===============
JAVADOC SECTION
===============
-->
<target depends="init" name="-javadoc-build">
<mkdir dir="${dist.javadoc.dir}"/>
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
<path path="${javac.classpath}"/>
</classpath>
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
<filename name="**/*.java"/>
</fileset>
</javadoc>
</target>
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
</target>
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
<!--
=========================
JUNIT COMPILATION SECTION
=========================
-->
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
<mkdir dir="${build.test.classes.dir}"/>
</target>
<target name="-pre-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-test-depend">
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
<target name="-pre-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
<!--
=======================
JUNIT EXECUTION SECTION
=======================
-->
<target depends="init" if="have.tests" name="-pre-test-run">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
<j2seproject3:junit testincludes="**/*Test.java"/>
</target>
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init" if="have.tests" name="test-report"/>
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
<target depends="init" if="have.tests" name="-pre-test-run-single">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
<j2seproject3:junit excludes="" includes="${test.includes}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
<!--
=======================
JUNIT DEBUGGING SECTION
=======================
-->
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
<delete file="${test.report.file}"/>
<mkdir dir="${build.test.results.dir}"/>
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
<customize>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<arg value="${test.class}"/>
<arg value="showoutput=true"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
<!--
=========================
APPLET EXECUTION SECTION
=========================
-->
<target depends="init,compile-single" name="run-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject1:java classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject1:java>
</target>
<!--
=========================
APPLET DEBUGGING SECTION
=========================
-->
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject3:debug classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
<!--
===============
CLEANUP SECTION
===============
-->
<target depends="init" name="deps-clean" unless="no.deps">
<ant antfile="${project.Core_NBI_Engine}/build.xml" inheritall="false" target="clean"/>
</target>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<target name="-post-clean">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
</project>

@ -0,0 +1,8 @@
build.xml.data.CRC32=b5c7f54a
build.xml.script.CRC32=16bbb630
build.xml.stylesheet.CRC32=be360661
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=b5c7f54a
nbproject/build-impl.xml.script.CRC32=815f74ea
nbproject/build-impl.xml.stylesheet.CRC32=f1d9da08

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
</project-private>

@ -0,0 +1,62 @@
application.title=helloworld
application.vendor=dlm198383
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/helloworld.jar
dist.javadoc.dir=${dist.dir}/javadoc
excludes=
includes=**
jar.compress=false
javac.classpath=\
${reference.Core_NBI_Engine.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
project.Core_NBI_Engine=../../../../nbi/engine
reference.Core_NBI_Engine.jar=${project.Core_NBI_Engine}/dist/nbi-engine.jar
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>helloworld</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
<reference>
<foreign-project>Core_NBI_Engine</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
</references>
</configuration>
</project>

@ -0,0 +1,22 @@
CL.app.name={product-simple-name}
CL.desktop.shortcut.name={product-name}
CL.desktop.shortcut.description=
CL.desktop.shortcut.path=
CL.unix.icon.name={product-icon-name}
CL.unix.icon.resource=org/mycompany/{product-icon-name}
CL.start.menu.shortcut.name={product-name}
CL.start.menu.shortcut.name.macosx={product-name}
CL.start.menu.shortcut.description=
CL.start.menu.shortcut.path=
CL.install.desktop=Creating shortcut on desktop
CL.install.start.menu=Creating shortcut in start menu
CL.uninstall.start.menu=Removing Start Menu entries
CL.uninstall.desktop=Removing desktop shortcut
CL.uninstall.remove.userdir=Removing {product-name} userdir
CL.uninstall.error.start.menu=Cannot remove desktop shortcut
CL.uninstall.error.desktop=Cannot remove Start Menu entries

@ -0,0 +1,451 @@
package org.mycompany;
import java.util.List;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
import java.util.Map;
import org.mycompany.wizard.panels.HelloWorldPanel;
import org.mycompany.installer.utils.applications.NetBeansRCPUtils;
import org.netbeans.installer.product.components.ProductConfigurationLogic;
import org.netbeans.installer.product.components.Product;
import org.netbeans.installer.utils.FileUtils;
import org.netbeans.installer.utils.helper.RemovalMode;
import org.netbeans.installer.utils.exceptions.InitializationException;
import org.netbeans.installer.utils.exceptions.InstallationException;
import org.netbeans.installer.utils.exceptions.UninstallationException;
import org.netbeans.installer.utils.progress.Progress;
import org.netbeans.installer.utils.system.shortcut.FileShortcut;
import org.netbeans.installer.utils.system.shortcut.LocationType;
import org.netbeans.installer.utils.system.shortcut.Shortcut;
import org.netbeans.installer.utils.SystemUtils;
import org.netbeans.installer.utils.LogManager;
import org.netbeans.installer.utils.ResourceUtils;
import org.netbeans.installer.utils.StreamUtils;
import org.netbeans.installer.utils.StringUtils;
import org.netbeans.installer.utils.exceptions.NativeException;
import org.netbeans.installer.wizard.Wizard;
import org.netbeans.installer.wizard.components.WizardComponent;
public class ConfigurationLogic extends ProductConfigurationLogic {
private List<WizardComponent> wizardComponents;
// constructor //////////////////////////////////////////////////////////////////
public ConfigurationLogic() throws InitializationException {
wizardComponents = Wizard.loadWizardComponents(
WIZARD_COMPONENTS_URI,
getClass().getClassLoader());
}
public List<WizardComponent> getWizardComponents() {
return wizardComponents;
}
@Override
public boolean allowModifyMode() {
return false;
}
@Override
public void install(Progress progress) throws InstallationException {
final Product product = getProduct();
final File installLocation = product.getInstallationLocation();
//final FilesList filesList = product.getInstalledFiles();
String appName=ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name");
if (SystemUtils.isMacOS()) {
//normen: use parent folder of install dir for icon
File f = new File(installLocation.getParentFile(), ICON_MACOSX);
if(!f.exists()) {
try {
FileUtils.writeFile(f,
ResourceUtils.getResource(ICON_MACOSX_RESOURCE,
getClass().getClassLoader()));
getProduct().getInstalledFiles().add(f);
} catch (IOException e) {
LogManager.log(
"... cannot handle icns icon " + f, e); // NOI18N
}
}
//normen: rename executable
File shortcut=new File(installLocation.getParentFile().getParent()+"/MacOS/executable");
if(shortcut.exists()){
shortcut.renameTo(new File(installLocation.getParentFile().getParent()+"/MacOS/"+appName));
}
//normen: replace icon + app in Info.plist
try {
File plist=new File(installLocation.getParentFile().getParentFile(),"Info.plist");
FileUtils.modifyFile(plist, "icon.icns", appName+".icns");
FileUtils.modifyFile(plist, "executable", appName);
} catch (Exception e) {
e.printStackTrace();
}
}
if (Boolean.parseBoolean(getProperty(HelloWorldPanel.CREATE_DESKTOP_SHORTCUT_PROPERTY))) {
LogManager.logIndent(
"creating the desktop shortcut for the application"); // NOI18N
if (!SystemUtils.isMacOS()) {
try {
progress.setDetail(getString("CL.install.desktop")); // NOI18N
if (SystemUtils.isCurrentUserAdmin()) {
LogManager.log(
"... current user is an administrator " + // NOI18N
"-- creating the shortcut for all users"); // NOI18N
SystemUtils.createShortcut(
getDesktopShortcut(installLocation),
LocationType.ALL_USERS_DESKTOP);
product.setProperty(
DESKTOP_SHORTCUT_LOCATION_PROPERTY,
ALL_USERS_PROPERTY_VALUE);
} else {
LogManager.log(
"... current user is an ordinary user " + // NOI18N
"-- creating the shortcut for the current " + // NOI18N
"user only"); // NOI18N
SystemUtils.createShortcut(
getDesktopShortcut(installLocation),
LocationType.CURRENT_USER_DESKTOP);
getProduct().setProperty(
DESKTOP_SHORTCUT_LOCATION_PROPERTY,
CURRENT_USER_PROPERTY_VALUE);
}
} catch (NativeException e) {
LogManager.unindent();
LogManager.log(
getString("CL.install.error.desktop"), // NOI18N
e);
}
} else {
LogManager.log(
"... skipping this step as we're on Mac OS"); // NOI18N
}
}
LogManager.logUnindent(
"... done"); // NOI18N
/////////////////////////////////////////////
// create start menu shortcut
if (Boolean.parseBoolean(getProperty(HelloWorldPanel.CREATE_START_MENU_SHORTCUT_PROPERTY))) {
LogManager.logIndent(
"creating the start menu shortcut for the application"); // NOI18N
try {
progress.setDetail(getString("CL.install.start.menu")); // NOI18N
if (SystemUtils.isCurrentUserAdmin()) {
LogManager.log(
"... current user is an administrator " + // NOI18N
"-- creating the shortcut for all users"); // NOI18N
SystemUtils.createShortcut(
getStartMenuShortcut(installLocation),
LocationType.ALL_USERS_START_MENU);
getProduct().setProperty(
START_MENU_SHORTCUT_LOCATION_PROPERTY,
ALL_USERS_PROPERTY_VALUE);
} else {
LogManager.log(
"... current user is an ordinary user " + // NOI18N
"-- creating the shortcut for the current " + // NOI18N
"user only"); // NOI18N
SystemUtils.createShortcut(
getStartMenuShortcut(installLocation),
LocationType.CURRENT_USER_START_MENU);
getProduct().setProperty(
START_MENU_SHORTCUT_LOCATION_PROPERTY,
CURRENT_USER_PROPERTY_VALUE);
}
} catch (NativeException e) {
LogManager.log(
getString("CL.install.error.start.menu"), // NOI18N
e);
}
LogManager.logUnindent(
"... done"); // NOI18N
}
}
@Override
public void uninstall(Progress progress) throws UninstallationException {
final Product product = getProduct();
final File installLocation = product.getInstallationLocation();
//NetBeansUtils.warnNetbeansRunning(installLocation);
/////////////////////////////////////////////////////////////////////////////
if (Boolean.parseBoolean(getProperty(HelloWorldPanel.CREATE_START_MENU_SHORTCUT_PROPERTY))) {
try {
progress.setDetail(getString("CL.uninstall.start.menu")); // NOI18N
final String shortcutLocation =
getProduct().getProperty(START_MENU_SHORTCUT_LOCATION_PROPERTY);
if ((shortcutLocation == null)
|| shortcutLocation.equals(CURRENT_USER_PROPERTY_VALUE)) {
SystemUtils.removeShortcut(
getStartMenuShortcut(installLocation),
LocationType.CURRENT_USER_START_MENU,
true);
} else {
SystemUtils.removeShortcut(
getStartMenuShortcut(installLocation),
LocationType.ALL_USERS_START_MENU,
true);
}
} catch (NativeException e) {
LogManager.log(
getString("CL.uninstall.error.start.menu"), // NOI18N
e);
}
}
/////////////////////////////////////////////////////////////////////////////
if (Boolean.parseBoolean(getProperty(HelloWorldPanel.CREATE_DESKTOP_SHORTCUT_PROPERTY))) {
if (!SystemUtils.isMacOS()) {
try {
progress.setDetail(getString("CL.uninstall.desktop")); // NOI18N
final String shortcutLocation = getProduct().getProperty(
DESKTOP_SHORTCUT_LOCATION_PROPERTY);
if ((shortcutLocation == null)
|| shortcutLocation.equals(CURRENT_USER_PROPERTY_VALUE)) {
SystemUtils.removeShortcut(
getDesktopShortcut(installLocation),
LocationType.CURRENT_USER_DESKTOP,
false);
} else {
SystemUtils.removeShortcut(
getDesktopShortcut(installLocation),
LocationType.ALL_USERS_DESKTOP,
false);
}
} catch (NativeException e) {
LogManager.log(
getString("CL.uninstall.error.desktop"), // NOI18N
e);
}
}
}
if (Boolean.getBoolean("remove.app.userdir")) {
try {
progress.setDetail(getString("CL.uninstall.remove.userdir")); // NOI18N
LogManager.logIndent("Removing application`s userdir... ");
File userDir = NetBeansRCPUtils.getApplicationUserDirFile(installLocation);
LogManager.log("... application userdir location : " + userDir);
if (FileUtils.exists(userDir) && FileUtils.canWrite(userDir)) {
FileUtils.deleteFile(userDir, true);
FileUtils.deleteEmptyParents(userDir);
}
LogManager.log("... application userdir totally removed");
} catch (IOException e) {
LogManager.log("Can`t remove application userdir", e);
} finally {
LogManager.unindent();
}
}
/////////////////////////////////////////////////////////////////////////////
//remove cluster/update files
/*
try {
progress.setDetail(getString("CL.uninstall.update.files")); // NOI18N
for(String cluster : CLUSTERS) {
File updateDir = new File(installLocation, cluster + File.separator + "update");
if ( updateDir.exists()) {
FileUtils.deleteFile(updateDir, true);
}
}
} catch (IOException e) {
LogManager.log(
getString("CL.uninstall.error.update.files"), // NOI18N
e);
}
*/
/////////////////////////////////////////////////////////////////////////////
progress.setPercentage(Progress.COMPLETE);
}
@Override
public String getExecutable() {
if (SystemUtils.isWindows()) {
return EXECUTABLE_WINDOWS;
} else {
return EXECUTABLE_UNIX;
}
}
@Override
public String getIcon() {
if (SystemUtils.isWindows()) {
return ICON_WINDOWS;
} else if (SystemUtils.isMacOS()) {
return ICON_MACOSX;
} else {
return ICON_UNIX;
}
}
public RemovalMode getRemovalMode() {
return RemovalMode.LIST;
}
@Override
public boolean registerInSystem() {
return true;
}
@Override
public boolean requireLegalArtifactSaving() {
return false;
}
@Override
public boolean requireDotAppForMacOs() {
return true;
}
@Override
public boolean wrapForMacOs() {
return true;
}
private Shortcut getDesktopShortcut(final File directory) {
return getShortcut(
getStrings("CL.desktop.shortcut.name"), // NOI18N
getStrings("CL.desktop.shortcut.description"), // NOI18N
getString("CL.desktop.shortcut.path"), // NOI18N
directory);
}
private Shortcut getStartMenuShortcut(final File directory) {
if (SystemUtils.isMacOS()) {
return getShortcut(
getStrings("CL.start.menu.shortcut.name.macosx"), // NOI18N
getStrings("CL.start.menu.shortcut.description"), // NOI18N
getString("CL.start.menu.shortcut.path"), // NOI18N
directory);
} else {
return getShortcut(
getStrings("CL.start.menu.shortcut.name"), // NOI18N
getStrings("CL.start.menu.shortcut.description"), // NOI18N
getString("CL.start.menu.shortcut.path"), // NOI18N
directory);
}
}
private Shortcut getShortcut(
final Map<Locale, String> names,
final Map<Locale, String> descriptions,
final String relativePath,
final File location) {
final File icon;
final File executable;
if (SystemUtils.isWindows()) {
icon = new File(location, ICON_WINDOWS);
} else if (SystemUtils.isMacOS()) {
icon = new File(location, ICON_MACOSX);
} else {
icon = new File(location, ICON_UNIX);
LogManager.log("... icon file: " + icon);
if(!FileUtils.exists(icon)) {
LogManager.log("... icon file does not exist: " + icon);
InputStream is = null;
is = ResourceUtils.getResource(ICON_UNIX_RESOURCE, this.getClass().getClassLoader());
if(is!=null) {
FileOutputStream fos =null;
try {
fos = new FileOutputStream(icon);
StreamUtils.transferData(is, fos);
is.close();
fos.close();
getProduct().getInstalledFiles().add(icon);
} catch (IOException e) {
LogManager.log(e);
} finally {
if(fos!=null) {
try {
fos.close();
} catch (IOException e) {
}
}
}
}
}
}
if (SystemUtils.isWindows()) {
executable = new File(location, EXECUTABLE_WINDOWS);
} else {
executable = new File(location, EXECUTABLE_UNIX);
}
final String name = names.get(new Locale(StringUtils.EMPTY_STRING));
final FileShortcut shortcut = new FileShortcut(name, executable);
shortcut.setNames(names);
shortcut.setDescriptions(descriptions);
shortcut.setCategories(SHORTCUT_CATEGORIES);
shortcut.setFileName(SHORTCUT_FILENAME);
shortcut.setIcon(icon);
shortcut.setRelativePath(relativePath);
shortcut.setWorkingDirectory(location);
shortcut.setModifyPath(true);
return shortcut;
}
public static final String SHORTCUT_FILENAME =
ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name") + ".desktop"; // NOI18N
public static final String[] SHORTCUT_CATEGORIES = new String[]{
"Application"
};
public static final String BIN_SUBDIR =
"bin/";
public static final String EXECUTABLE_WINDOWS =
BIN_SUBDIR
+ ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name") + ".exe"; // NOI18N
public static final String EXECUTABLE_UNIX =
BIN_SUBDIR
+ ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name"); // NOI18N
public static final String ICON_WINDOWS =
EXECUTABLE_WINDOWS;
public static final String ICON_UNIX =
ResourceUtils.getString(ConfigurationLogic.class,
"CL.unix.icon.name"); // NOI18N
public static final String ICON_UNIX_RESOURCE =
ResourceUtils.getString(ConfigurationLogic.class,
"CL.unix.icon.resource"); // NOI18N
public static final String ICON_MACOSX =
ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name") + ".icns"; // NOI18N
public static final String ICON_MACOSX_RESOURCE =
"org/mycompany/" + ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name") + ".icns"; // NOI18N
public static final String WIZARD_COMPONENTS_URI =
"resource:" + // NOI18N
"org/mycompany/wizard.xml"; // NOI18N
private static final String DESKTOP_SHORTCUT_LOCATION_PROPERTY =
"desktop.shortcut.location"; // NOI18N
private static final String START_MENU_SHORTCUT_LOCATION_PROPERTY =
"start.menu.shortcut.location"; // NOI18N
private static final String ALL_USERS_PROPERTY_VALUE =
"all.users"; // NOI18N
private static final String CURRENT_USER_PROPERTY_VALUE =
"current.user"; // NOI18N
}

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wizard-components.xsd">
<component class="org.mycompany.wizard.panels.HelloWorldPanel"/>
</wizard>

@ -0,0 +1,51 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
################################################################################
# HelloWorldPanel.java
P.title={product-name} Installation
P.description=Choose destination folder.
P.destination.label.text=&Install {product-name} to:
P.destination.button.text=B&rowse.....
P.create.desktop.shortcut=Create Desktop icon
P.create.start.menu.shortcut.windows=Create Start menu entry
P.create.start.menu.shortcut.unix=Create shortcut in Applications menu
P.create.start.menu.shortcut.macosx=Create icon in Dock

@ -0,0 +1,184 @@
package org.mycompany.wizard.panels;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import org.netbeans.installer.utils.ResourceUtils;
import org.netbeans.installer.utils.StringUtils;
import org.netbeans.installer.utils.SystemUtils;
import org.netbeans.installer.utils.helper.swing.NbiCheckBox;
import org.netbeans.installer.wizard.components.panels.DestinationPanel;
import org.netbeans.installer.wizard.containers.SwingContainer;
import org.netbeans.installer.wizard.ui.SwingUi;
import org.netbeans.installer.wizard.ui.WizardUi;
/**
*
* @author Dmitry Lipin
*/
public class HelloWorldPanel extends DestinationPanel {
public HelloWorldPanel() {
setProperty(TITLE_PROPERTY,
DEFAULT_TITLE);
setProperty(DESCRIPTION_PROPERTY,
DEFAULT_DESCRIPTION);
setProperty(DESTINATION_LABEL_TEXT_PROPERTY,
DEFAULT_DESTINATION_LABEL_TEXT);
setProperty(DESTINATION_BUTTON_TEXT_PROPERTY,
DEFAULT_DESTINATION_BUTTON_TEXT);
}
@Override
public WizardUi getWizardUi() {
if (wizardUi == null) {
wizardUi = new HelloWorldPanelUi(this);
}
return wizardUi;
}
@Override
public void initialize() {
super.initialize();
if(getWizard().getProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY) == null) {
getWizard().setProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY, "" + true);
}
if(getWizard().getProperty(CREATE_START_MENU_SHORTCUT_PROPERTY) == null) {
getWizard().setProperty(CREATE_START_MENU_SHORTCUT_PROPERTY, "" + true);
}
}
public static class HelloWorldPanelUi extends DestinationPanelUi {
protected HelloWorldPanel panel;
public HelloWorldPanelUi(HelloWorldPanel panel) {
super(panel);
this.panel = panel;
}
public SwingUi getSwingUi(SwingContainer container) {
if (swingUi == null) {
swingUi = new HelloWorldPanelSwingUi(panel, container);
}
return super.getSwingUi(container);
}
}
public static class HelloWorldPanelSwingUi extends DestinationPanelSwingUi {
protected HelloWorldPanel panel;
private NbiCheckBox desktopShortcutComboBox;
private NbiCheckBox startMenuShortcutComboBox;
public HelloWorldPanelSwingUi(
final HelloWorldPanel panel,
final SwingContainer container) {
super(panel, container);
this.panel = panel;
initComponents();
}
// protected ////////////////////////////////////////////////////////////////
@Override
protected void initialize() {
desktopShortcutComboBox.setText(CREATE_DESKTOP_SHORTCUT_NAME);
desktopShortcutComboBox.setSelected(false);
if(Boolean.parseBoolean(panel.getWizard().getProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY))) {
desktopShortcutComboBox.doClick();
}
startMenuShortcutComboBox.setText(
SystemUtils.isWindows() ? CREATE_START_MENU_SHORTCUT_NAME_WINDOWS :
(SystemUtils.isMacOS() ? CREATE_START_MENU_SHORTCUT_NAME_MAC :
CREATE_START_MENU_SHORTCUT_NAME_UNIX));
startMenuShortcutComboBox.setSelected(false);
if(Boolean.parseBoolean(panel.getWizard().getProperty(CREATE_START_MENU_SHORTCUT_PROPERTY))) {
startMenuShortcutComboBox.doClick();
}
super.initialize();
}
@Override
protected void saveInput() {
super.saveInput();
panel.getWizard().setProperty(
CREATE_DESKTOP_SHORTCUT_PROPERTY,
StringUtils.EMPTY_STRING + desktopShortcutComboBox.isSelected());
panel.getWizard().setProperty(
CREATE_START_MENU_SHORTCUT_PROPERTY,
StringUtils.EMPTY_STRING + startMenuShortcutComboBox.isSelected());
}
@Override
protected String validateInput() {
String errorMessage = super.validateInput();
return errorMessage;
}
// private //////////////////////////////////////////////////////////////////
private void initComponents() {
// selectedLocationField ////////////////////////////////////////////////
desktopShortcutComboBox = new NbiCheckBox();
startMenuShortcutComboBox = new NbiCheckBox();
// this /////////////////////////////////////////////////////////////////
add(desktopShortcutComboBox, new GridBagConstraints(
0, 2, // x, y
2, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.LINE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(15, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
add(startMenuShortcutComboBox, new GridBagConstraints(
0, 3, // x, y
2, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.LINE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(7, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
}
}
/////////////////////////////////////////////////////////////////////////////////
// Constants
public static final String DEFAULT_TITLE =
ResourceUtils.getString(HelloWorldPanel.class,
"P.title"); // NOI18N
public static final String DEFAULT_DESCRIPTION =
ResourceUtils.getString(HelloWorldPanel.class,
"P.description"); // NOI18N
public static final String DEFAULT_DESTINATION_LABEL_TEXT =
ResourceUtils.getString(HelloWorldPanel.class,
"P.destination.label.text"); // NOI18N
public static final String DEFAULT_DESTINATION_BUTTON_TEXT =
ResourceUtils.getString(HelloWorldPanel.class,
"P.destination.button.text"); // NOI18N
public static final String CREATE_DESKTOP_SHORTCUT_NAME =
ResourceUtils.getString(HelloWorldPanel.class,
"P.create.desktop.shortcut"); // NOI18N
public static final String CREATE_START_MENU_SHORTCUT_NAME_WINDOWS =
ResourceUtils.getString(HelloWorldPanel.class,
"P.create.start.menu.shortcut.windows"); // NOI18N
public static final String CREATE_START_MENU_SHORTCUT_NAME_UNIX =
ResourceUtils.getString(HelloWorldPanel.class,
"P.create.start.menu.shortcut.unix"); // NOI18N
public static final String CREATE_START_MENU_SHORTCUT_NAME_MAC =
ResourceUtils.getString(HelloWorldPanel.class,
"P.create.start.menu.shortcut.macosx"); // NOI18N
public static final String CREATE_DESKTOP_SHORTCUT_PROPERTY =
"create.desktop.shortcut";
public static final String CREATE_START_MENU_SHORTCUT_PROPERTY =
"create.start.menu.shortcut";
}

@ -0,0 +1,41 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
jar.contents.list=data/engine.list
jar.contents.includes=native/** org/** com/apple/** data/clioptions.list data/engine*.properties

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<project name="Hello_World_Installer" default="default" basedir=".">
<import file="nbproject/build-impl.xml"/>
<property file="build.properties"/>
<target name="-post-compile" depends="-unjar-core-engine,create-jar-contents-list"/>
<target name="-unjar-core-engine">
<!-- Add the contents of the core engine to the engine we're building -->
<unjar
src="${reference.NBI_Engine.jar}"
dest="${build.classes.dir}"
overwrite="false"/>
</target>
<target name="create-jar-contents-list">
<pathconvert property="build.classes.dir.normalized" dirsep="/">
<path location="${build.classes.dir}"/>
</pathconvert>
<pathconvert pathsep="${line.separator}" property="engine.files" dirsep="/">
<fileset dir="${build.classes.dir}" includes="${jar.contents.includes}"/>
<mapper>
<chainedmapper>
<globmapper handledirsep="true" from="${build.classes.dir.normalized}/*" to="*"/>
</chainedmapper>
</mapper>
</pathconvert>
<echo file="${build.classes.dir}/${jar.contents.list}">${engine.files}</echo>
</target>
<target name="-post-jar">
<delete dir="${dist.dir}/lib"/>
</target>
</project>

@ -0,0 +1,2 @@
Manifest-Version: 1.0
Main-Class: org.netbeans.installer.Installer

@ -0,0 +1,646 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
*** GENERATED FROM project.xml - DO NOT EDIT ***
*** EDIT ../build.xml INSTEAD ***
For the purpose of easier reading the script
is divided into following sections:
- initialization
- compilation
- jar
- execution
- debugging
- javadoc
- junit compilation
- junit execution
- junit debugging
- applet
- cleanup
-->
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="HelloWorld_Engine-impl">
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
<!--
======================
INITIALIZATION SECTION
======================
-->
<target name="-pre-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init" name="-init-private">
<property file="nbproject/private/config.properties"/>
<property file="nbproject/private/configs/${config}.properties"/>
<property file="nbproject/private/private.properties"/>
</target>
<target depends="-pre-init,-init-private" name="-init-user">
<property file="${user.properties.file}"/>
<!-- The two properties below are usually overridden -->
<!-- by the active platform. Just a fallback. -->
<property name="default.javac.source" value="1.4"/>
<property name="default.javac.target" value="1.4"/>
</target>
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
<property file="nbproject/configs/${config}.properties"/>
<property file="nbproject/project.properties"/>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
<condition property="manifest.available+main.class">
<and>
<isset property="manifest.available"/>
<isset property="main.class"/>
<not>
<equals arg1="${main.class}" arg2="" trim="true"/>
</not>
</and>
</condition>
<condition property="manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class}"/>
<isset property="libs.CopyLibs.classpath"/>
</and>
</condition>
<condition property="have.tests">
<or>
<available file="${test.src.dir}"/>
</or>
</condition>
<condition property="have.sources">
<or>
<available file="${src.dir}"/>
</or>
</condition>
<condition property="netbeans.home+have.tests">
<and>
<isset property="netbeans.home"/>
<isset property="have.tests"/>
</and>
</condition>
<condition property="no.javadoc.preview">
<and>
<isset property="javadoc.preview"/>
<isfalse value="${javadoc.preview}"/>
</and>
</condition>
<property name="run.jvmargs" value=""/>
<property name="javac.compilerargs" value=""/>
<property name="work.dir" value="${basedir}"/>
<condition property="no.deps">
<and>
<istrue value="${no.dependencies}"/>
</and>
</condition>
<property name="javac.debug" value="true"/>
<property name="javadoc.preview" value="true"/>
<property name="application.args" value=""/>
<property name="source.encoding" value="${file.encoding}"/>
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
<and>
<isset property="javadoc.encoding"/>
<not>
<equals arg1="${javadoc.encoding}" arg2=""/>
</not>
</and>
</condition>
<property name="javadoc.encoding.used" value="${source.encoding}"/>
<property name="includes" value="**"/>
<property name="excludes" value=""/>
<property name="do.depend" value="false"/>
<condition property="do.depend.true">
<istrue value="${do.depend}"/>
</condition>
<condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
<and>
<isset property="jaxws.endorsed.dir"/>
<available file="nbproject/jaxws-build.xml"/>
</and>
</condition>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
<fail unless="src.dir">Must set src.dir</fail>
<fail unless="test.src.dir">Must set test.src.dir</fail>
<fail unless="build.dir">Must set build.dir</fail>
<fail unless="dist.dir">Must set dist.dir</fail>
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
<fail unless="dist.jar">Must set dist.jar</fail>
</target>
<target name="-init-macrodef-property">
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute name="name"/>
<attribute name="value"/>
<sequential>
<property name="@{name}" value="${@{value}}"/>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-javac">
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="${javac.debug}" name="debug"/>
<attribute default="/does/not/exist" name="sourcepath"/>
<element name="customize" optional="true"/>
<sequential>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
<classpath>
<path path="@{classpath}"/>
</classpath>
<compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
<customize/>
</javac>
</sequential>
</macrodef>
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<sequential>
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</depend>
</sequential>
</macrodef>
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${build.classes.dir}" name="destdir"/>
<sequential>
<fail unless="javac.includes">Must set javac.includes</fail>
<pathconvert pathsep="," property="javac.includes.binary">
<path>
<filelist dir="@{destdir}" files="${javac.includes}"/>
</path>
<globmapper from="*.java" to="*.class"/>
</pathconvert>
<delete>
<files includes="${javac.includes.binary}"/>
</delete>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-junit">
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
</batchtest>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg line="${run.jvmargs}"/>
</junit>
</sequential>
</macrodef>
</target>
<target depends="-init-debug-args" name="-init-macrodef-nbjpda">
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="name"/>
<attribute default="${debug.classpath}" name="classpath"/>
<attribute default="" name="stopclassname"/>
<sequential>
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</nbjpdastart>
</sequential>
</macrodef>
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${build.classes.dir}" name="dir"/>
<sequential>
<nbjpdareload>
<fileset dir="@{dir}" includes="${fix.classes}">
<include name="${fix.includes}*.class"/>
</fileset>
</nbjpdareload>
</sequential>
</macrodef>
</target>
<target name="-init-debug-args">
<property name="version-output" value="java version &quot;${ant.java.version}"/>
<condition property="have-jdk-older-than-1.4">
<or>
<contains string="${version-output}" substring="java version &quot;1.0"/>
<contains string="${version-output}" substring="java version &quot;1.1"/>
<contains string="${version-output}" substring="java version &quot;1.2"/>
<contains string="${version-output}" substring="java version &quot;1.3"/>
</or>
</condition>
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
<istrue value="${have-jdk-older-than-1.4}"/>
</condition>
<condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
<os family="windows"/>
</condition>
<condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
<isset property="debug.transport"/>
</condition>
</target>
<target depends="-init-debug-args" name="-init-macrodef-debug">
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${main.class}" name="classname"/>
<attribute default="${debug.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-java">
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="classname"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="${run.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}"/>
</jar>
</presetdef>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
<!--
===================
COMPILATION SECTION
===================
-->
<target depends="init" name="deps-jar" unless="no.deps">
<ant antfile="${project.NBI_Engine}/build.xml" inheritall="false" target="jar"/>
</target>
<target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
<target depends="init" name="-check-automatic-build">
<available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
</target>
<target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
<antcall target="clean"/>
</target>
<target depends="init,deps-jar" name="-pre-pre-compile">
<mkdir dir="${build.classes.dir}"/>
</target>
<target name="-pre-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-depend">
<j2seproject3:depend/>
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
<j2seproject3:javac/>
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
<target name="-pre-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile/>
<j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
</target>
<target name="-post-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
<!--
====================
JAR BUILDING SECTION
====================
-->
<target depends="init" name="-pre-pre-jar">
<dirname file="${dist.jar}" property="dist.jar.dir"/>
<mkdir dir="${dist.jar.dir}"/>
</target>
<target name="-pre-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
<j2seproject1:jar/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
<j2seproject1:jar manifest="${manifest.file}">
<j2seproject1:manifest>
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
</j2seproject1:manifest>
</j2seproject1:jar>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<pathconvert property="run.classpath.with.dist.jar">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
</pathconvert>
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
=================
-->
<target depends="init,compile" description="Run a main class." name="run">
<j2seproject1:java>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject1:java>
</target>
<target name="-do-not-recompile">
<property name="javac.includes.binary" value=""/>
</target>
<target depends="init,-do-not-recompile,compile-single" name="run-single">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<j2seproject1:java classname="${run.class}"/>
</target>
<!--
=================
DEBUGGING SECTION
=================
-->
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
<j2seproject1:nbjpdastart name="${debug.class}"/>
</target>
<target depends="init,compile" name="-debug-start-debuggee">
<j2seproject3:debug>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
</target>
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
<j2seproject3:debug classname="${debug.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
<target depends="init" name="-pre-debug-fix">
<fail unless="fix.includes">Must set fix.includes</fail>
<property name="javac.includes" value="${fix.includes}.java"/>
</target>
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
<j2seproject1:nbjpdareload/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
<!--
===============
JAVADOC SECTION
===============
-->
<target depends="init" name="-javadoc-build">
<mkdir dir="${dist.javadoc.dir}"/>
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
<path path="${javac.classpath}"/>
</classpath>
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
<filename name="**/*.java"/>
</fileset>
</javadoc>
</target>
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
</target>
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
<!--
=========================
JUNIT COMPILATION SECTION
=========================
-->
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
<mkdir dir="${build.test.classes.dir}"/>
</target>
<target name="-pre-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-test-depend">
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
<target name="-pre-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
<!--
=======================
JUNIT EXECUTION SECTION
=======================
-->
<target depends="init" if="have.tests" name="-pre-test-run">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
<j2seproject3:junit testincludes="**/*Test.java"/>
</target>
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init" if="have.tests" name="test-report"/>
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
<target depends="init" if="have.tests" name="-pre-test-run-single">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
<j2seproject3:junit excludes="" includes="${test.includes}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
<!--
=======================
JUNIT DEBUGGING SECTION
=======================
-->
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
<delete file="${test.report.file}"/>
<mkdir dir="${build.test.results.dir}"/>
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
<customize>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<arg value="${test.class}"/>
<arg value="showoutput=true"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
<!--
=========================
APPLET EXECUTION SECTION
=========================
-->
<target depends="init,compile-single" name="run-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject1:java classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject1:java>
</target>
<!--
=========================
APPLET DEBUGGING SECTION
=========================
-->
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject3:debug classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
<!--
===============
CLEANUP SECTION
===============
-->
<target depends="init" name="deps-clean" unless="no.deps">
<ant antfile="${project.NBI_Engine}/build.xml" inheritall="false" target="clean"/>
</target>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<target name="-post-clean">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
</project>

@ -0,0 +1,8 @@
build.xml.data.CRC32=8f661a73
build.xml.script.CRC32=f2f0e306
build.xml.stylesheet.CRC32=a12b3d02
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=32036222
nbproject/build-impl.xml.script.CRC32=ff4c3c7b
nbproject/build-impl.xml.stylesheet.CRC32=65b8de21

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
</project-private>

@ -0,0 +1,102 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
application.title=NetBeans Installer Engine
application.vendor=ks152834
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/nbi-engine.jar
dist.javadoc.dir=${dist.dir}/javadoc
excludes=
file.reference.reglib-src=../../reglib/src
includes=**
jar.compress=false
javac.classpath=\
${reference.NBI_Engine.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
main.class=org.netbeans.installer.Installer
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
project.NBI_Engine=../../nbi/engine
reference.NBI_Engine.jar=${project.NBI_Engine}/dist/nbi-engine.jar
run.classpath=\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=-Dnbi.product.bundled.registry.uri=file:/D:/temp/nbi-build/dist/registry-temp/registry.xml
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>HelloWorld Engine</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
<reference>
<foreign-project>NBI_Engine</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
</references>
</configuration>
</project>

@ -0,0 +1,89 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
nbi.wizard.components.instance.uri=resource:org/mycompany/installer/wizard/wizard-components.xml
nbi.wizard.ui.swing.frame.icon=resource:org/mycompany/installer/wizard/wizard-icon.png
nbi.wizard.ui.swing.frame.title.prefix= {product-name} Installer
nbi.wizard.ui.swing.frame.title.pattern={0}
nbi.macosx.application.directory.name={product-name} Installer
nbi.product.remove.corrupted.products.silently=true
nbi.wizard.ui.swing.frame.head.right.image=resource:org/mycompany/installer/wizard/wizard-description-background-right.png
nbi.wizard.ui.swing.frame.head.left.image=resource:org/mycompany/installer/wizard/wizard-description-background-left.png
nbi.wizard.ui.swing.welcome.left.top.image=resource:org/mycompany/installer/wizard/components/panels/resources/welcome-left-top.png
nbi.wizard.ui.swing.welcome.left.bottom.image=resource:org/mycompany/installer/wizard/components/panels/resources/welcome-left-bottom.png
nbi.local.directory.path=$S{user.home}/.{product-uid}-installer
nbi.wizard.ui.swing.frame.width.default=600
nbi.wizard.ui.swing.frame.height.default=500
nbi.wizard.ui.swing.frame.width.win.classic=588
nbi.wizard.ui.swing.frame.height.win.classic=442
nbi.wizard.ui.swing.frame.width.win.xp=600
nbi.wizard.ui.swing.frame.height.win.xp=450
nbi.wizard.ui.swing.frame.width.motif=624
nbi.wizard.ui.swing.frame.height.motif=470
nbi.wizard.ui.swing.frame.width.metal=624
nbi.wizard.ui.swing.frame.height.metal=470
nbi.wizard.ui.swing.frame.width.aqua=640
nbi.wizard.ui.swing.frame.height.aqua=480
nbi.wizard.ui.swing.frame.width.gtk=704
nbi.wizard.ui.swing.frame.height.gtk=528
nbi.wizard.ui.swing.frame.width.nimbus=624
nbi.wizard.ui.swing.frame.height.nimbus=512
nbi.wizard.ui.swing.frame.minimum.width.default=600
nbi.wizard.ui.swing.frame.minimum.height.default=500
nbi.wizard.ui.swing.frame.minimum.width.win.classic=588
nbi.wizard.ui.swing.frame.minimum.height.win.classic=442
nbi.wizard.ui.swing.frame.minimum.width.win.xp=600
nbi.wizard.ui.swing.frame.minimum.height.win.xp=450
nbi.wizard.ui.swing.frame.minimum.width.motif=624
nbi.wizard.ui.swing.frame.minimum.height.motif=470
nbi.wizard.ui.swing.frame.minimum.width.metal=624
nbi.wizard.ui.swing.frame.minimum.height.metal=470
nbi.wizard.ui.swing.frame.minimum.width.aqua=640
nbi.wizard.ui.swing.frame.minimum.height.aqua=480
nbi.wizard.ui.swing.frame.minimum.width.gtk=704
nbi.wizard.ui.swing.frame.minimum.height.gtk=528
nbi.wizard.ui.swing.frame.minimum.width.nimbus=624
nbi.wizard.ui.swing.frame.minimum.height.nimbus=512

@ -0,0 +1,71 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
nlu.jvm.notfoundmessage=Java SE Development Kit (JDK) was not found on this computer\nJDK 6 is required for installing {product-name}. Make sure that the JDK is properly installed and run installer again.\nYou can specify valid JDK location using {0} installer argument.\n\nTo download the JDK, visit http://java.sun.com/javase/downloads
nlu.jvm.usererror=Java Runtime Environment (JRE) was not found at the specified location {0}
nlu.jvm.uncompatible=Unsupported JVM version at {0}.\nTry to specify another JVM location using parameter {1}
nlu.freespace=There is not enough free disk space to extract installation data\n{0} MB of free disk space is required in a temporary folder.\nClean up the disk space and run installer again. You can specify a temporary folder with sufficient disk space using {1} installer argument
nlu.integrity=\nInstaller file {0} seems to be corrupted
nlu.missing.external.resource=Can`t run {product-name} Installer.\nAn external file with necessary data is required but missing:\n{0}
nlu.cannot.create.tmpdir=Cannot create temporary directory {0}
nlu.cannot.extract.bundled.jvm=Cannot extract bundled JVM
nlu.cannot.unpack.jvm.file=Cannot unpack file {0}
nlu.error.verify.bundled.jvm=Cannot verify bundled JVM, try to search JVM on the system
nlu.running=Running the installer wizard...
nlu.starting=Configuring the installer...
nlu.extracting=Extracting installation data...
nlu.prepare.jvm=Preparing bundled JVM ...
nlu.jvm.search=Searching for JVM on the system...
nlu.msg.usage=\nUsage:
nlu.arg.javahome=\t{0}\t<dir>\tUsing java from <dir> for running application
nlu.arg.verbose=\t{0}\t\tUse verbose output
nlu.arg.output=\t{0}\t<out>\tRedirect all output to file <out>
nlu.arg.disable.space.check=\t{0}\t\tDisable free space check
nlu.arg.extract=\t{0}\t[dir]\tExtract all bundled data to <dir>.\n\t\t\t\tIf <dir> is not specified then extract to the current directory
nlu.arg.tempdir=\t{0}\t<dir>\tUse <dir> for extracting temporary data
nlu.arg.cpa=\t{0} <cp>\tAppend classpath with <cp>
nlu.arg.cpp=\t{0} <cp>\tPrepend classpath with <cp>
nlu.arg.locale=\t{0}\t<locale>\tOverride default locale with specified <locale>
nlu.arg.silent=\t{0}\t\tRun installer silently
nlu.arg.help=\t{0}\t\tShow this help
nlu.java.application.name.macosx={product-name} Installer

@ -0,0 +1,74 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
nlw.jvm.notfoundmessage=Java SE Development Kit (JDK) was not found on this computer\nJDK 6 is required for installing {product-name}. Make sure that the JDK is properly installed and run installer again. You can specify valid JDK location using {0} installer argument.\n\nTo download the JDK, visit http://java.sun.com/javase/downloads
nlw.jvm.usererror=Java Runtime Environment (JRE) was not found\nThere is no JRE at the specified location {0}
nlw.jvm.unsupportedversion=Unsupported Java VM version\nThe Java VM at {0} has the unsupported version
nlw.freespace=There is not enough free disk space to extract installation data\n{0} MB of free disk space is required in a temporary folder. Clean up the disk space and run installer again. You can specify a temporary folder with sufficient disk space using {1} installer argument
nlw.tmpdir=Can't create temporary directory\nThe temporary directory for extracting data {0} was not created
nlw.integrity=Installer file is corrupted\nInstaller file {0} seems to be corrupted
nlw.output.error=Data extraction error\nCan't create file {0}!\nThe following error occured :\n{1}
nlw.java.process.error=An error occured while running java process\n{0}
nlw.missing.external.resource=Can`t run {product-name} Installer.\nAn external file with necessary data is required but missing:\n{0}
nlw.bundled.jvm.extract.error=Cannot prepare bundled JVM to run the installer.\nMost probably the bundled JVM is not compatible with the current platform.
nlw.bundled.jvm.verify.error=An error occured while verifying bundled JVM.\nMost probably the bundled JVM is not compatible with the current platform.
nlw.arg.output={0} <output-file>\n\tRedirect output to file <output-file>
nlw.arg.javahome={0} <javahomedir>\n\tRun jar file using JVM from <javahomedir>
nlw.arg.verbose={0}\n\tUse verbose output
nlw.arg.tempdir={0} <temp-dir>\n\tUse <temp-dir> for extracting data
nlw.arg.extract={0} [directory]\n\tExtract all bundled data to the specific directory.\n\tIf directory is not specified then extract to the current directory
nlw.arg.classpatha={0} <classpath>\n\tAppend classpath with <classpath>
nlw.arg.classpathp={0} <classpath>\n\tPrepend classpath with <classpath>
nlw.arg.disable.space.check={0}\n\tDisable free space check
nlw.arg.locale={0} <locale>\n\tOverride system default locale with <locale>
nlw.arg.silent={0} \n\tRun installer silently
nlw.arg.help={0}\n\tShow help message
nlw.msg.create.tmpdir=Creating temporary directory ...
nlw.msg.extract=Extracting data ...
nlw.msg.jvmsearch=Finding JVM on your system ...
nlw.msg.setoptions=Setting command options ...
nlw.msg.running=Running JVM ...
nlw.msg.title=Please wait while the launcher prepares data to run the installer ...
nlw.msg.messagebox.title={product-name} Installer
nlw.msg.progress.title=Configuring the installer ...
nlw.msg.button.error=Exit Installer
nlw.msg.main.title={product-name} Installer

@ -0,0 +1,43 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
############################################################################
# NetBeansRCPUtils.java
NU.error.cannot.get.userdir=Can`t get application userdir from {0}

@ -0,0 +1,191 @@
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* The contents of this file are subject to the terms of either the GNU General
* Public License Version 2 only ("GPL") or the Common Development and Distribution
* License("CDDL") (collectively, the "License"). You may not use this file except in
* compliance with the License. You can obtain a copy of the License at
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
* License for the specific language governing permissions and limitations under the
* License. When distributing the software, include this License Header Notice in
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
* designates this particular file as subject to the "Classpath" exception as
* provided by Oracle in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License Header,
* with the fields enclosed by brackets [] replaced by your own identifying
* information: "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* The Original Software is NetBeans. The Initial Developer of the Original Software
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
* Rights Reserved.
*
* If you wish your version of this file to be governed by only the CDDL or only the
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
* this software in this distribution under the [CDDL or GPL Version 2] license." If
* you do not indicate a single choice of license, a recipient has the option to
* distribute your version of this file under either the CDDL, the GPL Version 2 or
* to extend the choice of license to its licensees as provided above. However, if
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
* the option applies only if the new code is made subject to such option by the
* copyright holder.
*/
package org.mycompany.installer.utils.applications;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.netbeans.installer.utils.FileUtils;
import org.netbeans.installer.utils.LogManager;
import org.netbeans.installer.utils.ResourceUtils;
import org.netbeans.installer.utils.StringUtils;
import org.netbeans.installer.utils.SystemUtils;
import org.netbeans.installer.utils.exceptions.NativeException;
import org.netbeans.installer.utils.system.WindowsNativeUtils;
import org.netbeans.installer.utils.system.WindowsNativeUtils;
import org.netbeans.installer.utils.system.windows.WindowsRegistry;
/**
*
* @author Dmitry Lipin
*/
public class NetBeansRCPUtils {
/**
* Get resolved application user directory
* @param appLocation Application home directory
* @throws IOException if can`t get application default userdir
*/
public static File getApplicationUserDirFile(File appLocation) throws IOException {
String dir = getApplicationUserDir(appLocation);
String userHome = System.getProperty("user.home");
if(SystemUtils.isWindows()) {
WindowsNativeUtils wnu = (WindowsNativeUtils) SystemUtils.getNativeUtils();
WindowsRegistry reg = wnu.getWindowsRegistry();
String key = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
try {
if(reg.keyExists(reg.HKCU, key) &&
reg.valueExists(reg.HKCU, key, "AppData")) {
userHome = reg.getStringValue(reg.HKCU, key, "AppData", false);
}
} catch (NativeException e) {
LogManager.log(e);
}
}
dir = dir.replace(USER_HOME_TOKEN, userHome);
dir = dir.replace(APPNAME_TOKEN, getApplicationName(appLocation));
return new File(dir);
}
/**
* Get application user directory as it is written in application`s configuration file
* @param appLocation Application home directory
* @throws IOException if can`t get default userdir
*/
public static String getApplicationUserDir(File appLocation) throws IOException {
File []confFiles = new File(appLocation, "etc").listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".conf");
}
});
File conf = null;
if(confFiles.length == 1) {
conf = confFiles[0];
} else if(confFiles.length >2) {
for(File f : confFiles) {
String prefix = f.getName().substring(0, f.getName().indexOf(".conf"));
if((SystemUtils.isUnix() && new File(appLocation, "bin/" + prefix).exists()) ||
(SystemUtils.isWindows() && new File(appLocation, "bin/" + prefix + ".exe").exists())) {
conf = f;
break;
}
}
}
if(conf == null) {
return null;
}
String contents = FileUtils.readFile(conf);
Matcher matcher = Pattern.compile(
NEW_LINE_PATTERN + SPACES_PATTERN +
(SystemUtils.isMacOS() ? DEFAULT_USERDIR_MAC : DEFAULT_USERDIR) +
"\"(.*?)\"").matcher(contents);
if(matcher.find() && matcher.groupCount() == 1) {
return matcher.group(1);
} else {
throw new IOException(StringUtils.format(
ERROR_CANNOT_GET_USERDIR_STRING,conf));
}
}
/**
* Get application name - i.e. <name> in bin/<name>.exe and etc/<name>.conf
* @param appLocation Application home directory
*/
public static String getApplicationName(File appLocation) {
File []confFiles = new File(appLocation, "etc").listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".conf");
}
});
if(confFiles.length == 1) {
String name = confFiles[0].getName();
return name.substring(0, name.indexOf(".conf"));
} else if(confFiles.length >2) {
for(File f : confFiles) {
String name = f.getName();
String prefix = name.substring(0, name.indexOf(".conf"));
if((SystemUtils.isUnix() && new File(appLocation, "bin/" + prefix).exists()) ||
(SystemUtils.isWindows() && new File(appLocation, "bin/" + prefix + ".exe").exists())) {
return prefix;
}
}
}
return null;
}
/////////////////////////////////////////////////////////////////////////////////
// Instance
private NetBeansRCPUtils() {
// does nothing
}
/////////////////////////////////////////////////////////////////////////////////
// Constants
public static final String NEW_LINE_PATTERN =
"[\r\n|\n|\r]"; // NOI18N
public static final String SPACES_PATTERN =
"\\ *"; // NOI18N
public static final String DEFAULT_USERDIR =
"default_userdir="; // NOI18N
public static final String DEFAULT_USERDIR_MAC =
"default_mac_userdir="; // NOI18N
public static final String USER_HOME_TOKEN =
"${HOME}"; // NOI18N
public static final String APPNAME_TOKEN =
"${APPNAME}"; // NOI18N
public static final String ERROR_CANNOT_GET_USERDIR_STRING =
ResourceUtils.getString(NetBeansRCPUtils.class,
"NU.error.cannot.get.userdir");//NOI18N
}

@ -0,0 +1,3 @@
IA.title=Installer Initialization
IA.progress.title=Initialization in progress...
IA.description=Please wait while initialization is completed.

@ -0,0 +1,112 @@
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* The contents of this file are subject to the terms of either the GNU General
* Public License Version 2 only ("GPL") or the Common Development and Distribution
* License("CDDL") (collectively, the "License"). You may not use this file except in
* compliance with the License. You can obtain a copy of the License at
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
* License for the specific language governing permissions and limitations under the
* License. When distributing the software, include this License Header Notice in
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
* designates this particular file as subject to the "Classpath" exception as
* provided by Oracle in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License Header,
* with the fields enclosed by brackets [] replaced by your own identifying
* information: "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* The Original Software is NetBeans. The Initial Developer of the Original Software
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
* Rights Reserved.
*
* If you wish your version of this file to be governed by only the CDDL or only the
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
* this software in this distribution under the [CDDL or GPL Version 2] license." If
* you do not indicate a single choice of license, a recipient has the option to
* distribute your version of this file under either the CDDL, the GPL Version 2 or
* to extend the choice of license to its licensees as provided above. However, if
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
* the option applies only if the new code is made subject to such option by the
* copyright holder.
*/
package org.mycompany.installer.wizard.components.actions;
import org.netbeans.installer.product.Registry;
import org.netbeans.installer.utils.StringUtils;
import org.netbeans.installer.utils.helper.ErrorLevel;
import org.netbeans.installer.utils.ErrorManager;
import org.netbeans.installer.utils.ResourceUtils;
import org.netbeans.installer.utils.progress.Progress;
import org.netbeans.installer.wizard.components.WizardAction;
import org.netbeans.installer.wizard.components.actions.*;
/**
*
* @author Dmitry Lipin
*/
public class InitializeAction extends WizardAction {
/////////////////////////////////////////////////////////////////////////////////
// Instance
public InitializeAction() {
setProperty(TITLE_PROPERTY,
DEFAULT_TITLE);
setProperty(DESCRIPTION_PROPERTY,
DEFAULT_DESCRIPTION);
downloadLogic = new DownloadConfigurationLogicAction();
initReg = new InitializeRegistryAction();
}
private DownloadConfigurationLogicAction downloadLogic;
private InitializeRegistryAction initReg;
public void execute() {
final Progress progress = new Progress();
//getWizardUi().setProgress(progress);
progress.setTitle(getProperty(PROGRESS_TITLE_PROPERTY));
//progress.synchronizeDetails(false);
if (initReg.canExecuteForward()) {
initReg.setWizard(getWizard());
initReg.execute();
}
if (downloadLogic.canExecuteForward()) {
downloadLogic.setWizard(getWizard());
downloadLogic.execute();
}
}
@Override
public boolean isCancelable() {
return false;
}
public WizardActionUi getWizardUi() {
return null; // this action does not have a ui
}
/////////////////////////////////////////////////////////////////////////////////
// Constants
public static final String DEFAULT_TITLE = ResourceUtils.getString(
InitializeAction.class,
"IA.title"); // NOI18N
public static final String PROGRESS_TITLE_PROPERTY = ResourceUtils.getString(
InitializeAction.class,
"IA.progress.title"); // NOI18N
public static final String DEFAULT_DESCRIPTION = ResourceUtils.getString(
InitializeAction.class,
"IA.description"); // NOI18N
}

@ -0,0 +1,94 @@
WP.title={product-name} Introduction
WP.description={product-name}
WP.welcome.text=<html>\
<h1>Welcome to the {product-name} Installer Wizard</h1><br>\
This program will install the {product-name} on your computer.<br><br>\
Click Next to continue.
WP.already.installed.text=<html>\
<h1>Welcome to the {product-name} Installer Wizard</h1><br>\
{0} is already installed at {1}.<br>It is not possible to install it again.<br><br>\
Click Exit to close this wizard.
WP.already.installed.next.button.text=&Exit
WP.incompatible.platform.text=<html>\
<h1>Welcome to the {product-name} Installer Wizard</h1><br>\
The {0} installer was not designed to run on this operating system so it is not possible to install it. \
Please run the installer for the appropriate platform.<br><br>\
Click Exit to close this wizard.
PoISP.title=Setup Complete
PoISP.description=Click Finish to finish {product-name} setup.
PoISP.message.text.success=\
<html><b><font size="+1">Installation Complete</font></b><br><br><br>\
{0} has been installed on your computer.</html>
#NOI18N
PoISP.message.content.type.success=text/html
PoISP.message.text.warnings=\
<html><b><font size="+1">Installation Complete</font></b><br><br><br>\
<span color="red">{0} has been installed on your computer but some not critical warnings were encountered.\
<br><br>For more details consult the installation log file:<br>{1}</span></html>
PoISP.message.text.finish=<html>Click Finish to close this wizard.</html>
PoISP.message.text.finish.content.type=text/html
#NOI18N
PoISP.message.content.type.warnings=text/html
PoISP.message.text.errors=<html><b><font size="+1">Installation Failed</font></b><br><br><br>\
<span color="red">{0} has not been installed on your computer.</span><br><br>\
Try to run installer again or consult the installation log file for more details:<br>{1}</span></html>
#NOI18N
PoISP.message.content.type.errors=text/html
PoISP.message.text.success.uninstall=<html>\
<b><font size="+1">Uninstallation Complete</font></b><br><br><br>\
{0} has been uninstalled.</html>
#NOI18N
PoISP.message.content.type.success.uninstall=text/html
PoISP.message.text.warnings.uninstall=\
<html><b><font size="+1">Uninstallation Complete</font></b><br><br><br>\
<span color="red">{0} has been uninstalled with warnings.<br><br>\
For more details consult the installation log file:<br>{1}</span></html>
#NOI18N
PoISP.message.content.type.warnings.uninstall=text/html
PoISP.message.text.errors.uninstall=<html><b><font size="+1">Uninstallation Failed</font></b><br><br>\
<span color="red">Uninstallation of {0} was not completed.<br><br>\
Try to run uninstaller again or consult the uninstallation log file for more details:<br>{1}</span>\
</html>
#NOI18N
PoISP.message.content.type.errors.uninstall=text/html
PoISP.message.run.application.now=Launch {0} after the installer closes.
PoISP.next.button.text=&Finish
################################################################################
# PreInstallSummaryPanel.java
PrISP.title=Summary
PrISP.description=Click Install to start the installation.
PrISP.description.uninstall=Click Uninstall to start the uninstallation.
PrISP.installation.folder={0} Installation Folder:
PrISP.uninstall.list.label.text=<html><br>Click Uninstall to remove {0} from the system.
PrISP.installation.size=Total Installation Size:
PrISP.download.size=Total Download Size:
PrISP.next.button.text=&Install
PrISP.next.button.text.uninstall=&Uninstall
PrISP.error.not.enough.space=Insufficient disk space for proper installation. Additional {1} is required in {0}.
PrISP.error.cannot.check.space=Cannot check the free disk space
PrISP.error.logic.access=Could not access product's configuration logic
PrISP.error.fsroots=Cannot get the list of file system roots
PrISP.error.non.existent.root={0} is set up to be installed to {1} which does not belong to any of the file system roots.
PrISP.error.cannot.write=The wizard does not have write access to {1}, the installation directory of {0}. Please correct the permissions before proceeding.
PrISP.remove.app.userdir.text=\
<html>\
If you wish to remove the application settings directory that stores user configuration data for {0}, check the following option.<br>
PrISP.remove.app.userdir.checkbox=Remove directory {0}

@ -0,0 +1,457 @@
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* The contents of this file are subject to the terms of either the GNU General
* Public License Version 2 only ("GPL") or the Common Development and Distribution
* License("CDDL") (collectively, the "License"). You may not use this file except in
* compliance with the License. You can obtain a copy of the License at
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
* License for the specific language governing permissions and limitations under the
* License. When distributing the software, include this License Header Notice in
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
* designates this particular file as subject to the "Classpath" exception as
* provided by Oracle in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License Header,
* with the fields enclosed by brackets [] replaced by your own identifying
* information: "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* The Original Software is NetBeans. The Initial Developer of the Original Software
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
* Rights Reserved.
*
* If you wish your version of this file to be governed by only the CDDL or only the
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
* this software in this distribution under the [CDDL or GPL Version 2] license." If
* you do not indicate a single choice of license, a recipient has the option to
* distribute your version of this file under either the CDDL, the GPL Version 2 or
* to extend the choice of license to its licensees as provided above. However, if
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
* the option applies only if the new code is made subject to such option by the
* copyright holder.
*/
package org.mycompany.installer.wizard.components.panels;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.netbeans.installer.product.Registry;
import org.netbeans.installer.product.components.Product;
import org.netbeans.installer.product.components.ProductConfigurationLogic;
import org.netbeans.installer.utils.LogManager;
import org.netbeans.installer.utils.ResourceUtils;
import org.netbeans.installer.utils.StringUtils;
import org.netbeans.installer.utils.exceptions.InitializationException;
import org.netbeans.installer.utils.helper.swing.NbiCheckBox;
import org.netbeans.installer.utils.helper.swing.NbiTextPane;
import org.netbeans.installer.wizard.components.WizardPanel;
import org.netbeans.installer.wizard.containers.SwingContainer;
import org.netbeans.installer.wizard.containers.SwingFrameContainer;
import org.netbeans.installer.wizard.ui.SwingUi;
import org.netbeans.installer.wizard.ui.WizardUi;
import static org.netbeans.installer.utils.helper.DetailedStatus.INSTALLED_SUCCESSFULLY;
import static org.netbeans.installer.utils.helper.DetailedStatus.INSTALLED_WITH_WARNINGS;
import static org.netbeans.installer.utils.helper.DetailedStatus.FAILED_TO_INSTALL;
import static org.netbeans.installer.utils.helper.DetailedStatus.UNINSTALLED_SUCCESSFULLY;
import static org.netbeans.installer.utils.helper.DetailedStatus.UNINSTALLED_WITH_WARNINGS;
import static org.netbeans.installer.utils.helper.DetailedStatus.FAILED_TO_UNINSTALL;
/**
*
* @author Dmitry Lipin
*/
public class PostInstallSummaryPanel extends WizardPanel {
/////////////////////////////////////////////////////////////////////////////////
// Instance
public PostInstallSummaryPanel() {
setProperty(TITLE_PROPERTY,
DEFAULT_TITLE);
setProperty(DESCRIPTION_PROPERTY,
DEFAULT_DESCRIPTION);
setProperty(MESSAGE_TEXT_SUCCESS_PROPERTY,
DEFAULT_MESSAGE_TEXT_SUCCESS);
setProperty(MESSAGE_CONTENT_TYPE_SUCCESS_PROPERTY,
DEFAULT_MESSAGE_CONTENT_TYPE_SUCCESS);
setProperty(MESSAGE_TEXT_WARNINGS_PROPERTY,
DEFAULT_MESSAGE_TEXT_WARNINGS);
setProperty(MESSAGE_CONTENT_TYPE_WARNINGS_PROPERTY,
DEFAULT_MESSAGE_CONTENT_TYPE_WARNINGS);
setProperty(MESSAGE_TEXT_ERRORS_PROPERTY,
DEFAULT_MESSAGE_TEXT_ERRORS);
setProperty(MESSAGE_CONTENT_TYPE_ERRORS_PROPERTY,
DEFAULT_MESSAGE_CONTENT_TYPE_ERRORS);
setProperty(MESSAGE_TEXT_SUCCESS_UNINSTALL_PROPERTY,
DEFAULT_MESSAGE_TEXT_SUCCESS_UNINSTALL);
setProperty(MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL_PROPERTY,
DEFAULT_MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL);
setProperty(MESSAGE_TEXT_WARNINGS_UNINSTALL_PROPERTY,
DEFAULT_MESSAGE_TEXT_WARNINGS_UNINSTALL);
setProperty(MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL_PROPERTY,
DEFAULT_MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL);
setProperty(MESSAGE_TEXT_ERRORS_UNINSTALL_PROPERTY,
DEFAULT_MESSAGE_TEXT_ERRORS_UNINSTALL);
setProperty(MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL_PROPERTY,
DEFAULT_MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL);
setProperty(NEXT_BUTTON_TEXT_PROPERTY,
DEFAULT_NEXT_BUTTON_TEXT);
}
@Override
public boolean isPointOfNoReturn() {
return true;
}
@Override
public WizardUi getWizardUi() {
if (wizardUi == null) {
wizardUi = new PostInstallSummaryPanelUi(this);
}
return wizardUi;
}
/////////////////////////////////////////////////////////////////////////////////
// Inner Classes
public static class PostInstallSummaryPanelUi extends WizardPanelUi {
protected PostInstallSummaryPanel component;
public PostInstallSummaryPanelUi(PostInstallSummaryPanel component) {
super(component);
this.component = component;
}
public SwingUi getSwingUi(SwingContainer container) {
if (swingUi == null) {
swingUi = new PostInstallSummaryPanelSwingUi(component, container);
}
return super.getSwingUi(container);
}
}
public static class PostInstallSummaryPanelSwingUi extends WizardPanelSwingUi {
protected PostInstallSummaryPanel component;
private NbiTextPane messagePaneInstall;
private NbiTextPane messagePaneUninstall;
private NbiTextPane messagePaneFinish;
private NbiCheckBox runAppNow;
private Product app;
public PostInstallSummaryPanelSwingUi(
final PostInstallSummaryPanel component,
final SwingContainer container) {
super(component, container);
this.component = component;
initComponents();
}
protected void initializeContainer() {
super.initializeContainer();
// set up the back button
container.getBackButton().setVisible(false);
container.getBackButton().setEnabled(false);
// set up the next (or finish) button
container.getNextButton().setVisible(true);
container.getNextButton().setEnabled(true);
container.getNextButton().setText(
component.getProperty(NEXT_BUTTON_TEXT_PROPERTY));
// set up the cancel button
container.getCancelButton().setVisible(false);
container.getCancelButton().setEnabled(false);
}
@Override
public void evaluateNextButtonClick() {
container.getNextButton().setEnabled(false);
final Product product = app;
if (app != null) {
ProductConfigurationLogic l = null;
try {
l = app.getLogic();
} catch (InitializationException e) {
}
final File executable = l != null ? new File(app.getInstallationLocation(), l.getExecutable()) : null;
if (executable != null && runAppNow.isSelected()) {
LogManager.log("... running: " + executable.getAbsolutePath());
ProcessBuilder pb = new ProcessBuilder(new String[]{executable.getAbsolutePath()});
try {
pb.start();
} catch (IOException e) {
LogManager.log(e);
}
}
}
super.evaluateNextButtonClick();
}
protected void initialize() {
final Registry registry = Registry.getInstance();
final List<Product> successfulInstall = registry.getProducts(INSTALLED_SUCCESSFULLY);
final List<Product> warningInstall = registry.getProducts(INSTALLED_WITH_WARNINGS);
final List<Product> errorInstall = registry.getProducts(FAILED_TO_INSTALL);
final List<Product> successfulUninstall = registry.getProducts(UNINSTALLED_SUCCESSFULLY);
final List<Product> warningUninstall = registry.getProducts(UNINSTALLED_WITH_WARNINGS);
final List<Product> errorUninstall = registry.getProducts(FAILED_TO_UNINSTALL);
if (errorInstall.size() > 0) {
messagePaneInstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_ERRORS_PROPERTY));
messagePaneInstall.setText(StringUtils.format(
component.getProperty(MESSAGE_TEXT_ERRORS_PROPERTY),
errorInstall.get(0).getDisplayName(),
LogManager.getLogFile()));
} else if (warningInstall.size() > 0) {
messagePaneInstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_WARNINGS_PROPERTY));
messagePaneInstall.setText(StringUtils.format(
component.getProperty(MESSAGE_TEXT_WARNINGS_PROPERTY),
warningInstall.get(0).getDisplayName(),
LogManager.getLogFile()));
} else if (successfulInstall.size() > 0) {
messagePaneInstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_SUCCESS_PROPERTY));
messagePaneInstall.setText(StringUtils.format(
component.getProperty(MESSAGE_TEXT_SUCCESS_PROPERTY),
successfulInstall.get(0).getDisplayName(),
LogManager.getLogFile()));
} else {
messagePaneInstall.setVisible(false);
}
messagePaneFinish.setVisible(true);
messagePaneFinish.setContentType(DEFAULT_MESSAGE_FINISH_PROCESS_CONTENT_TYPE);
messagePaneFinish.setText(DEFAULT_MESSAGE_FINISH_PROCESS);
if (errorUninstall.size() > 0) {
messagePaneUninstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL_PROPERTY));
messagePaneUninstall.setText(StringUtils.format(
component.getProperty(MESSAGE_TEXT_ERRORS_UNINSTALL_PROPERTY),
errorUninstall.get(0).getDisplayName(),
LogManager.getLogFile()));
} else if (warningUninstall.size() > 0) {
messagePaneUninstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL_PROPERTY));
messagePaneUninstall.setText(StringUtils.format(
component.getProperty(MESSAGE_TEXT_WARNINGS_UNINSTALL_PROPERTY),
warningUninstall.get(0).getDisplayName(),
LogManager.getLogFile()));
} else if (successfulUninstall.size() > 0) {
messagePaneUninstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL_PROPERTY));
messagePaneUninstall.setText(StringUtils.format(
component.getProperty(MESSAGE_TEXT_SUCCESS_UNINSTALL_PROPERTY),
successfulUninstall.get(0).getDisplayName(),
LogManager.getLogFile()));
} else {
messagePaneUninstall.setVisible(false);
}
final List<Product> products = new LinkedList<Product>();
products.addAll(successfulInstall);
products.addAll(warningInstall);
runAppNow.setSelected(false);
if (!products.isEmpty()) {
runAppNow.setText(StringUtils.format(DEFAULT_MESSAGE_LAUNCH_APPLICATION_NOW,
products.get(0).getDisplayName()));
runAppNow.doClick();
app = products.get(0);
} else {
runAppNow.setVisible(false);
}
}
private void initComponents() {
// messagePaneInstall ///////////////////////////////////////////////////
messagePaneInstall = new NbiTextPane();
// messagePaneUninstall /////////////////////////////////////////////////
messagePaneUninstall = new NbiTextPane();
// messagePaneRunApplication ///////////////////////////////////////////////////
messagePaneFinish = new NbiTextPane();
runAppNow = new NbiCheckBox();
// this /////////////////////////////////////////////////////////////////
add(messagePaneInstall, new GridBagConstraints(
0, 0, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(31, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
add(messagePaneUninstall, new GridBagConstraints(
0, 1, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.BOTH, // fill
new Insets(31, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
add(messagePaneFinish, new GridBagConstraints(
0, 3, // x, y
1, 1, // width, height
1.0, 1.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(11, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
/*
add(new NbiPanel(), new GridBagConstraints(
0, 4, // x, y
1, 1, // width, height
1.0, 1.0, // weight-x, weight-y
GridBagConstraints.CENTER, // anchor
GridBagConstraints.BOTH, // fill
new Insets(0, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
*/
add(runAppNow, new GridBagConstraints(
0, 4, // x, y
1, 1, // width, height
1.0, 1.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(11, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
if (container instanceof SwingFrameContainer) {
final SwingFrameContainer sfc = (SwingFrameContainer) container;
sfc.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent event) {
SwingUi currentUi = component.getWizardUi().getSwingUi(container);
if (currentUi != null) {
if (!container.getCancelButton().isEnabled() && // cancel button is disabled
!container.getCancelButton().isVisible() && // no cancel button at this panel
!container.getBackButton().isVisible() && // no back button at this panel
container.getNextButton().isVisible() && // next button is visible
container.getNextButton().isEnabled()) { // and enabled
currentUi.evaluateNextButtonClick();
sfc.removeWindowListener(this);
}
}
}
});
}
}
}
/////////////////////////////////////////////////////////////////////////////////
// Constants
public static final String MESSAGE_TEXT_SUCCESS_PROPERTY =
"message.text.success"; // NOI18N
public static final String MESSAGE_CONTENT_TYPE_SUCCESS_PROPERTY =
"message.content.type.success"; // NOI18N
public static final String MESSAGE_TEXT_WARNINGS_PROPERTY =
"message.text.warnings"; // NOI18N
public static final String MESSAGE_CONTENT_TYPE_WARNINGS_PROPERTY =
"message.content.type.warnings"; // NOI18N
public static final String MESSAGE_TEXT_ERRORS_PROPERTY =
"message.text.errors"; // NOI18N
public static final String MESSAGE_CONTENT_TYPE_ERRORS_PROPERTY =
"message.content.type.errors"; // NOI18N
public static final String MESSAGE_TEXT_SUCCESS_UNINSTALL_PROPERTY =
"message.text.success.uninstall"; // NOI18N
public static final String MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL_PROPERTY =
"message.content.type.success.uninstall"; // NOI18N
public static final String MESSAGE_TEXT_WARNINGS_UNINSTALL_PROPERTY =
"message.text.warnings.uninstall"; // NOI18N
public static final String MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL_PROPERTY =
"message.content.type.warnings.uninstall"; // NOI18N
public static final String MESSAGE_TEXT_ERRORS_UNINSTALL_PROPERTY =
"message.text.errors.uninstall"; // NOI18N
public static final String MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL_PROPERTY =
"message.content.type.errors.uninstall"; // NOI18N
public static final String DEFAULT_MESSAGE_TEXT_SUCCESS =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.text.success"); // NOI18N
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_SUCCESS =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.content.type.success"); // NOI18N
public static final String DEFAULT_MESSAGE_TEXT_WARNINGS =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.text.warnings"); // NOI18N
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_WARNINGS =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.content.type.warnings"); // NOI18N
public static final String DEFAULT_MESSAGE_TEXT_ERRORS =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.text.errors"); // NOI18N
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_ERRORS =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.content.type.errors"); // NOI18N
public static final String DEFAULT_MESSAGE_TEXT_SUCCESS_UNINSTALL =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.text.success.uninstall"); // NOI18N
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.content.type.success.uninstall"); // NOI18N
public static final String DEFAULT_MESSAGE_TEXT_WARNINGS_UNINSTALL =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.text.warnings.uninstall"); // NOI18N
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.content.type.warnings.uninstall"); // NOI18N
public static final String DEFAULT_MESSAGE_TEXT_ERRORS_UNINSTALL =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.text.errors.uninstall"); // NOI18N
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.content.type.errors.uninstall"); // NOI18N
public static final String DEFAULT_TITLE = ResourceUtils.getString(
PostInstallSummaryPanel.class,
"PoISP.title"); // NOI18N
public static final String DEFAULT_DESCRIPTION =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.description"); // NOI18N
public static final String DEFAULT_NEXT_BUTTON_TEXT =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.next.button.text"); // NOI18N
public static final String DEFAULT_MESSAGE_FINISH_PROCESS =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.text.finish"); // NOI18N
public static final String DEFAULT_MESSAGE_FINISH_PROCESS_CONTENT_TYPE =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.text.finish.content.type"); // NOI18N
public static final String DEFAULT_MESSAGE_LAUNCH_APPLICATION_NOW =
ResourceUtils.getString(PostInstallSummaryPanel.class,
"PoISP.message.run.application.now");//NOI18N
}

@ -0,0 +1,620 @@
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* The contents of this file are subject to the terms of either the GNU General
* Public License Version 2 only ("GPL") or the Common Development and Distribution
* License("CDDL") (collectively, the "License"). You may not use this file except in
* compliance with the License. You can obtain a copy of the License at
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
* License for the specific language governing permissions and limitations under the
* License. When distributing the software, include this License Header Notice in
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
* designates this particular file as subject to the "Classpath" exception as
* provided by Oracle in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License Header,
* with the fields enclosed by brackets [] replaced by your own identifying
* information: "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* The Original Software is NetBeans. The Initial Developer of the Original Software
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
* Rights Reserved.
*
* If you wish your version of this file to be governed by only the CDDL or only the
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
* this software in this distribution under the [CDDL or GPL Version 2] license." If
* you do not indicate a single choice of license, a recipient has the option to
* distribute your version of this file under either the CDDL, the GPL Version 2 or
* to extend the choice of license to its licensees as provided above. However, if
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
* the option applies only if the new code is made subject to such option by the
* copyright holder.
*/
package org.mycompany.installer.wizard.components.panels;
import java.awt.ComponentOrientation;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.border.EmptyBorder;
import org.netbeans.installer.Installer;
import org.netbeans.installer.product.Registry;
import org.netbeans.installer.product.RegistryNode;
import org.netbeans.installer.product.RegistryType;
import org.netbeans.installer.product.components.Product;
import org.netbeans.installer.utils.ErrorManager;
import org.netbeans.installer.utils.FileUtils;
import org.netbeans.installer.utils.LogManager;
import org.netbeans.installer.utils.ResourceUtils;
import org.netbeans.installer.utils.StringUtils;
import org.netbeans.installer.utils.SystemUtils;
import org.mycompany.installer.utils.applications.NetBeansRCPUtils;
import org.netbeans.installer.utils.exceptions.NativeException;
import org.netbeans.installer.utils.helper.swing.NbiCheckBox;
import org.netbeans.installer.utils.helper.swing.NbiLabel;
import org.netbeans.installer.utils.helper.swing.NbiPanel;
import org.netbeans.installer.utils.helper.swing.NbiTextPane;
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel;
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel.ErrorMessagePanelSwingUi;
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel.ErrorMessagePanelUi;
import org.netbeans.installer.wizard.containers.SwingContainer;
import org.netbeans.installer.wizard.ui.SwingUi;
import org.netbeans.installer.wizard.ui.WizardUi;
/**
*
* @author Dmitry Lipin
*/
public class PreInstallSummaryPanel extends ErrorMessagePanel {
/////////////////////////////////////////////////////////////////////////////////
// Instance
public PreInstallSummaryPanel() {
setProperty(TITLE_PROPERTY,
DEFAULT_TITLE);
setProperty(DESCRIPTION_PROPERTY,
DEFAULT_DESCRIPTION);
setProperty(INSTALLATION_FOLDER_PROPERTY,
DEFAULT_INSTALLATION_FOLDER);
setProperty(UNINSTALL_LABEL_TEXT_PROPERTY,
DEFAULT_UNINSTALL_LABEL_TEXT);
setProperty(INSTALLATION_SIZE_PROPERTY,
DEFAULT_INSTALLATION_SIZE);
setProperty(DOWNLOAD_SIZE_PROPERTY,
DEFAULT_DOWNLOAD_SIZE);
setProperty(NEXT_BUTTON_TEXT_PROPERTY,
DEFAULT_NEXT_BUTTON_TEXT);
setProperty(ERROR_NOT_ENOUGH_SPACE_PROPERTY,
DEFAULT_ERROR_NOT_ENOUGH_SPACE);
setProperty(ERROR_CANNOT_CHECK_SPACE_PROPERTY,
DEFAULT_ERROR_CANNOT_CHECK_SPACE);
setProperty(ERROR_LOGIC_ACCESS_PROPERTY,
DEFAULT_ERROR_LOGIC_ACCESS);
setProperty(ERROR_FSROOTS_PROPERTY,
DEFAULT_ERROR_FSROOTS);
setProperty(ERROR_NON_EXISTENT_ROOT_PROPERTY,
DEFAULT_ERROR_NON_EXISTENT_ROOT);
setProperty(ERROR_CANNOT_WRITE_PROPERTY,
DEFAULT_ERROR_CANNOT_WRITE);
setProperty(REMOVE_APP_USERDIR_TEXT_PROPERTY,
DEFAULT_REMOVE_APP_USERDIR_TEXT);
setProperty(REMOVE_APP_USERDIR_CHECKBOX_PROPERTY,
DEFAULT_REMOVE_APP_USERDIR_CHECKBOX);
}
@Override
public WizardUi getWizardUi() {
if (wizardUi == null) {
wizardUi = new PreInstallSummaryPanelUi(this);
}
return wizardUi;
}
@Override
public void initialize() {
final List<Product> toInstall =
Registry.getInstance().getProductsToInstall();
if (toInstall.size() > 0) {
setProperty(NEXT_BUTTON_TEXT_PROPERTY, DEFAULT_NEXT_BUTTON_TEXT);
setProperty(DESCRIPTION_PROPERTY, DEFAULT_DESCRIPTION);
} else {
setProperty(NEXT_BUTTON_TEXT_PROPERTY, DEFAULT_NEXT_BUTTON_TEXT_UNINSTALL);
setProperty(DESCRIPTION_PROPERTY, DEFAULT_DESCRIPTION_UNINSTALL);
}
}
/////////////////////////////////////////////////////////////////////////////////
// Inner Classes
public static class PreInstallSummaryPanelUi extends ErrorMessagePanelUi {
protected PreInstallSummaryPanel component;
public PreInstallSummaryPanelUi(PreInstallSummaryPanel component) {
super(component);
this.component = component;
}
@Override
public SwingUi getSwingUi(SwingContainer container) {
if (swingUi == null) {
swingUi = new PreInstallSummaryPanelSwingUi(component, container);
}
return super.getSwingUi(container);
}
}
public static class PreInstallSummaryPanelSwingUi extends ErrorMessagePanelSwingUi {
protected PreInstallSummaryPanel component;
private NbiTextPane locationsPane;
private NbiLabel uninstallListLabel;
private NbiTextPane uninstallListPane;
private NbiLabel installationSizeLabel;
private NbiLabel installationSizeValue;
private NbiLabel downloadSizeLabel;
private NbiLabel downloadSizeValue;
private NbiCheckBox removeUserdirCheckbox;
private NbiTextPane removeUserdirPane;
private NbiPanel spacer;
private int gridy = 0;
public PreInstallSummaryPanelSwingUi(
final PreInstallSummaryPanel component,
final SwingContainer container) {
super(component, container);
this.component = component;
initComponents();
}
// protected ////////////////////////////////////////////////////////////////
@Override
protected void initializeContainer() {
super.initializeContainer();
container.getNextButton().setText(
panel.getProperty(NEXT_BUTTON_TEXT_PROPERTY));
}
@Override
protected void initialize() {
final Registry registry = Registry.getInstance();
final StringBuilder text = new StringBuilder();
long installationSize = 0;
long downloadSize = 0;
for (Product product : registry.getProductsToInstall()) {
installationSize += product.getRequiredDiskSpace();
downloadSize += product.getDownloadSize();
}
// add top-level components like nb-base, glassfish, tomcat, jdk
for (Product product : registry.getProductsToInstall()) {
text.append(StringUtils.LF);
text.append(StringUtils.format(panel.getProperty(INSTALLATION_FOLDER_PROPERTY),
product.getDisplayName()));
text.append(StringUtils.LF);
text.append(" " + product.getInstallationLocation());
text.append(StringUtils.LF);
}
locationsPane.setText(text);
List<Product> toUninstall = registry.getProductsToUninstall();
String uninstallLabelText = toUninstall.size() > 0 ? StringUtils.format(
panel.getProperty(UNINSTALL_LABEL_TEXT_PROPERTY),
toUninstall.get(0).getDisplayName()) : "";
uninstallListLabel.setText(uninstallLabelText);
installationSizeLabel.setText(
panel.getProperty(INSTALLATION_SIZE_PROPERTY));
installationSizeValue.setText(StringUtils.formatSize(
installationSize));
downloadSizeLabel.setText(
panel.getProperty(DOWNLOAD_SIZE_PROPERTY));
downloadSizeValue.setText(StringUtils.formatSize(
downloadSize));
if (registry.getProductsToInstall().size() == 0) {
locationsPane.setVisible(false);
installationSizeLabel.setVisible(false);
installationSizeValue.setVisible(false);
} else {
locationsPane.setVisible(true);
installationSizeLabel.setVisible(true);
installationSizeValue.setVisible(true);
}
if (registry.getProductsToUninstall().size() == 0) {
uninstallListLabel.setVisible(false);
uninstallListPane.setVisible(false);
} else {
uninstallListLabel.setVisible(true);
uninstallListPane.setVisible(true);
}
downloadSizeLabel.setVisible(false);
downloadSizeValue.setVisible(false);
for (RegistryNode remoteNode : registry.getNodes(RegistryType.REMOTE)) {
if (remoteNode.isVisible()) {
downloadSizeLabel.setVisible(true);
downloadSizeValue.setVisible(true);
}
}
if (Boolean.getBoolean(REMOVE_APP_USERDIR_PROPERTY)) {
removeUserdirCheckbox.doClick();
}
removeUserdirCheckbox.setVisible(false);
removeUserdirPane.setVisible(false);
for (Product product : Registry.getInstance().getProductsToUninstall()) {
try {
File installLocation = product.getInstallationLocation();
LogManager.log("... product installation directory: " + installLocation);
File userDir = NetBeansRCPUtils.getApplicationUserDirFile(installLocation);
LogManager.log("... product userdir: " + userDir);
if (FileUtils.exists(userDir) && FileUtils.canWrite(userDir)) {
removeUserdirCheckbox.setText(
StringUtils.format(
panel.getProperty(REMOVE_APP_USERDIR_CHECKBOX_PROPERTY),
userDir.getAbsolutePath()));
removeUserdirCheckbox.setBorder(new EmptyBorder(0, 0, 0, 0));
removeUserdirCheckbox.setVisible(true);
removeUserdirPane.setVisible(true);
removeUserdirPane.setContentType("text/html");
removeUserdirPane.setText(
StringUtils.format(
panel.getProperty(REMOVE_APP_USERDIR_TEXT_PROPERTY),
product.getDisplayName()));
}
break;
} catch (IOException e) {
LogManager.log(e);
}
}
//if(productCheckboxList!=null) {
// for(Pair <Product, NbiCheckBox> pair : productCheckboxList) {
// pair.getSecond().doClick();
// }
//}
super.initialize();
}
@Override
protected String validateInput() {
try {
if (!Boolean.getBoolean(SystemUtils.NO_SPACE_CHECK_PROPERTY)) {
final List<File> roots =
SystemUtils.getFileSystemRoots();
final List<Product> toInstall =
Registry.getInstance().getProductsToInstall();
final Map<File, Long> spaceMap =
new HashMap<File, Long>();
LogManager.log("Available roots : " + StringUtils.asString(roots));
File downloadDataDirRoot = FileUtils.getRoot(
Installer.getInstance().getLocalDirectory(), roots);
long downloadSize = 0;
for (Product product : toInstall) {
downloadSize += product.getDownloadSize();
}
// the critical check point - we download all the data
spaceMap.put(downloadDataDirRoot, new Long(downloadSize));
long lastDataSize = 0;
for (Product product : toInstall) {
final File installLocation = product.getInstallationLocation();
final File root = FileUtils.getRoot(installLocation, roots);
final long productSize = product.getRequiredDiskSpace();
LogManager.log(" [" + root + "] <- " + installLocation);
if (root != null) {
Long ddSize = spaceMap.get(downloadDataDirRoot);
// remove space that was freed after the remove of previos product data
spaceMap.put(downloadDataDirRoot,
Long.valueOf(ddSize - lastDataSize));
// add space required for next product installation
Long size = spaceMap.get(root);
size = Long.valueOf(
(size != null ? size.longValue() : 0L)
+ productSize);
spaceMap.put(root, size);
lastDataSize = product.getDownloadSize();
} else {
return StringUtils.format(
panel.getProperty(ERROR_NON_EXISTENT_ROOT_PROPERTY),
product, installLocation);
}
}
for (File root : spaceMap.keySet()) {
try {
final long availableSpace =
SystemUtils.getFreeSpace(root);
final long requiredSpace =
spaceMap.get(root) + REQUIRED_SPACE_ADDITION;
if (availableSpace < requiredSpace) {
return StringUtils.format(
panel.getProperty(ERROR_NOT_ENOUGH_SPACE_PROPERTY),
root,
StringUtils.formatSize(requiredSpace - availableSpace));
}
} catch (NativeException e) {
ErrorManager.notifyError(
panel.getProperty(ERROR_CANNOT_CHECK_SPACE_PROPERTY),
e);
}
}
}
final List<Product> toUninstall =
Registry.getInstance().getProductsToUninstall();
for (Product product : toUninstall) {
if (!FileUtils.canWrite(product.getInstallationLocation())) {
return StringUtils.format(
panel.getProperty(ERROR_CANNOT_WRITE_PROPERTY),
product,
product.getInstallationLocation());
}
}
} catch (IOException e) {
ErrorManager.notifyError(
panel.getProperty(ERROR_FSROOTS_PROPERTY), e);
}
return null;
}
// private //////////////////////////////////////////////////////////////////
private void initComponents() {
gridy = 0;
// locationsPane ////////////////////////////////////////////////////////
locationsPane = new NbiTextPane();
// uninstallListPane ////////////////////////////////////////////////////
uninstallListPane = new NbiTextPane();
// uninstallListLabel ///////////////////////////////////////////////////
uninstallListLabel = new NbiLabel();
uninstallListLabel.setLabelFor(uninstallListPane);
// installationSizeValue ////////////////////////////////////////////////
installationSizeValue = new NbiLabel();
//installationSizeValue.setFocusable(true);
// installationSizeLabel ////////////////////////////////////////////////
installationSizeLabel = new NbiLabel();
installationSizeLabel.setLabelFor(installationSizeValue);
// downloadSizeValue ////////////////////////////////////////////////////
downloadSizeValue = new NbiLabel();
//downloadSizeValue.setFocusable(true);
// downloadSizeLabel ////////////////////////////////////////////////////
downloadSizeLabel = new NbiLabel();
downloadSizeLabel.setLabelFor(downloadSizeValue);
// spacer ///////////////////////////////////////////////////////////////
spacer = new NbiPanel();
// this /////////////////////////////////////////////////////////////////
add(locationsPane, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(11, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
add(uninstallListLabel, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(11, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
add(uninstallListPane, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(0, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
int gridy0 = gridy;
gridy++;
removeUserdirPane = new NbiTextPane();
add(removeUserdirPane, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(11, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
removeUserdirCheckbox = new NbiCheckBox();
add(removeUserdirCheckbox, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.PAGE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(4, 20, 0, 11), // padding
0, 0)); // padx, pady - ???
removeUserdirCheckbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.setProperty(REMOVE_APP_USERDIR_PROPERTY,
"" + removeUserdirCheckbox.isSelected());
}
});
add(installationSizeLabel, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.LINE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(22, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
add(installationSizeValue, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.LINE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(4, 22, 0, 11), // padding
0, 0)); // padx, pady - ???
add(downloadSizeLabel, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.LINE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(4, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
add(downloadSizeValue, new GridBagConstraints(
0, gridy++, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.LINE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(4, 22, 0, 11), // padding
0, 0)); // padx, pady - ???
add(spacer, new GridBagConstraints(
0, gridy + 10, // x, y
1, 1, // width, height
1.0, 1.0, // weight-x, weight-y
GridBagConstraints.CENTER, // anchor
GridBagConstraints.BOTH, // fill
new Insets(0, 11, 0, 11), // padding
0, 0)); // padx, pady - ???
}
}
/////////////////////////////////////////////////////////////////////////////////
// Constants
public static final String INSTALLATION_FOLDER_PROPERTY =
"installation.folder"; // NOI18N
public static final String UNINSTALL_LABEL_TEXT_PROPERTY =
"uninstall.list.label.text"; // NOI18N
public static final String INSTALLATION_SIZE_PROPERTY =
"installation.size"; // NOI18N
public static final String DOWNLOAD_SIZE_PROPERTY =
"download.size"; // NOI18N
public static final String ERROR_NOT_ENOUGH_SPACE_PROPERTY =
"error.not.enough.space"; // NOI18N
public static final String ERROR_CANNOT_CHECK_SPACE_PROPERTY =
"error.cannot.check.space"; // NOI18N
public static final String ERROR_LOGIC_ACCESS_PROPERTY =
"error.logic.access"; // NOI18N
public static final String ERROR_FSROOTS_PROPERTY =
"error.fsroots"; // NOI18N
public static final String ERROR_NON_EXISTENT_ROOT_PROPERTY =
"error.non.existent.root"; // NOI18N
public static final String ERROR_CANNOT_WRITE_PROPERTY =
"error.cannot.write"; // NOI18N
public static final String REMOVE_APP_USERDIR_PROPERTY =
"remove.app.userdir";
public static final String REMOVE_APP_USERDIR_TEXT_PROPERTY =
"remove.app.userdir.text";
public static final String REMOVE_APP_USERDIR_CHECKBOX_PROPERTY =
"remove.app.userdir.checkbox";
public static final String DEFAULT_TITLE =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.title"); // NOI18N
public static final String DEFAULT_DESCRIPTION =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.description"); // NOI18N
public static final String DEFAULT_DESCRIPTION_UNINSTALL =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.description.uninstall"); // NOI18N
public static final String DEFAULT_INSTALLATION_FOLDER =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.installation.folder"); // NOI18N
public static final String DEFAULT_UNINSTALL_LABEL_TEXT =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.uninstall.list.label.text"); // NOI18N
public static final String DEFAULT_INSTALLATION_SIZE =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.installation.size"); // NOI18N
public static final String DEFAULT_DOWNLOAD_SIZE =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.download.size"); // NOI18N
public static final String DEFAULT_NEXT_BUTTON_TEXT =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.next.button.text"); // NOI18N
public static final String DEFAULT_NEXT_BUTTON_TEXT_UNINSTALL =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.next.button.text.uninstall"); // NOI18N
public static final String DEFAULT_ERROR_NOT_ENOUGH_SPACE =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.error.not.enough.space"); // NOI18N
public static final String DEFAULT_ERROR_CANNOT_CHECK_SPACE =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.error.cannot.check.space");// NOI18N
public static final String DEFAULT_ERROR_LOGIC_ACCESS =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.error.logic.access");// NOI18N
public static final String DEFAULT_ERROR_FSROOTS =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.error.fsroots"); // NOI18N
public static final String DEFAULT_ERROR_NON_EXISTENT_ROOT =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.error.non.existent.root"); // NOI18N
public static final String DEFAULT_ERROR_CANNOT_WRITE =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.error.cannot.write"); // NOI18N
public static final String DEFAULT_REMOVE_APP_USERDIR_TEXT =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.remove.app.userdir.text"); // NOI18N
public static final String DEFAULT_REMOVE_APP_USERDIR_CHECKBOX =
ResourceUtils.getString(PreInstallSummaryPanel.class,
"PrISP.remove.app.userdir.checkbox"); // NOI18N
public static final long REQUIRED_SPACE_ADDITION =
10L * 1024L * 1024L; // 10MB
}

@ -0,0 +1,333 @@
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* The contents of this file are subject to the terms of either the GNU General
* Public License Version 2 only ("GPL") or the Common Development and Distribution
* License("CDDL") (collectively, the "License"). You may not use this file except in
* compliance with the License. You can obtain a copy of the License at
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
* License for the specific language governing permissions and limitations under the
* License. When distributing the software, include this License Header Notice in
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
* designates this particular file as subject to the "Classpath" exception as
* provided by Oracle in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License Header,
* with the fields enclosed by brackets [] replaced by your own identifying
* information: "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* The Original Software is NetBeans. The Initial Developer of the Original Software
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
* Rights Reserved.
*
* If you wish your version of this file to be governed by only the CDDL or only the
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
* this software in this distribution under the [CDDL or GPL Version 2] license." If
* you do not indicate a single choice of license, a recipient has the option to
* distribute your version of this file under either the CDDL, the GPL Version 2 or
* to extend the choice of license to its licensees as provided above. However, if
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
* the option applies only if the new code is made subject to such option by the
* copyright holder.
*/
package org.mycompany.installer.wizard.components.panels;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.io.File;
import java.util.List;
import org.netbeans.installer.product.Registry;
import org.netbeans.installer.product.components.Product;
import org.netbeans.installer.utils.ErrorManager;
import org.netbeans.installer.utils.LogManager;
import org.netbeans.installer.utils.ResourceUtils;
import org.netbeans.installer.utils.StringUtils;
import org.netbeans.installer.utils.SystemUtils;
import org.netbeans.installer.utils.exceptions.InitializationException;
import org.netbeans.installer.utils.helper.Platform;
import org.netbeans.installer.utils.helper.swing.NbiPanel;
import org.netbeans.installer.utils.helper.swing.NbiTextPane;
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel;
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel.ErrorMessagePanelSwingUi;
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel.ErrorMessagePanelUi;
import org.netbeans.installer.wizard.containers.SwingContainer;
import org.netbeans.installer.wizard.ui.SwingUi;
import org.netbeans.installer.wizard.ui.WizardUi;
/**
*
* @author Dmitry Lipin
*/
public class WelcomePanel extends ErrorMessagePanel {
/////////////////////////////////////////////////////////////////////////////////
private Registry bundledRegistry;
private Registry defaultRegistry;
public WelcomePanel() {
setProperty(TITLE_PROPERTY,
DEFAULT_TITLE);
setProperty(DESCRIPTION_PROPERTY,
DEFAULT_DESCRIPTION);
setProperty(WELCOME_TEXT_PROPERTY,
DEFAULT_WELCOME_TEXT);
setProperty(WELCOME_ALREADY_INSTALLED_TEXT_PROPERTY,
DEFAULT_WELCOME_ALREADY_INSTALLED_TEXT);
setProperty(WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT_PROPERTY,
DEFAULT_WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT);
try {
defaultRegistry = Registry.getInstance();
bundledRegistry = new Registry();
final String bundledRegistryUri = System.getProperty(
Registry.BUNDLED_PRODUCT_REGISTRY_URI_PROPERTY);
if (bundledRegistryUri != null) {
bundledRegistry.loadProductRegistry(bundledRegistryUri);
} else {
bundledRegistry.loadProductRegistry(
Registry.DEFAULT_BUNDLED_PRODUCT_REGISTRY_URI);
}
} catch (InitializationException e) {
ErrorManager.notifyError("Cannot load bundled registry", e);
}
}
Registry getBundledRegistry() {
return bundledRegistry;
}
@Override
public WizardUi getWizardUi() {
if (wizardUi == null) {
wizardUi = new WelcomePanelUi(this);
}
return wizardUi;
}
@Override
public boolean canExecuteForward() {
return canExecute();
}
@Override
public boolean canExecuteBackward() {
return canExecute();
}
// private //////////////////////////////////////////////////////////////////////
private boolean canExecute() {
return bundledRegistry.getNodes().size() > 1;
}
/////////////////////////////////////////////////////////////////////////////////
// Inner Classes
public static class WelcomePanelUi extends ErrorMessagePanelUi {
protected WelcomePanel component;
public WelcomePanelUi(WelcomePanel component) {
super(component);
this.component = component;
}
@Override
public SwingUi getSwingUi(SwingContainer container) {
if (swingUi == null) {
swingUi = new WelcomePanelSwingUi(component, container);
}
return super.getSwingUi(container);
}
}
public static class WelcomePanelSwingUi extends ErrorMessagePanelSwingUi {
protected WelcomePanel panel;
private NbiTextPane textPane;
private NbiPanel leftImagePanel;
ValidatingThread validatingThread;
public WelcomePanelSwingUi(
final WelcomePanel component,
final SwingContainer container) {
super(component, container);
this.panel = component;
initComponents();
}
@Override
public String getTitle() {
return null; // the welcome page does not have a title
}
// protected ////////////////////////////////////////////////////////////////
@Override
protected void initializeContainer() {
super.initializeContainer();
container.getBackButton().setVisible(false);
}
@Override
protected void initialize() {
textPane.setContentType("text/html");
textPane.setText(StringUtils.format(panel.getProperty(WELCOME_TEXT_PROPERTY)));
List<Product> toInstall = Registry.getInstance().getProductsToInstall();
if(toInstall.isEmpty()) {
List <Product> list = panel.getBundledRegistry().getProducts();
if(list.size() == 1) {
if(SystemUtils.getCurrentPlatform().isCompatibleWith(list.get(0).getPlatforms())) {
File installationLocation = list.get(0).getInstallationLocation();
textPane.setText(
StringUtils.format(
panel.getProperty(WELCOME_ALREADY_INSTALLED_TEXT_PROPERTY),
list.get(0).getDisplayName(),
installationLocation.getAbsolutePath()));
} else {
textPane.setText(
StringUtils.format(
WELCOME_INCOMPATIBLE_PLATFORM_TEXT,
list.get(0).getDisplayName()));
}
container.getCancelButton().setVisible(false);
container.getNextButton().setText(panel.getProperty(
WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT_PROPERTY));
}
}
super.initialize();
}
// private //////////////////////////////////////////////////////////////////
private void initComponents() {
// textPane /////////////////////////////////////////////////////////////
textPane = new NbiTextPane();
leftImagePanel = new NbiPanel();
int width = 0;
int height = 0;
final String topLeftImage = SystemUtils.resolveString(
System.getProperty(
WELCOME_PAGE_LEFT_TOP_IMAGE_PROPERTY));
final String bottomLeftImage = SystemUtils.resolveString(
System.getProperty(
WELCOME_PAGE_LEFT_BOTTOM_IMAGE_PROPERTY));
int bottomAnchor = NbiPanel.ANCHOR_BOTTOM_LEFT;
if (topLeftImage != null) {
leftImagePanel.setBackgroundImage(topLeftImage, ANCHOR_TOP_LEFT);
width = leftImagePanel.getBackgroundImage(NbiPanel.ANCHOR_TOP_LEFT).getIconWidth();
height += leftImagePanel.getBackgroundImage(NbiPanel.ANCHOR_TOP_LEFT).getIconHeight();
}
if (bottomLeftImage != null) {
leftImagePanel.setBackgroundImage(bottomLeftImage, bottomAnchor);
width = leftImagePanel.getBackgroundImage(bottomAnchor).getIconWidth();
height += leftImagePanel.getBackgroundImage(bottomAnchor).getIconHeight();
}
leftImagePanel.setPreferredSize(new Dimension(width, height));
leftImagePanel.setMaximumSize(new Dimension(width, height));
leftImagePanel.setMinimumSize(new Dimension(width, 0));
leftImagePanel.setSize(new Dimension(width, height));
leftImagePanel.setOpaque(false);
// this /////////////////////////////////////////////////////////////////
int dy = 0;
add(leftImagePanel, new GridBagConstraints(
0, 0, // x, y
1, 100, // width, height
0.0, 1.0, // weight-x, weight-y
GridBagConstraints.WEST, // anchor
GridBagConstraints.VERTICAL, // fill
new Insets(0, 0, 0, 0), // padding
0, 0)); // padx, pady - ???
add(textPane, new GridBagConstraints(
1, dy++, // x, y
4, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.LINE_START, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(10, 11, 11, 11), // padding
0, 0)); // padx, pady - ???
NbiTextPane separatorPane = new NbiTextPane();
separatorPane = new NbiTextPane();
add(separatorPane, new GridBagConstraints(
3, dy, // x, y
1, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.CENTER, // anchor
GridBagConstraints.BOTH, // fill
new Insets(0, 0, 0, 0), // padding
0, 0)); // padx, pady - ???
// move error label after the left welcome image
Component errorLabel = getComponent(0);
getLayout().removeLayoutComponent(errorLabel);
add(errorLabel, new GridBagConstraints(
1, 99, // x, y
99, 1, // width, height
1.0, 0.0, // weight-x, weight-y
GridBagConstraints.CENTER, // anchor
GridBagConstraints.HORIZONTAL, // fill
new Insets(4, 11, 4, 0), // padding
0, 0)); // ??? (padx, pady)
}
}
/////////////////////////////////////////////////////////////////////////////////
// Constants
public static final String DEFAULT_TITLE =
ResourceUtils.getString(WelcomePanel.class,
"WP.title");
public static final String DEFAULT_DESCRIPTION =
ResourceUtils.getString(WelcomePanel.class,
"WP.description"); // NOI18N
public static final String WELCOME_TEXT_PROPERTY =
"welcome.text"; // NOI18N
public static final String WELCOME_ALREADY_INSTALLED_TEXT_PROPERTY =
"welcome.already.installed.text"; // NOI18N
public static final String WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT_PROPERTY =
"welcome.already.installed.next.button.text";//NOI18N
public static final String WELCOME_INCOMPATIBLE_PLATFORM_TEXT =
ResourceUtils.getString(WelcomePanel.class,
"WP.incompatible.platform.text");//NOI18N
public static final String DEFAULT_WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT =
ResourceUtils.getString(WelcomePanel.class,
"WP.already.installed.next.button.text");//NOI18N
public static final String DEFAULT_WELCOME_TEXT =
ResourceUtils.getString(WelcomePanel.class,
"WP.welcome.text"); // NOI18N
public static final String DEFAULT_WELCOME_ALREADY_INSTALLED_TEXT =
ResourceUtils.getString(WelcomePanel.class,
"WP.already.installed.text"); // NOI18N
public static final String WELCOME_PAGE_LEFT_TOP_IMAGE_PROPERTY =
"nbi.wizard.ui.swing.welcome.left.top.image";//NOI18N
public static final String WELCOME_PAGE_LEFT_BOTTOM_IMAGE_PROPERTY =
"nbi.wizard.ui.swing.welcome.left.bottom.image";//NOI18N
}

@ -0,0 +1,43 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
#####################################################################################
# MainSequence.java
MS.IA.title=Installation
MS.IA.description=Please wait while the installer installs {product-name}.

@ -0,0 +1,154 @@
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* The contents of this file are subject to the terms of either the GNU General
* Public License Version 2 only ("GPL") or the Common Development and Distribution
* License("CDDL") (collectively, the "License"). You may not use this file except in
* compliance with the License. You can obtain a copy of the License at
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
* License for the specific language governing permissions and limitations under the
* License. When distributing the software, include this License Header Notice in
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
* designates this particular file as subject to the "Classpath" exception as
* provided by Oracle in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License Header,
* with the fields enclosed by brackets [] replaced by your own identifying
* information: "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* The Original Software is NetBeans. The Initial Developer of the Original Software
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
* Rights Reserved.
*
* If you wish your version of this file to be governed by only the CDDL or only the
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
* this software in this distribution under the [CDDL or GPL Version 2] license." If
* you do not indicate a single choice of license, a recipient has the option to
* distribute your version of this file under either the CDDL, the GPL Version 2 or
* to extend the choice of license to its licensees as provided above. However, if
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
* the option applies only if the new code is made subject to such option by the
* copyright holder.
*/
package org.mycompany.installer.wizard.components.sequences;
import org.netbeans.installer.wizard.components.sequences.ProductWizardSequence;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mycompany.installer.wizard.components.panels.PostInstallSummaryPanel;
import org.mycompany.installer.wizard.components.panels.PreInstallSummaryPanel;
import org.netbeans.installer.product.components.Product;
import org.netbeans.installer.product.Registry;
import org.netbeans.installer.utils.ResourceUtils;
import org.netbeans.installer.utils.helper.ExecutionMode;
import org.netbeans.installer.wizard.components.WizardSequence;
import org.netbeans.installer.wizard.components.actions.DownloadConfigurationLogicAction;
import org.netbeans.installer.wizard.components.actions.DownloadInstallationDataAction;
import org.netbeans.installer.wizard.components.actions.InstallAction;
import org.netbeans.installer.wizard.components.actions.UninstallAction;
import org.netbeans.installer.wizard.components.panels.LicensesPanel;
/**
*
* @author Dmitry Lipin
*/
public class MainSequence extends WizardSequence {
/////////////////////////////////////////////////////////////////////////////////
// Instance
private DownloadConfigurationLogicAction downloadConfigurationLogicAction;
private LicensesPanel licensesPanel;
private PreInstallSummaryPanel preInstallSummaryPanel;
private UninstallAction uninstallAction;
private DownloadInstallationDataAction downloadInstallationDataAction;
private InstallAction installAction;
private PostInstallSummaryPanel postInstallSummaryPanel;
private Map<Product, ProductWizardSequence> productSequences;
public MainSequence() {
downloadConfigurationLogicAction = new DownloadConfigurationLogicAction();
licensesPanel = new LicensesPanel();
preInstallSummaryPanel = new PreInstallSummaryPanel();
uninstallAction = new UninstallAction();
downloadInstallationDataAction = new DownloadInstallationDataAction();
installAction = new InstallAction();
postInstallSummaryPanel = new PostInstallSummaryPanel();
productSequences = new HashMap<Product, ProductWizardSequence>();
installAction.setProperty(InstallAction.TITLE_PROPERTY,
DEFAULT_IA_TITLE);
installAction.setProperty(InstallAction.DESCRIPTION_PROPERTY,
DEFAULT_IA_DESCRIPTION);
}
@Override
public void executeForward() {
final Registry registry = Registry.getInstance();
final List<Product> toInstall = registry.getProductsToInstall();
final List<Product> toUninstall = registry.getProductsToUninstall();
// remove all current children (if there are any), as the components
// selection has probably changed and we need to rebuild from scratch
getChildren().clear();
// the set of wizard components differs greatly depending on the execution
// mode - if we're installing, we ask for input, run a wizard sequence for
// each selected component and then download and install; if we're creating
// a bundle, we only need to download and package things
if (toInstall.size() > 0) {
addChild(downloadConfigurationLogicAction);
addChild(licensesPanel);
for (Product product : toInstall) {
if (!productSequences.containsKey(product)) {
productSequences.put(
product,
new ProductWizardSequence(product));
}
addChild(productSequences.get(product));
}
}
addChild(preInstallSummaryPanel);
if (toUninstall.size() > 0) {
addChild(uninstallAction);
}
if (toInstall.size() > 0) {
addChild(downloadInstallationDataAction);
addChild(installAction);
}
addChild(postInstallSummaryPanel);
super.executeForward();
}
@Override
public boolean canExecuteForward() {
return ExecutionMode.NORMAL == ExecutionMode.getCurrentExecutionMode() &&
(Registry.getInstance().getProductsToInstall().size() > 0 ||
Registry.getInstance().getProductsToUninstall().size() > 0);
}
/////////////////////////////////////////////////////////////////////////////////
// Constants
public static final String DEFAULT_IA_TITLE =
ResourceUtils.getString(
MainSequence.class,
"MS.IA.title"); // NOI18N
public static final String DEFAULT_IA_DESCRIPTION =
ResourceUtils.getString(
MainSequence.class,
"MS.IA.description"); // NOI18N
}

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wizard-components.xsd">
<component
class="org.mycompany.installer.wizard.components.actions.InitializeAction"/>
<component
class="org.mycompany.installer.wizard.components.panels.WelcomePanel"/>
<component
class="org.mycompany.installer.wizard.components.sequences.MainSequence"/>
<component
class="org.netbeans.installer.wizard.components.sequences.CreateBundleSequence"/>
<component
class="org.netbeans.installer.wizard.components.actions.FinalizeRegistryAction"/>
</wizard>

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 B

@ -0,0 +1,77 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
# path to the directory where the base build scripts library and properties
# reside
common.dir=../../../../.common
# path to the local working directory; this directory which will be the target
# for checking out the sources and will be used for the build process
# * this path can be either absolute or relative in any unix environment,
# however, only relative paths are supported on windows, as the cygwin scp
# command does not properly handle colon in local paths
work.dir=./build
# path to the local distributive directory; this directory will contain the
# distributive file, when (if) the build script finishes successfully
dist.dir=./dist
# path to the engine sources within the cvs module; it should be a relative
# path from the module's root, e.g. for 'nbi/engine', where 'nbi is the module
# name, the path should be 'engine'
cvs.path=engine
# name of the engine's distributive file
engine.dist.file.name=nbi-engine.jar
# we do not need to build anything native for the netbeans-specific engine, as it
# does not contain any native components
build.native=false
# custom parameter for the netbeans project build script - in case of the netbeans
# nbi engine - the location of the core engine jar file
nb.custom.parameter=-Dreference.NBI_Engine.jar=${core.engine.dist.file}
# sources parameters; a search-and-replace will be run over the sources after
# check-out, replacing [token] => [value]; regular expressions are not allowed
# * ${sources.params.length} - total number of the parameters
# * indices should start with 1
# * parameters are not i18n compliant
sources.params.length=0

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<!--
This is the build script for the NetBeans IDE nbi engine instance.
It inherits most of the functionality from the base script for building nbi
engine instances, while providing this instance-specific values for several
core properties. For more details on the values of these properties see
the build.properties file.
-->
<project name="netbeans-engine" default="usage" basedir=".">
<!-- import the properties that are specific to this environment -->
<property file="${environment.properties}"/>
<!-- import the properties that are specific to this engine instance -->
<property file="build.properties"/>
<!-- import the base script for building the engine -->
<import file="${common.dir}/engine.xml" optional="false"/>
<!-- ============================================================================
Default
============================================================================= -->
<!--
The default target.
Does nothing except printing the usage information.
-->
<target name="usage">
<echo>
In order to 'clean', 'checkout' and 'build' the engine use the
'build-all' target. To 'clean', 'checkout', 'build' and
'release' - use 'release-all'.
For more details, please see the source of this build script.
</echo>
</target>
</project>

@ -0,0 +1,159 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU General Public
# License Version 2 only ("GPL") or the Common Development and Distribution
# License("CDDL") (collectively, the "License"). You may not use this file except in
# compliance with the License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
# License for the specific language governing permissions and limitations under the
# License. When distributing the software, include this License Header Notice in
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
# designates this particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
# If applicable, add the following below the License Header, with the fields enclosed
# by brackets [] replaced by your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original Software
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
# Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL or only the
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
# this software in this distribution under the [CDDL or GPL Version 2] license." If
# you do not indicate a single choice of license, a recipient has the option to
# distribute your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above. However, if you
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
# option applies only if the new code is made subject to such option by the copyright
# holder.
#
# path to the directory where the base build scripts library and properties
# reside
common.dir=../../../../../.common
# path to the local working directory; this directory which will be the target
# for checking out the sources and will be used for the build process
# * this path can be either absolute or relative in any unix environment,
# however, only relative paths are supported on windows, as the cygwin scp
# command does not properly handle colon in local paths
work.dir=./build
# path to the local distributive directory; this directory will contain the
# distributive file, when (if) the build script finishes successfully
dist.dir=./dist
# path to the products's sources within the cvs module; it should be a relative
# path from the module's root, e.g. for 'nbi/engine', where 'nbi is the module
# name, the path should be 'engine'
cvs.path=components/products/helloworld
# core product properties:
# * ${product.uid} - product "family" (e.g. nb-ide)
# * ${product.version} - actual products' version; together with the uid it
# forms the unique identifier for the product)
# * ${product.platforms} - the list of platforms that are supported by this
# product (note that this property is not related to native libraries)
product.uid={product-uid}
product.version={product-version}
product.platforms=generic
# miscellaneous product properties:
# * ${product.status} - default status that the product will have in the
# registry. it is meant to be always "not-installed", unless you want
# something really exotic
# * ${product.offset} - order of the product's node among its parent's
# children, the bigger the offset value, the further the product's node will
# be
# * ${product.expand} - whether to automatically expand the product's node in
# the components tree or not; 'true'/'false'
# * ${product.visible} - whether the product's node is visible or not (note
# that this value will be modified at nbi runtime, 'true' may become 'false'
# if the product is filtered out); 'true'/'false'
# * ${product.features} - list of features that this porduct belongs to; the
# list should be space-separated
product.status=not-installed
product.offset=20000
product.expand=false
product.visible=true
product.features=
# list of configuration logic jar files; normally the first one would be the
# distributive file of the product's netbeans project
# * ${product.logic.length} - total number of the files
# * indices should start with 1
product.logic.length=1
product.logic.1.path=${nbproject.dist.dir}/${nbproject.dist.file.name}
# list of product installation data files
# * ${product.data.length} - total number of the files
# * ${product.data.N.uri} - uri at which the installation data file is located
# * ${product.data.N.zip} - whether the data file is a zip archive which needs to
# be extracted or it is a file that should be used directly; 'true'/'false'
# * indices should start with 1
product.data.length=1
product.data.1.zip=true
product.data.1.path={product-data-path}
product.data.sub.dir={product-data-sub-dir}
# modificator for the required disk space parameter; the core value will be the
# sum of unzipped unstallation data files
# * the measurement unit is one byte
product.disk.space.modificator=0
# product's requirements (i.e. other products that should be installed
# in order for this product to succesfully install and function)
# * ${product.requirements.length} - total number of the requirements
# * indices should start with 1
product.requirements.length=0
#product.requirements.1.uid=
#product.requirements.1.version-lower=
#product.requirements.1.version-upper=
# product's conflicts (i.e. other products that prevent this product from
# functioning correctly, and thus cannot be installed together with it)
# * ${product.conflicts.length} - total number of the conflicts
# * indices should start with 1
product.conflicts.length=0
#product.conflicts.1.uid=
#product.conflicts.1.version-lower=
#product.conflicts.1.version-upper=
# other products that should be installed prior to this product; these
# dependencies do not imply that the dependent product will be installed at
# all, but if both the current and the dependent product are selected for
# installation, the latter will be installed first
# * ${product.install-afters.length} - total number of the install-afters
# * indices should start with 1
product.install-afters.length=0
#product.install-afters.1.uid=
# additional product's properties; these will appear in the product's
# descriptor and in the registry in the form of
# <property name="[name]">value</property> tags.
# * ${product.properties.length} - total number of the properties
# * indices should start with 1
# * properties are not i18n compliant
product.properties.length=3
product.properties.1.name=installation.location
product.properties.1.value=$N{install}/{product-install-directory-name}
product.properties.2.name=installation.location.windows
product.properties.2.value=$N{install}/{product-install-directory-name-windows}
product.properties.3.name=installation.location.macosx
product.properties.3.value=$N{install}/{product-install-directory-name-macosx}.app
# sources parameters; a search-and-replace will be run over the sources after
# check-out, replacing [token] => [value]; regular expressions are not allowed
# * ${sources.params.length} - total number of the parameters
# * indices should start with 1
# * parameters are not i18n compliant
sources.params.length=0

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
The contents of this file are subject to the terms of either the GNU General Public
License Version 2 only ("GPL") or the Common Development and Distribution
License("CDDL") (collectively, the "License"). You may not use this file except in
compliance with the License. You can obtain a copy of the License at
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
License for the specific language governing permissions and limitations under the
License. When distributing the software, include this License Header Notice in
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
designates this particular file as subject to the "Classpath" exception as provided
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
If applicable, add the following below the License Header, with the fields enclosed
by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
Contributor(s):
The Original Software is NetBeans. The Initial Developer of the Original Software
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
Rights Reserved.
If you wish your version of this file to be governed by only the CDDL or only the
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
this software in this distribution under the [CDDL or GPL Version 2] license." If
you do not indicate a single choice of license, a recipient has the option to
distribute your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above. However, if you
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
option applies only if the new code is made subject to such option by the copyright
holder.
-->
<!--
This is the build script for the helloworld product package.
It inherits most of the functionality from the base script for building nbi
product packages, while providing this instance-specific values for several
core properties. For more details on the values of these properties see
the build.properties file.
-->
<project name="helloworld-product" default="usage" basedir=".">
<!-- import the properties that are specific to this environment -->
<property file="${environment.properties}"/>
<!-- import the properties that are specific to this product package -->
<property file="build.properties"/>
<!-- import the base script for building product packages -->
<import file="${common.dir}/product.xml" optional="false"/>
<target name="-pre-package">
<mkdir dir="${data.directory}/__tmpdir__"/>
<move todir="${data.directory}/__tmpdir__">
<fileset dir="${data.directory}/${product.data.sub.dir}">
<include name="**"/>
</fileset>
</move>
<delete dir="${data.directory}/${product.data.sub.dir}" includeemptydirs="true"/>
<move todir="${data.directory}">
<fileset dir="${data.directory}/__tmpdir__">
<include name="**"/>
</fileset>
</move>
<delete dir="${data.directory}/__tmpdir__" includeemptydirs="true"/>
<!--
<exec executable="sh" failonerror="false" dir="${data.directory}">
<arg value="-c"/>
<arg value="chmod a+x bin/*.sh"/>
</exec>
-->
</target>
<!--
The default target.
Does nothing except printing the usage information.
-->
<target name="usage">
<echo>
In order to 'clean', 'checkout' and 'build' the group use the
'build-all' target. To 'clean', 'checkout', 'build' and
'release' - use 'release-all'.
For more details, please see the source of this build script.
</echo>
</target>
</project>

@ -0,0 +1,198 @@
<project name="build installers" default="build" basedir=".">
<!--<property file="${basedir}/template.properties"/>-->
<target name="build" depends="init,prepare-sources,prepare-zip,-build,post-build,run-build"/>
<target name="-init-props">
<available file="${suite.location}/nbproject/project.properties" property="do.load.ant.props"/>
<available file="${suite.location}/pom.xml" property="do.load.maven.props"/>
</target>
<target name="-init-ant-props" if="do.load.ant.props" depends="-init-props">
<property file="${suite.location}/nbproject/project.properties" prefix="suite.props."/>
</target>
<target name="-init-maven-props" if="do.load.maven.props" depends="-init-props">
<xmlproperty file="${suite.location}/pom.xml" prefix="pom.props"/>
<property name="suite.props.app.name" value="${pom.props.project.properties.brandingToken}"/>
<property name="suite.props.app.title" value="${pom.props.project.artifactId}"/>
</target>
<target name="init" depends="-clean,-init-ant-props,-init-maven-props">
<property name="installer.build.dir" value="${suite.location}/build/installer"/>
<property name="suite.dist.directory" value="${suite.location}/dist"/>
<property name="suite.dist.zip" value="${suite.dist.directory}/${suite.props.app.name}.zip"/>
<property name="installers.file.prefix" value="${suite.props.app.name}"/>
<delete dir="${installer.build.dir}" includeemptydirs="yes" failonerror="false"/>
<mkdir dir="${installer.build.dir}"/>
</target>
<target name="-clean">
</target>
<target name="post-build">
</target>
<target name="-build">
</target>
<target name="run-build">
<ant dir="${installer.build.dir}" inheritAll="false"/>
</target>
<target name="-init-zip">
<condition property="do.build.zip">
<available file="${suite.dist.zip}"/>
</condition>
</target>
<target name="-build-zip" depends="-init-zip" unless="do.build.zip">
<antcall target="-build-zip-ant"/>
<antcall target="-build-zip-maven"/>
</target>
<target name="-build-zip-ant" depends="-init-zip" if="do.load.ant.props">
<subant buildpath="${suite.location}" inheritAll="false" target="build-zip"/>
</target>
<target name="-build-zip-maven" depends="-init-zip" if="do.load.maven.props">
<condition property="mvn.executable" value="mvn.bat" else="mvn">
<os family="windows"/>
</condition>
<exec executable="${mvn.executable}" dir="${suite.location}">
<arg value="install"/>
<env key="JAVA_HOME" value="${java.home}"/>
</exec>
</target>
<target name="prepare-zip" depends="-init-zip,-build-zip"/>
<target name="prepare-sources">
<copy todir="${installer.build.dir}">
<fileset dir="${nbi.stub.location}"/>
</copy>
<copy todir="${installer.build.dir}/.common">
<fileset dir="${nbi.stub.common.location}"/>
</copy>
<property name="product-uid" value="${suite.nbi.product.uid}"/>
<!--normen-->
<property name="product-version" value="${suite.nbi.product.uid}"/>
<condition property="icon.path" value="${nbi.icon.file}" else="${installer.build.dir}/ext/components/products/helloworld/data/icon48.png">
<and>
<isset property="nbi.icon.file"/>
<available file="${nbi.icon.file}"/>
</and>
</condition>
<basename property="icon.file.name" file="${icon.path}"/>
<condition property="icon.extension" value=".gif">
<or>
<matches string="${icon.file.name}" pattern="^.*\.gif$"/>
<matches string="${icon.file.name}" pattern="^.*\.gif$"/>
</or>
</condition>
<condition property="icon.extension" value=".png">
<or>
<matches string="${icon.file.name}" pattern="^.*\.png$"/>
<matches string="${icon.file.name}" pattern="^.*\.PNG$"/>
</or>
</condition>
<property name="icon.name" value="${suite.props.app.name}${icon.extension}"/>
<copy file="${icon.path}" tofile="${installer.build.dir}/ext/components/products/helloworld/src/org/mycompany/${icon.name}"/>
<replace file="${installer.build.dir}/build.properties" encoding="utf-8">
<replacefilter token="{nbi.ant.tasks.jar}" value="${nbi.ant.tasks.jar}"/>
<replacefilter token="{nbi.registries.management.jar}" value="${nbi.registries.management.jar}"/>
<replacefilter token="{nbi.engine.jar}" value="${nbi.engine.jar}"/>
<replacefilter token="{product-platforms}" value="${generate.installer.for.platforms}"/>
<replacefilter token="{generator-jdk-location-forward-slashes}" value="${generator-jdk-location-forward-slashes}"/>
<replacefilter token="{generated-installers-location-forward-slashes}" value="${suite.dist.directory}"/>
<replacefilter token="{pack200.enabled}" value="${pack200.enabled}"/>
<replacefilter token="{generated-installers-prefix}" value="${installers.file.prefix}"/>
<replacefilter token="{product-uid}" value="${product-uid}"/>
<!--normen-->
<replacefilter token="{product-version}" value="${product-version}"/>
</replace>
<replace dir="${installer.build.dir}/ext" encoding="utf-8">
<replacefilter token="{product-name}" value="${suite.props.app.title}"/>
<replacefilter token="{product-simple-name}" value="${suite.props.app.name}"/>
<replacefilter token="{product-description}" value=""/>
<replacefilter token="{product-uid}" value="${product-uid}"/>
<replacefilter token="{product-icon-name}" value="${icon.name}"/>
</replace>
<replace dir="${installer.build.dir}/ext/infra/build/products" encoding="utf-8">
<replacefilter token="{product.platforms}" value="${generate.installer.for.platforms}"/>
<replacefilter token="{product-data-path}" value="${suite.dist.zip}"/>
<replacefilter token="{product-data-sub-dir}" value="${suite.props.app.name}"/>
<replacefilter token="{product-uid}" value="${product-uid}"/>
<!--normen-->
<replacefilter token="{product-version}" value="${product-version}"/>
<replacefilter token="{product-install-directory-name}" value="${suite.props.app.name}"/>
<replacefilter token="{product-install-directory-name-windows}" value="${suite.props.app.name}"/>
<replacefilter token="{product-install-directory-name-macosx}" value="${suite.props.app.name}"/>
</replace>
<property name="dir.dir" value="${installer.build.dir}/tmpdirfornac"/>
<mkdir dir="${dir.dir}"/>
<native2ascii encoding="utf-8" src="${installer.build.dir}" dest="${dir.dir}" includes="build.properties ext/**/*.properties"/>
<copy todir="${installer.build.dir}" overwrite="true" includeEmptyDirs="true">
<fileset dir="${dir.dir}"/>
</copy>
<condition property="license.defined">
<and>
<isset property="nbi.license.file"/>
<available file="${nbi.license.file}"/>
</and>
</condition>
<antcall target="-prepare-license"/>
<condition property="icon.defined">
<and>
<isset property="nbi.icon.file"/>
<available file="${nbi.icon.file}"/>
</and>
</condition>
<antcall target="-prepare-icon"/>
<condition property="dock.icon.defined">
<and>
<isset property="nbi.dock.icon.file"/>
<available file="${nbi.dock.icon.file}"/>
</and>
</condition>
<antcall target="-prepare-dock-icon"/>
<delete dir="${dir.dir}" includeEmptyDirs="true"/>
</target>
<target name="-prepare-license" if="license.defined">
<copy file="${nbi.license.file}" tofile="${installer.build.dir}/ext/components/products/helloworld/src/org/mycompany/license.txt" overwrite="true"/>
</target>
<target name="-prepare-icon" if="icon.defined">
<copy file="${nbi.icon.file}" tofile="${installer.build.dir}/ext/engine/src/org/mycompany/installer/wizard/wizard-icon.png" overwrite="true"/>
</target>
<target name="-prepare-dock-icon" if="dock.icon.defined">
<mkdir dir="${installer.build.dir}/ext/engine/src/org/netbeans/installer/utils/system/launchers/impl"/>
<copy file="${nbi.dock.icon.file}" tofile="${installer.build.dir}/ext/engine/src/org/netbeans/installer/utils/system/launchers/impl/dockicon.icns"/>
<copy file="${nbi.dock.icon.file}" tofile="${installer.build.dir}/ext/components/products/helloworld/src/org/mycompany/${suite.props.app.name}.icns"/>
</target>
<target name="replace">
<property file="${token.file}"/>
<replaceregexp file="${file.to.replace}" flags="mg">
<regexp pattern="${regexp.token}"/>
<substitution expression="${regexp.replacement}"/>
</replaceregexp>
</target>
</project>

@ -0,0 +1,16 @@
suite.location=C:/Documents and Settings/Lipin/My Documents/NetBeansProjects/MyApp
nbi.cluster.location=D:/space/NB-IDE/proto/nbbuild/netbeans/extra
nbi.stub.location=${nbi.cluster.location}/nbi/stub
nbi.stub.common.location=${nbi.cluster.location}/nbi/.common
nbi.ant.tasks.jar=${nbi.cluster.location}/modules/ext/nbi-ant-tasks.jar
nbi.registries.management.jar=${nbi.cluster.location}/modules/ext/nbi-registries-management.jar
nbi.engine.jar=${nbi.cluster.location}/modules/ext/nbi-engine.jar
generate.installer.for.platforms=windows linux macosx
generator-jdk-location-forward-slashes=C:/Program Files/Java/jdk1.5.0_16
pack200.enabled=false
suite.nbi.product.uid=myapp
Loading…
Cancel
Save