git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8767 75d07b2b-3a1a-0410-a2c5-0572b91ccdca3.0
@ -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> |
@ -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} |
After Width: | Height: | Size: 821 B |
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 "${ant.java.version}"/> |
||||
<condition property="have-jdk-older-than-1.4"> |
||||
<or> |
||||
<contains string="${version-output}" substring="java version "1.0"/> |
||||
<contains string="${version-output}" substring="java version "1.1"/> |
||||
<contains string="${version-output}" substring="java version "1.2"/> |
||||
<contains string="${version-output}" substring="java version "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 "${ant.java.version}"/> |
||||
<condition property="have-jdk-older-than-1.4"> |
||||
<or> |
||||
<contains string="${version-output}" substring="java version "1.0"/> |
||||
<contains string="${version-output}" substring="java version "1.1"/> |
||||
<contains string="${version-output}" substring="java version "1.2"/> |
||||
<contains string="${version-output}" substring="java version "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
|
||||
} |
After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 5.0 KiB |
@ -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> |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 9.6 KiB |
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 |