From 870c0522d9c919e36eb5a25816adb1186967b0de Mon Sep 17 00:00:00 2001 From: nie <nie@informatik.uni-kiel.de> Date: Tue, 20 Dec 2011 17:30:18 +0100 Subject: [PATCH] Added an initial version of the project. --- .gitignore | 3 +- build.xml | 71 ++ lib/ui-darkness-1.0.2.jar | Bin 0 -> 32024 bytes nbproject/ant-deploy.xml | 49 ++ nbproject/build-impl.xml | 1077 +++++++++++++++++++++++++++++ nbproject/genfiles.properties | 8 + nbproject/project.properties | 87 +++ nbproject/project.xml | 35 + src/conf/MANIFEST.MF | 2 + src/java/beans/ComponentBean.java | 35 + src/java/beans/TreeBean.java | 32 + web/META-INF/context.xml | 2 + web/WEB-INF/beans.xml | 5 + web/WEB-INF/web.xml | 28 + web/main.xhtml | 61 ++ 15 files changed, 1494 insertions(+), 1 deletion(-) create mode 100644 build.xml create mode 100644 lib/ui-darkness-1.0.2.jar create mode 100644 nbproject/ant-deploy.xml create mode 100644 nbproject/build-impl.xml create mode 100644 nbproject/genfiles.properties create mode 100644 nbproject/project.properties create mode 100644 nbproject/project.xml create mode 100644 src/conf/MANIFEST.MF create mode 100644 src/java/beans/ComponentBean.java create mode 100644 src/java/beans/TreeBean.java create mode 100644 web/META-INF/context.xml create mode 100644 web/WEB-INF/beans.xml create mode 100644 web/WEB-INF/web.xml create mode 100644 web/main.xhtml diff --git a/.gitignore b/.gitignore index fe66d427..2956a48c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -/tmp/ \ No newline at end of file +/tmp/ +/build/ \ No newline at end of file diff --git a/build.xml b/build.xml new file mode 100644 index 00000000..c3856935 --- /dev/null +++ b/build.xml @@ -0,0 +1,71 @@ +<?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="Kieker.WebGUI" default="default" basedir="."> + <description>Builds, tests, and runs the project Kieker.WebGUI.</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-dist: called before archive building + -post-dist: called after archive building + -post-clean: called after cleaning build products + -pre-run-deploy: called before deploying + -post-run-deploy: called after deploying + + Example of pluging an obfuscator after the compilation could look like + + <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. + + + Other way how to customize the build is by overriding existing main targets. + The target 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 + do-dist: archive building + run: execution of project + javadoc-build: javadoc generation + + Example of overriding the target for project execution could look like + + <target name="run" depends="<PROJNAME>-impl.jar"> + <exec dir="bin" executable="launcher.exe"> + <arg file="${dist.jar}"/> + </exec> + </target> + + Notice that overridden target depends on jar target and not only on + compile target as regular run target does. Again, for list of available + properties which you can use check the target you are overriding in + nbproject/build-impl.xml file. + + --> +</project> diff --git a/lib/ui-darkness-1.0.2.jar b/lib/ui-darkness-1.0.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..ec8003b0e9623b173bf4e80e02632ddd221b8c7a GIT binary patch literal 32024 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�h0PJ2mTin~2P*8CWh$k;k0ay47n3dQ_+5 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 BYzqJY literal 0 HcmV?d00001 diff --git a/nbproject/ant-deploy.xml b/nbproject/ant-deploy.xml new file mode 100644 index 00000000..9bc5adf7 --- /dev/null +++ b/nbproject/ant-deploy.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project default="-deploy-ant" basedir="."> + <target name="-init" if="deploy.ant.enabled"> + <property file="${deploy.ant.properties.file}"/> + <tempfile property="temp.module.folder" prefix="tomcat" destdir="${java.io.tmpdir}"/> + <unwar src="${deploy.ant.archive}" dest="${temp.module.folder}"> + <patternset includes="META-INF/context.xml"/> + </unwar> + <xmlproperty file="${temp.module.folder}/META-INF/context.xml"/> + <delete dir="${temp.module.folder}"/> + </target> + <target name="-check-credentials" if="deploy.ant.enabled" depends="-init"> + <fail message="Tomcat password has to be passed as tomcat.password property."> + <condition> + <not> + <isset property="tomcat.password"/> + </not> + </condition> + </fail> + </target> + <target name="-deploy-ant" if="deploy.ant.enabled" depends="-init,-check-credentials"> + <echo message="Deploying ${deploy.ant.archive} to ${Context(path)}"/> + <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"> + <classpath> + <pathelement path="${tomcat.home}/lib/catalina-ant.jar"/> + <pathelement path="${tomcat.home}/lib/tomcat-coyote.jar"/> + <pathelement path="${tomcat.home}/lib/tomcat-util.jar"/> + <pathelement path="${tomcat.home}/bin/tomcat-juli.jar"/> + </classpath> + </taskdef> + <deploy url="${tomcat.url}/manager/text" username="${tomcat.username}" + password="${tomcat.password}" path="${Context(path)}" + war="${deploy.ant.archive}"/> + <property name="deploy.ant.client.url" value="${tomcat.url}${Context(path)}"/> + </target> + <target name="-undeploy-ant" if="deploy.ant.enabled" depends="-init,-check-credentials"> + <echo message="Undeploying ${Context(path)}"/> + <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"> + <classpath> + <pathelement path="${tomcat.home}/lib/catalina-ant.jar"/> + <pathelement path="${tomcat.home}/lib/tomcat-coyote.jar"/> + <pathelement path="${tomcat.home}/lib/tomcat-util.jar"/> + <pathelement path="${tomcat.home}/bin/tomcat-juli.jar"/> + </classpath> + </taskdef> + <undeploy url="${tomcat.url}/manager/text" username="${tomcat.username}" + password="${tomcat.password}" path="${Context(path)}"/> + </target> +</project> diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100644 index 00000000..b09dd12c --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,1077 @@ +<?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 + - dist + - execution + - debugging + - javadoc + - junit compilation + - junit execution + - junit debugging + - cleanup + + --> +<project xmlns:webproject1="http://www.netbeans.org/ns/web-project/1" xmlns:webproject2="http://www.netbeans.org/ns/web-project/2" xmlns:webproject3="http://www.netbeans.org/ns/web-project/3" basedir=".." default="default" name="Kieker.WebGUI-impl"> + <import file="ant-deploy.xml"/> + <fail message="Please build using Ant 1.7.1 or higher."> + <condition> + <not> + <antversion atleast="1.7.1"/> + </not> + </condition> + </fail> + <target depends="dist,javadoc" description="Build 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/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/project.properties"/> + </target> + <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" if="dist.ear.dir" name="-do-ear-init"/> + <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init"> + <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"> + <isfalse value="${javadoc.preview}"/> + </condition> + <property name="javac.compilerargs" value=""/> + <condition property="no.deps"> + <and> + <istrue value="${no.dependencies}"/> + </and> + </condition> + <condition property="no.dist.ear.dir"> + <not> + <isset property="dist.ear.dir"/> + </not> + </condition> + <property name="build.web.excludes" value="${build.classes.excludes}"/> + <condition property="do.compile.jsps"> + <istrue value="${compile.jsps}"/> + </condition> + <condition property="do.debug.server"> + <or> + <not> + <isset property="debug.server"/> + </not> + <istrue value="${debug.server}"/> + <and> + <not> + <istrue value="${debug.server}"/> + </not> + <not> + <istrue value="${debug.client}"/> + </not> + </and> + </or> + </condition> + <condition property="do.debug.client"> + <istrue value="${debug.client}"/> + </condition> + <condition property="do.display.browser"> + <istrue value="${display.browser}"/> + </condition> + <condition property="do.display.browser.debug"> + <and> + <isset property="do.display.browser"/> + <not> + <isset property="do.debug.client"/> + </not> + </and> + </condition> + <available file="${conf.dir}/MANIFEST.MF" property="has.custom.manifest"/> + <available file="${persistence.xml.dir}/persistence.xml" property="has.persistence.xml"/> + <condition property="do.war.package.with.custom.manifest"> + <isset property="has.custom.manifest"/> + </condition> + <condition property="do.war.package.without.custom.manifest"> + <not> + <isset property="has.custom.manifest"/> + </not> + </condition> + <condition property="do.tmp.war.package.with.custom.manifest"> + <and> + <isset property="has.custom.manifest"/> + <or> + <isfalse value="${directory.deployment.supported}"/> + <isset property="dist.ear.dir"/> + </or> + </and> + </condition> + <condition property="do.tmp.war.package.without.custom.manifest"> + <and> + <not> + <isset property="has.custom.manifest"/> + </not> + <or> + <isfalse value="${directory.deployment.supported}"/> + <isset property="dist.ear.dir"/> + </or> + </and> + </condition> + <condition property="do.tmp.war.package"> + <or> + <isfalse value="${directory.deployment.supported}"/> + <isset property="dist.ear.dir"/> + </or> + </condition> + <property name="build.meta.inf.dir" value="${build.web.dir}/META-INF"/> + <condition else="" property="application.args.param" value="${application.args}"> + <and> + <isset property="application.args"/> + <not> + <equals arg1="${application.args}" arg2="" trim="true"/> + </not> + </and> + </condition> + <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="runmain.jvmargs" value=""/> + <path id="endorsed.classpath.path" path="${endorsed.classpath}"/> + <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'"> + <and> + <isset property="endorsed.classpath"/> + <length length="0" string="${endorsed.classpath}" when="greater"/> + </and> + </condition> + <condition else="false" property="jdkBug6558476"> + <and> + <matches pattern="1\.[56]" string="${java.specification.version}"/> + <not> + <os family="unix"/> + </not> + </and> + </condition> + <property name="javac.fork" value="${jdkBug6558476}"/> + </target> + <target depends="init" name="-init-cos" unless="deploy.on.save"> + <condition property="deploy.on.save" value="true"> + <or> + <istrue value="${j2ee.deploy.on.save}"/> + <istrue value="${j2ee.compile.on.save}"/> + </or> + </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="build.web.dir">Must set build.web.dir</fail> + <fail unless="build.generated.dir">Must set build.generated.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.war">Must set dist.war</fail> + <condition property="missing.j2ee.server.home"> + <and> + <matches pattern="j2ee.server.home" string="${j2ee.platform.classpath}"/> + <not> + <isset property="j2ee.server.home"/> + </not> + </and> + </condition> + <fail if="missing.j2ee.server.home"> +The Java EE server classpath is not correctly set up - server home directory is missing. +Either open the project in the IDE and assign the server or setup the server classpath manually. +For example like this: + ant -Dj2ee.server.home=<app_server_installation_directory> + </fail> + <fail unless="j2ee.platform.classpath"> +The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}. +Either open the project in the IDE and assign the server or setup the server classpath manually. +For example like this: + ant -Duser.properties.file=<path_to_property_file> (where you put the property "j2ee.platform.classpath" in a .properties file) +or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties file is used) + </fail> + </target> + <target name="-init-macrodef-property"> + <macrodef name="property" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute name="name"/> + <attribute name="value"/> + <sequential> + <property name="@{name}" value="${@{value}}"/> + </sequential> + </macrodef> + </target> + <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors"> + <macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${src.dir}" name="srcdir"/> + <attribute default="${build.classes.dir}" name="destdir"/> + <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <attribute default="${javac.processorpath}" name="processorpath"/> + <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="${javac.debug}" name="debug"/> + <attribute default="${empty.dir}" name="gensrcdir"/> + <element name="customize" optional="true"/> + <sequential> + <property location="${build.dir}/empty" name="empty.dir"/> + <mkdir dir="${empty.dir}"/> + <mkdir dir="@{apgeneratedsrcdir}"/> + <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" srcdir="@{srcdir}" target="${javac.target}"> + <src> + <dirset dir="@{gensrcdir}" erroronmissingdir="false"> + <include name="*"/> + </dirset> + </src> + <classpath> + <path path="@{classpath}"/> + </classpath> + <compilerarg line="${endorsed.classpath.cmd.line.arg}"/> + <compilerarg line="${javac.compilerargs}"/> + <compilerarg value="-processorpath"/> + <compilerarg path="@{processorpath}:${empty.dir}"/> + <compilerarg line="${ap.processors.internal}"/> + <compilerarg value="-s"/> + <compilerarg path="@{apgeneratedsrcdir}"/> + <compilerarg line="${ap.proc.none.internal}"/> + <customize/> + </javac> + </sequential> + </macrodef> + </target> + <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal"> + <macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${src.dir}" name="srcdir"/> + <attribute default="${build.classes.dir}" name="destdir"/> + <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <attribute default="${javac.processorpath}" name="processorpath"/> + <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="${javac.debug}" name="debug"/> + <attribute default="${empty.dir}" name="gensrcdir"/> + <element name="customize" optional="true"/> + <sequential> + <property location="${build.dir}/empty" name="empty.dir"/> + <mkdir dir="${empty.dir}"/> + <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" srcdir="@{srcdir}" target="${javac.target}"> + <src> + <dirset dir="@{gensrcdir}" erroronmissingdir="false"> + <include name="*"/> + </dirset> + </src> + <classpath> + <path path="@{classpath}"/> + </classpath> + <compilerarg line="${endorsed.classpath.cmd.line.arg}"/> + <compilerarg line="${javac.compilerargs}"/> + <customize/> + </javac> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac"> + <macrodef name="depend" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${src.dir}" name="srcdir"/> + <attribute default="${build.classes.dir}" name="destdir"/> + <attribute default="${javac.classpath}:${j2ee.platform.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/web-project/2"> + <attribute default="${build.classes.dir}" name="destdir"/> + <sequential> + <fail unless="javac.includes">Must set javac.includes</fail> + <pathconvert pathsep="${line.separator}" property="javac.includes.binary"> + <path> + <filelist dir="@{destdir}" files="${javac.includes}"/> + </path> + <globmapper from="*.java" to="*.class"/> + </pathconvert> + <tempfile deleteonexit="true" property="javac.includesfile.binary"/> + <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/> + <delete> + <files includesfile="${javac.includesfile.binary}"/> + </delete> + <delete file="${javac.includesfile.binary}"/> + </sequential> + </macrodef> + </target> + <target name="-init-macrodef-junit"> + <macrodef name="junit" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <sequential> + <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${java.io.tmpdir}"> + <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}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.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="${endorsed.classpath.cmd.line.arg}"/> + <jvmarg value="-ea"/> + <jvmarg line="${runmain.jvmargs}"/> + </junit> + </sequential> + </macrodef> + </target> + <target name="-init-macrodef-java"> + <macrodef name="java" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute default="${main.class}" name="classname"/> + <attribute default="${debug.classpath}" name="classpath"/> + <element name="customize" optional="true"/> + <sequential> + <java classname="@{classname}" fork="true"> + <jvmarg line="${endorsed.classpath.cmd.line.arg}"/> + <jvmarg line="${runmain.jvmargs}"/> + <classpath> + <path path="@{classpath}:${j2ee.platform.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-nbjsdebug"> + <macrodef name="nbjsdebugstart" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute default="${client.url}" name="webUrl"/> + <sequential> + <nbjsdebugstart urlPart="${client.urlPart}" webUrl="@{webUrl}"/> + </sequential> + </macrodef> + </target> + <target depends="-init-debug-args" name="-init-macrodef-nbjpda"> + <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute default="${main.class}" name="name"/> + <attribute default="${debug.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <sequential> + <nbjpdastart addressproperty="jpda.address" name="@{name}" transport="${debug-transport}"> + <classpath> + <path path="@{classpath}"/> + </classpath> + </nbjpdastart> + </sequential> + </macrodef> + <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/web-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> + <macrodef name="nbjpdaappreloaded" uri="http://www.netbeans.org/ns/web-project/1"> + <sequential> + <nbjpdaappreloaded/> + </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/web-project/1"> + <attribute default="${main.class}" name="classname"/> + <attribute default="${debug.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <attribute default="${application.args.param}" name="args"/> + <element name="customize" optional="true"/> + <sequential> + <java classname="@{classname}" fork="true"> + <jvmarg line="${endorsed.classpath.cmd.line.arg}"/> + <jvmarg line="${debug-args-line}"/> + <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/> + <jvmarg line="${runmain.jvmargs}"/> + <classpath> + <path path="@{classpath}"/> + </classpath> + <syspropertyset> + <propertyref prefix="run-sys-prop."/> + <mapper from="run-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + <arg line="@{args}"/> + <customize/> + </java> + </sequential> + </macrodef> + </target> + <target name="-init-taskdefs"> + <fail unless="libs.CopyLibs.classpath"> +The libs.CopyLibs.classpath property is not set up. +This property must point to +org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part +of NetBeans IDE installation and is usually located at +<netbeans_installation>/java<version>/ant/extra folder. +Either open the project in the IDE and make sure CopyLibs library +exists or setup the property manually. For example like this: + ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar + </fail> + <taskdef classpath="${libs.CopyLibs.classpath}" resource="org/netbeans/modules/java/j2seproject/copylibstask/antlib.xml"/> + </target> + <target name="-init-ap-cmdline-properties"> + <property name="annotation.processing.enabled" value="true"/> + <property name="annotation.processing.processors.list" value=""/> + <property name="annotation.processing.run.all.processors" value="true"/> + <property name="javac.processorpath" value="${javac.classpath}"/> + <property name="javac.test.processorpath" value="${javac.test.classpath}"/> + <condition property="ap.supported.internal" value="true"> + <not> + <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/> + </not> + </condition> + </target> + <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported"> + <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}"> + <isfalse value="${annotation.processing.run.all.processors}"/> + </condition> + <condition else="" property="ap.proc.none.internal" value="-proc:none"> + <isfalse value="${annotation.processing.enabled}"/> + </condition> + </target> + <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline"> + <property name="ap.cmd.line.internal" value=""/> + </target> + <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-check" name="profile-init"/> + <target name="-profile-pre-init"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target name="-profile-post-init"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="-profile-pre-init, init, -profile-post-init" name="-profile-init-check"> + <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail> + <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail> + </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-java,-init-macrodef-nbjpda,-init-macrodef-nbjsdebug,-init-macrodef-debug,-init-taskdefs,-init-ap-cmdline" name="init"/> + <!-- + COMPILATION SECTION + --> + <target depends="init" if="no.dist.ear.dir" name="deps-module-jar" unless="no.deps"/> + <target depends="init" if="dist.ear.dir" name="deps-ear-jar" unless="no.deps"/> + <target depends="init, deps-module-jar, deps-ear-jar" name="deps-jar" unless="no.deps"/> + <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 name="-copy-webdir"> + <copy todir="${build.web.dir}"> + <fileset dir="${web.docbase.dir}" excludes="${build.web.excludes},${excludes}" includes="${includes}"/> + </copy> + <copy todir="${build.web.dir}/WEB-INF"> + <fileset dir="${webinf.dir}" excludes="${build.web.excludes}"/> + </copy> + </target> + <target depends="init, deps-jar, -pre-pre-compile, -pre-compile, -copy-manifest, -copy-persistence-xml, -copy-webdir, library-inclusion-in-archive,library-inclusion-in-manifest" if="have.sources" name="-do-compile"> + <webproject2:javac destdir="${build.classes.dir}" gensrcdir="${build.generated.sources.dir}"/> + <copy todir="${build.classes.dir}"> + <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/> + </copy> + </target> + <target if="has.custom.manifest" name="-copy-manifest"> + <mkdir dir="${build.meta.inf.dir}"/> + <copy todir="${build.meta.inf.dir}"> + <fileset dir="${conf.dir}" includes="MANIFEST.MF"/> + </copy> + </target> + <target if="has.persistence.xml" name="-copy-persistence-xml"> + <mkdir dir="${build.web.dir}/WEB-INF/classes/META-INF"/> + <copy todir="${build.web.dir}/WEB-INF/classes/META-INF"> + <fileset dir="${persistence.xml.dir}" includes="persistence.xml"/> + </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> + <webproject2:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}"/> + <copy todir="${build.classes.dir}"> + <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/> + </copy> + </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"/> + <property name="jspc.schemas" value="/resources/schemas/"/> + <property name="jspc.dtds" value="/resources/dtds/"/> + <target depends="compile" description="Test compile JSP pages to expose compilation errors." if="do.compile.jsps" name="compile-jsps"> + <mkdir dir="${build.generated.dir}/src"/> + <java classname="org.netbeans.modules.web.project.ant.JspC" failonerror="true" fork="true"> + <arg value="-uriroot"/> + <arg file="${basedir}/${build.web.dir}"/> + <arg value="-d"/> + <arg file="${basedir}/${build.generated.dir}/src"/> + <arg value="-die1"/> + <arg value="-schemas ${jspc.schemas}"/> + <arg value="-dtds ${jspc.dtds}"/> + <arg value="-compilerSourceVM ${javac.source}"/> + <arg value="-compilerTargetVM ${javac.target}"/> + <arg value="-javaEncoding ${source.encoding}"/> + <arg value="-sysClasspath ${libs.jsp-compilation-syscp.classpath}"/> + <classpath path="${java.home}/../lib/tools.jar:${libs.jsp-compiler.classpath}:${libs.jsp-compilation.classpath}"/> + </java> + <mkdir dir="${build.generated.dir}/classes"/> + <webproject2:javac classpath="${build.classes.dir}:${libs.jsp-compilation.classpath}:${javac.classpath}:${j2ee.platform.classpath}" destdir="${build.generated.dir}/classes" srcdir="${build.generated.dir}/src"/> + </target> + <target depends="compile" if="jsp.includes" name="-do-compile-single-jsp"> + <fail unless="javac.jsp.includes">Must select some files in the IDE or set javac.jsp.includes</fail> + <mkdir dir="${build.generated.dir}/src"/> + <java classname="org.netbeans.modules.web.project.ant.JspCSingle" failonerror="true" fork="true"> + <arg value="-uriroot"/> + <arg file="${basedir}/${build.web.dir}"/> + <arg value="-d"/> + <arg file="${basedir}/${build.generated.dir}/src"/> + <arg value="-die1"/> + <arg value="-schemas ${jspc.schemas}"/> + <arg value="-dtds ${jspc.dtds}"/> + <arg value="-sysClasspath ${libs.jsp-compilation-syscp.classpath}"/> + <arg value="-jspc.files"/> + <arg path="${jsp.includes}"/> + <arg value="-compilerSourceVM ${javac.source}"/> + <arg value="-compilerTargetVM ${javac.target}"/> + <arg value="-javaEncoding ${source.encoding}"/> + <classpath path="${java.home}/../lib/tools.jar:${libs.jsp-compiler.classpath}:${libs.jsp-compilation.classpath}"/> + </java> + <mkdir dir="${build.generated.dir}/classes"/> + <webproject2:javac classpath="${build.classes.dir}:${libs.jsp-compilation.classpath}:${javac.classpath}:${j2ee.platform.classpath}" destdir="${build.generated.dir}/classes" srcdir="${build.generated.dir}/src"> + <customize> + <patternset includes="${javac.jsp.includes}"/> + </customize> + </webproject2:javac> + </target> + <target name="compile-single-jsp"> + <fail unless="jsp.includes">Must select a file in the IDE or set jsp.includes</fail> + <antcall target="-do-compile-single-jsp"/> + </target> + <!-- + DIST BUILDING SECTION + --> + <target name="-pre-dist"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,compile,compile-jsps,-pre-dist" if="do.war.package.without.custom.manifest" name="-do-dist-without-manifest"> + <dirname file="${dist.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.war}"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*"/> + </jar> + </target> + <target depends="init,compile,compile-jsps,-pre-dist" if="do.war.package.with.custom.manifest" name="-do-dist-with-manifest"> + <dirname file="${dist.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.war}" manifest="${build.meta.inf.dir}/MANIFEST.MF"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*"/> + </jar> + </target> + <target depends="init,compile,compile-jsps,-pre-dist" if="do.tmp.war.package.without.custom.manifest" name="-do-tmp-dist-without-manifest"> + <dirname file="${dist.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.war}"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*"/> + </jar> + </target> + <target depends="init,compile,compile-jsps,-pre-dist" if="do.tmp.war.package.with.custom.manifest" name="-do-tmp-dist-with-manifest"> + <dirname file="${dist.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.war}" manifest="${build.meta.inf.dir}/MANIFEST.MF"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*"/> + </jar> + </target> + <target depends="init,compile,compile-jsps,-pre-dist,-do-dist-with-manifest,-do-dist-without-manifest" name="do-dist"/> + <target depends="init" if="dist.ear.dir" name="library-inclusion-in-manifest"> + <copyfiles files="${libs.jsf20.classpath}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/> + <copyfiles files="${libs.jstl11.classpath}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/> + <copyfiles files="${libs.primefaces.classpath}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/> + <copyfiles files="${file.reference.ui-darkness-1.0.2.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/> + <mkdir dir="${build.web.dir}/META-INF"/> + <manifest file="${build.web.dir}/META-INF/MANIFEST.MF" mode="update"/> + </target> + <target depends="init" name="library-inclusion-in-archive" unless="dist.ear.dir"> + <copyfiles files="${libs.jsf20.classpath}" todir="${build.web.dir}/WEB-INF/lib"/> + <copyfiles files="${libs.jstl11.classpath}" todir="${build.web.dir}/WEB-INF/lib"/> + <copyfiles files="${libs.primefaces.classpath}" todir="${build.web.dir}/WEB-INF/lib"/> + <copyfiles files="${file.reference.ui-darkness-1.0.2.jar}" todir="${build.web.dir}/WEB-INF/lib"/> + </target> + <target depends="init" if="dist.ear.dir" name="-clean-webinf-lib"> + <delete dir="${build.web.dir}/WEB-INF/lib"/> + </target> + <target depends="init,-clean-webinf-lib,compile,compile-jsps,-pre-dist,library-inclusion-in-manifest" if="do.tmp.war.package" name="do-ear-dist"> + <dirname file="${dist.ear.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.ear.war}" manifest="${build.web.dir}/META-INF/MANIFEST.MF"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*"/> + </jar> + </target> + <target name="-post-dist"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,compile,-pre-dist,do-dist,-post-dist" description="Build distribution (WAR)." name="dist"/> + <target depends="init,-clean-webinf-lib,-init-cos,compile,-pre-dist,do-ear-dist,-post-dist" description="Build distribution (WAR) to be packaged into an EAR." name="dist-ear"/> + <!-- + EXECUTION SECTION + --> + <target depends="run-deploy,run-display-browser" description="Deploy to server and show in browser." name="run"/> + <target name="-pre-run-deploy"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target name="-post-run-deploy"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target name="-pre-nbmodule-run-deploy"> + <!-- Empty placeholder for easier customization. --> + <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -pre-run-deploy task instead. --> + </target> + <target name="-post-nbmodule-run-deploy"> + <!-- Empty placeholder for easier customization. --> + <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -post-run-deploy task instead. --> + </target> + <target name="-run-deploy-am"> + <!-- Task to deploy to the Access Manager runtime. --> + </target> + <target depends="init,-init-cos,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest,-pre-run-deploy,-pre-nbmodule-run-deploy,-run-deploy-nb,-init-deploy-ant,-deploy-ant,-run-deploy-am,-post-nbmodule-run-deploy,-post-run-deploy,-do-update-breakpoints" name="run-deploy"/> + <target if="netbeans.home" name="-run-deploy-nb"> + <nbdeploy clientUrlPart="${client.urlPart}" debugmode="false" forceRedeploy="${forceRedeploy}"/> + </target> + <target name="-init-deploy-ant" unless="netbeans.home"> + <property name="deploy.ant.archive" value="${dist.war}"/> + <property name="deploy.ant.docbase.dir" value="${web.docbase.dir}"/> + <property name="deploy.ant.resource.dir" value="${resource.dir}"/> + <property name="deploy.ant.enabled" value="true"/> + </target> + <target depends="dist,-run-undeploy-nb,-init-deploy-ant,-undeploy-ant" name="run-undeploy"/> + <target if="netbeans.home" name="-run-undeploy-nb"> + <fail message="Undeploy is not supported from within the IDE"/> + </target> + <target depends="init,-pre-dist,dist,-post-dist" name="verify"> + <nbverify file="${dist.war}"/> + </target> + <target depends="run-deploy,-init-display-browser,-display-browser-nb,-display-browser-cl" name="run-display-browser"/> + <target if="do.display.browser" name="-init-display-browser"> + <condition property="do.display.browser.nb"> + <isset property="netbeans.home"/> + </condition> + <condition property="do.display.browser.cl"> + <isset property="deploy.ant.enabled"/> + </condition> + </target> + <target if="do.display.browser.nb" name="-display-browser-nb"> + <nbbrowse url="${client.url}"/> + </target> + <target if="do.display.browser.cl" name="-get-browser" unless="browser"> + <condition property="browser" value="rundll32"> + <os family="windows"/> + </condition> + <condition else="" property="browser.args" value="url.dll,FileProtocolHandler"> + <os family="windows"/> + </condition> + <condition property="browser" value="/usr/bin/open"> + <os family="mac"/> + </condition> + <property environment="env"/> + <condition property="browser" value="${env.BROWSER}"> + <isset property="env.BROWSER"/> + </condition> + <condition property="browser" value="/usr/bin/firefox"> + <available file="/usr/bin/firefox"/> + </condition> + <condition property="browser" value="/usr/local/firefox/firefox"> + <available file="/usr/local/firefox/firefox"/> + </condition> + <condition property="browser" value="/usr/bin/mozilla"> + <available file="/usr/bin/mozilla"/> + </condition> + <condition property="browser" value="/usr/local/mozilla/mozilla"> + <available file="/usr/local/mozilla/mozilla"/> + </condition> + <condition property="browser" value="/usr/sfw/lib/firefox/firefox"> + <available file="/usr/sfw/lib/firefox/firefox"/> + </condition> + <condition property="browser" value="/opt/csw/bin/firefox"> + <available file="/opt/csw/bin/firefox"/> + </condition> + <condition property="browser" value="/usr/sfw/lib/mozilla/mozilla"> + <available file="/usr/sfw/lib/mozilla/mozilla"/> + </condition> + <condition property="browser" value="/opt/csw/bin/mozilla"> + <available file="/opt/csw/bin/mozilla"/> + </condition> + </target> + <target depends="-get-browser" if="do.display.browser.cl" name="-display-browser-cl"> + <fail unless="browser"> + Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable. + </fail> + <property name="browse.url" value="${deploy.ant.client.url}${client.urlPart}"/> + <echo>Launching ${browse.url}</echo> + <exec executable="${browser}" spawn="true"> + <arg line="${browser.args} ${browse.url}"/> + </exec> + </target> + <target depends="init,-init-cos,compile-single" name="run-main"> + <fail unless="run.class">Must select one file in the IDE or set run.class</fail> + <webproject1:java classname="${run.class}"/> + </target> + <target depends="init,compile-test-single,-pre-test-run-single" name="run-test-with-main"> + <fail unless="run.class">Must select one file in the IDE or set run.class</fail> + <webproject1:java classname="${run.class}" classpath="${run.test.classpath}"/> + </target> + <target depends="init" if="netbeans.home" name="-do-update-breakpoints"> + <webproject1:nbjpdaappreloaded/> + </target> + <!-- + DEBUGGING SECTION + --> + <target depends="init,-init-cos,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest" description="Debug project in IDE." if="netbeans.home" name="debug"> + <nbstartserver debugmode="true"/> + <antcall target="connect-debugger"/> + <nbdeploy clientUrlPart="${client.urlPart}" debugmode="true" forceRedeploy="true"/> + <antcall target="debug-display-browser"/> + <antcall target="connect-client-debugger"/> + </target> + <target if="do.debug.server" name="connect-debugger" unless="is.debugged"> + <nbjpdaconnect address="${jpda.address}" host="${jpda.host}" name="${name}" transport="${jpda.transport}"> + <classpath> + <path path="${debug.classpath}:${j2ee.platform.classpath}"/> + </classpath> + <sourcepath> + <path path="${web.docbase.dir}"/> + </sourcepath> + </nbjpdaconnect> + </target> + <target if="do.display.browser.debug" name="debug-display-browser"> + <nbbrowse url="${client.url}"/> + </target> + <target if="do.debug.client" name="connect-client-debugger"> + <webproject1:nbjsdebugstart webUrl="${client.url}"/> + </target> + <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test"> + <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail> + <webproject1:debug classname="${debug.class}" classpath="${debug.test.classpath}"/> + </target> + <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/> + <target depends="init,compile,compile-jsps,-do-compile-single-jsp,debug" if="netbeans.home" name="debug-single"/> + <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test"> + <webproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/> + </target> + <target depends="init" if="netbeans.home" name="-debug-start-debugger"> + <webproject1:nbjpdastart name="${debug.class}"/> + </target> + <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> + <webproject1:debug classname="${debug.class}"/> + </target> + <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single-main"/> + <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"> + <webproject1:nbjpdareload/> + </target> + <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/> + <!-- + ================= + PROFILING SECTION + ================= + --> + <target description="Profile a J2EE project in the IDE." name="profile"> + <condition else="start-profiled-server" property="profiler.startserver.target" value="start-profiled-server-extraargs"> + <isset property="profiler.info.jvmargs.extra"/> + </condition> + <antcall target="${profiler.startserver.target}"/> + <antcall target="run"/> + <antcall target="start-loadgen"/> + </target> + <target name="start-profiled-server"> + <nbstartprofiledserver forceRestart="${profiler.j2ee.serverForceRestart}" javaPlatform="${profiler.info.javaPlatform}" startupTimeout="${profiler.j2ee.serverStartupTimeout}"> + <jvmarg value="${profiler.info.jvmargs.agent}"/> + <jvmarg value="${profiler.j2ee.agentID}"/> + </nbstartprofiledserver> + </target> + <target name="start-profiled-server-extraargs"> + <nbstartprofiledserver forceRestart="${profiler.j2ee.serverForceRestart}" javaPlatform="${profiler.info.javaPlatform}" startupTimeout="${profiler.j2ee.serverStartupTimeout}"> + <jvmarg value="${profiler.info.jvmargs.extra}"/> + <jvmarg value="${profiler.info.jvmargs.agent}"/> + <jvmarg value="${profiler.j2ee.agentID}"/> + </nbstartprofiledserver> + </target> + <target if="profiler.loadgen.path" name="start-loadgen"> + <loadgenstart path="${profiler.loadgen.path}"/> + </target> + <!-- + JAVADOC SECTION + --> + <target depends="init" if="have.sources" 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}:${j2ee.platform.classpath}"/> + </classpath> + <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}"> + <filename name="**/*.java"/> + </fileset> + <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false"> + <include name="**/*.java"/> + </fileset> + </javadoc> + <copy todir="${dist.javadoc.dir}"> + <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}"> + <filename name="**/doc-files/**"/> + </fileset> + <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false"> + <include name="**/doc-files/**"/> + </fileset> + </copy> + </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}"/> + <property name="j2ee.platform.embeddableejb.classpath" value=""/> + </target> + <target name="-pre-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" if="have.tests" name="-do-compile-test"> + <webproject2:javac classpath="${javac.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.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> + <webproject2:javac classpath="${javac.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" 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"> + <webproject2: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" unless="ignore.failing.tests">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> + <webproject2: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" unless="ignore.failing.tests">Some tests failed; see details above.</fail> + </target> + <target depends="init,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}"/> + <!-- must exist, otherwise the XML formatter would fail --> + <mkdir dir="${build.test.results.dir}"/> + <webproject1:debug args="${test.class}" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}:${j2ee.platform.embeddableejb.classpath}"> + <customize> + <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> + </webproject1:debug> + </target> + <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test"> + <webproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/> + </target> + <target depends="init,compile-test,-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"> + <webproject1:nbjpdareload dir="${build.test.classes.dir}"/> + </target> + <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/> + <!-- + ========================= + TESTS PROFILING SECTION + ========================= + --> + <target depends="profile-init,compile-test-single" if="netbeans.home" name="profile-test-single"> + <nbprofiledirect> + <classpath> + <path path="${run.test.classpath}"/> + <path path="${j2ee.platform.classpath}"/> + </classpath> + </nbprofiledirect> + <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true"> + <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/> + <jvmarg value="${profiler.info.jvmargs.agent}"/> + <jvmarg line="${profiler.info.jvmargs}"/> + <test name="${profile.class}"/> + <classpath> + <path path="${run.test.classpath}"/> + <path path="${j2ee.platform.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"/> + </junit> + </target> + <!-- + + CLEANUP SECTION + --> + <target depends="init" name="deps-clean" unless="no.deps"/> + <target depends="init" name="do-clean"> + <condition property="build.dir.to.clean" value="${build.web.dir}"> + <isset property="dist.ear.dir"/> + </condition> + <property name="build.dir.to.clean" value="${build.web.dir}"/> + <delete includeEmptyDirs="true" quiet="true"> + <fileset dir="${build.dir.to.clean}/WEB-INF/lib"/> + </delete> + <delete dir="${build.dir}"/> + <available file="${build.dir.to.clean}/WEB-INF/lib" property="status.clean-failed" type="dir"/> + <delete dir="${dist.dir}"/> + </target> + <target depends="do-clean" if="status.clean-failed" name="check-clean"> + <echo message="Warning: unable to delete some files in ${build.web.dir}/WEB-INF/lib - they are probably locked by the J2EE server. "/> + <echo level="info" message="To delete all files undeploy the module from Server Registry in Runtime tab and then use Clean again."/> + </target> + <target depends="init" if="netbeans.home" name="undeploy-clean"> + <nbundeploy failOnError="false" startServer="false"/> + </target> + <target name="-post-clean"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,undeploy-clean,deps-clean,do-clean,check-clean,-post-clean" description="Clean build products." name="clean"/> + <target depends="clean" description="Clean build products." name="clean-ear"/> +</project> diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 00000000..f8869a55 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=8812c641 +build.xml.script.CRC32=4b29385e +build.xml.stylesheet.CRC32=651128d4@1.36.1.1 +# 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=8812c641 +nbproject/build-impl.xml.script.CRC32=1c0d8dde +nbproject/build-impl.xml.stylesheet.CRC32=b7883b1f@1.36.1.1 diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 00000000..6f230f7f --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,87 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=true +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +auxiliary.org-netbeans-modules-projectapi.jsf_2e_language=Facelets +build.classes.dir=${build.web.dir}/WEB-INF/classes +build.classes.excludes=**/*.java,**/*.form +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +build.web.dir=${build.dir}/web +build.web.excludes=${build.classes.excludes} +client.urlPart= +compile.jsps=false +conf.dir=${source.root}/conf +debug.classpath=${build.classes.dir}:${javac.classpath} +debug.test.classpath=\ + ${run.test.classpath} +display.browser=true +dist.dir=dist +dist.ear.war=${dist.dir}/${war.ear.name} +dist.javadoc.dir=${dist.dir}/javadoc +dist.war=${dist.dir}/${war.name} +endorsed.classpath=\ + ${libs.javaee-endorsed-api-6.0.classpath} +excludes= +file.reference.ui-darkness-1.0.2.jar=lib\\ui-darkness-1.0.2.jar +includes=** +j2ee.compile.on.save=true +j2ee.deploy.on.save=true +j2ee.platform=1.6-web +j2ee.platform.classpath=${j2ee.server.home}/lib/annotations-api.jar:${j2ee.server.home}/lib/catalina-ant.jar:${j2ee.server.home}/lib/catalina-ha.jar:${j2ee.server.home}/lib/catalina-tribes.jar:${j2ee.server.home}/lib/catalina.jar:${j2ee.server.home}/lib/ecj-3.6.2.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/jasper-el.jar:${j2ee.server.home}/lib/jasper.jar:${j2ee.server.home}/lib/jsp-api.jar:${j2ee.server.home}/lib/jstl-api-1.2.jar:${j2ee.server.home}/lib/jstl-impl-1.2.jar:${j2ee.server.home}/lib/primefaces-2.2.1.jar:${j2ee.server.home}/lib/servlet-api.jar:${j2ee.server.home}/lib/tomcat-api.jar:${j2ee.server.home}/lib/tomcat-coyote.jar:${j2ee.server.home}/lib/tomcat-dbcp.jar:${j2ee.server.home}/lib/tomcat-i18n-es.jar:${j2ee.server.home}/lib/tomcat-i18n-fr.jar:${j2ee.server.home}/lib/tomcat-i18n-ja.jar:${j2ee.server.home}/lib/tomcat-util.jar +j2ee.server.type=Tomcat +jar.compress=false +javac.classpath=\ + ${libs.jsf20.classpath}:\ + ${libs.jstl11.classpath}:\ + ${libs.primefaces.classpath}:\ + ${file.reference.ui-darkness-1.0.2.jar} +# Space-separated list of extra javac options +javac.compilerargs= +javac.debug=true +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} +javac.source=1.6 +javac.target=1.6 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.preview=true +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +lib.dir=${web.docbase.dir}/WEB-INF/lib +no.dependencies=false +persistence.xml.dir=${conf.dir} +platform.active=default_platform +resource.dir=setup +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +# Space-separated list of JVM arguments used when running a class with a main method or a unit test +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): +runmain.jvmargs= +source.encoding=UTF-8 +source.root=src +src.dir=${source.root}/java +test.src.dir=test +war.content.additional= +war.ear.name=${war.name} +war.name=Kieker.WebGUI.war +web.docbase.dir=web +webinf.dir=web/WEB-INF diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 00000000..f4b40df8 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://www.netbeans.org/ns/project/1"> + <type>org.netbeans.modules.web.project</type> + <configuration> + <data xmlns="http://www.netbeans.org/ns/web-project/3"> + <name>Kieker.WebGUI</name> + <minimum-ant-version>1.6.5</minimum-ant-version> + <web-module-libraries> + <library dirs="200"> + <file>${libs.jsf20.classpath}</file> + <path-in-war>WEB-INF/lib</path-in-war> + </library> + <library dirs="200"> + <file>${libs.jstl11.classpath}</file> + <path-in-war>WEB-INF/lib</path-in-war> + </library> + <library dirs="200"> + <file>${libs.primefaces.classpath}</file> + <path-in-war>WEB-INF/lib</path-in-war> + </library> + <library dirs="200"> + <file>${file.reference.ui-darkness-1.0.2.jar}</file> + <path-in-war>WEB-INF/lib</path-in-war> + </library> + </web-module-libraries> + <web-module-additional-libraries/> + <source-roots> + <root id="src.dir" name="Source Packages"/> + </source-roots> + <test-roots> + <root id="test.src.dir" name="Test Packages"/> + </test-roots> + </data> + </configuration> +</project> diff --git a/src/conf/MANIFEST.MF b/src/conf/MANIFEST.MF new file mode 100644 index 00000000..59499bce --- /dev/null +++ b/src/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/src/java/beans/ComponentBean.java b/src/java/beans/ComponentBean.java new file mode 100644 index 00000000..05eae4b2 --- /dev/null +++ b/src/java/beans/ComponentBean.java @@ -0,0 +1,35 @@ +package beans; + +import javax.faces.bean.ApplicationScoped; +import javax.faces.bean.ManagedBean; +import org.primefaces.model.DefaultTreeNode; +import org.primefaces.model.TreeNode; + +/** + * + * @author Nils Christian Ehmke + */ +@ManagedBean +@ApplicationScoped +public class ComponentBean { + + private TreeNode root; + + public ComponentBean() { + root = new DefaultTreeNode("Root", null); + TreeNode node0 = new DefaultTreeNode("Reader", root); + TreeNode node1 = new DefaultTreeNode("Analysis Plugins", root); + + TreeNode node00 = new DefaultTreeNode("FSReader", node0); + TreeNode node01 = new DefaultTreeNode("JMXReader", node0); + + TreeNode node10 = new DefaultTreeNode("DummyRecordConsumer", node1); + TreeNode node11 = new DefaultTreeNode("SilentCountingRecordConsumer", node1); + TreeNode node12 = new DefaultTreeNode("TraceEquivalenceClassFilter", node1); + TreeNode node13 = new DefaultTreeNode("ExecutionRecordTransformationFilter", node1); + } + + public TreeNode getRoot() { + return root; + } +} diff --git a/src/java/beans/TreeBean.java b/src/java/beans/TreeBean.java new file mode 100644 index 00000000..363d779e --- /dev/null +++ b/src/java/beans/TreeBean.java @@ -0,0 +1,32 @@ +package beans; + +import javax.faces.bean.ApplicationScoped; +import javax.faces.bean.ManagedBean; +import org.primefaces.model.DefaultTreeNode; +import org.primefaces.model.TreeNode; + +/** + * + * @author Nils Christian Ehmke + */ +@ManagedBean +@ApplicationScoped +public class TreeBean { + + private TreeNode root; + + public TreeBean() { + root = new DefaultTreeNode("Root", null); + TreeNode node0 = new DefaultTreeNode("Some Analysis Project", root); + TreeNode node1 = new DefaultTreeNode("Another Analysis Project", root); + + TreeNode node00 = new DefaultTreeNode("Depend1.jar", node0); + TreeNode node01 = new DefaultTreeNode("Depend2.jar", node0); + + TreeNode node10 = new DefaultTreeNode("Depend3.jar", node1); + } + + public TreeNode getRoot() { + return root; + } +} diff --git a/web/META-INF/context.xml b/web/META-INF/context.xml new file mode 100644 index 00000000..94faf711 --- /dev/null +++ b/web/META-INF/context.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Context antiJARLocking="true" path="/Kieker.WebGUI"/> diff --git a/web/WEB-INF/beans.xml b/web/WEB-INF/beans.xml new file mode 100644 index 00000000..4ca8195b --- /dev/null +++ b/web/WEB-INF/beans.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> +</beans> diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml new file mode 100644 index 00000000..4a909841 --- /dev/null +++ b/web/WEB-INF/web.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> + <context-param> + <param-name>javax.faces.PROJECT_STAGE</param-name> + <param-value>Development</param-value> + </context-param> + <context-param> + <param-name>primefaces.THEME</param-name> + <param-value>ui-darkness</param-value> + </context-param> + <servlet> + <servlet-name>Faces Servlet</servlet-name> + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> + <load-on-startup>1</load-on-startup> + </servlet> + <servlet-mapping> + <servlet-name>Faces Servlet</servlet-name> + <url-pattern>/faces/*</url-pattern> + </servlet-mapping> + <session-config> + <session-timeout> + 30 + </session-timeout> + </session-config> + <welcome-file-list> + <welcome-file>faces/main.xhtml</welcome-file> + </welcome-file-list> +</web-app> diff --git a/web/main.xhtml b/web/main.xhtml new file mode 100644 index 00000000..ba82e2c0 --- /dev/null +++ b/web/main.xhtml @@ -0,0 +1,61 @@ +<?xml version='1.0' encoding='UTF-8' ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:h="http://java.sun.com/jsf/html" + xmlns:p="http://primefaces.prime.com.tr/ui" > + <h:head> + <title>Kieker.WebGUI</title> + </h:head> + <h:body> + <h:form> + + <p:layout fullPage="true"> + + <p:layoutUnit position="top" height="105" collapsible="true"> + <div style="padding-top:10px" align="center"> + <p:button value="New Project"/> + <p:spacer width="35" height="10" /> + <p:button value="Save Project"/> + <p:spacer width="35" height="10" /> + <p:button value="Delete Project"/> + </div> + </p:layoutUnit> + + + <p:layoutUnit header="Projects" collapsible="true" position="left" width="200" resizable="true" minWidth="100"> + <p:tree value="#{treeBean.root}" var="node" expanded="true" > + <p:treeNode> + <h:outputText value="#{node}"/> + </p:treeNode> + </p:tree> + </p:layoutUnit> + + <p:layoutUnit position="center" scrollable="true"> + <p:panel style="width:150px" id="handlepnl" header="FSReader"> + <h:outputText value="SomeReader" /> + </p:panel> + <p:draggable for="handlepnl" handle=".ui-panel-titlebar" /> + + <p:panel style="width:350px" id="handlepn2" header="SilentCountingRecordConsumer"> + <h:outputText value="Counter" /> + </p:panel> + <p:draggable for="handlepn2" handle=".ui-panel-titlebar" /> + + <p:panel style="width:350px" id="handlepn3" header="TraceEquivalenceClassFilter"> + <h:outputText value="Filter" /> + </p:panel> + <p:draggable for="handlepn3" handle=".ui-panel-titlebar" /> + </p:layoutUnit> + + <p:layoutUnit position="right" width="200" scrollable="true" header="Tool Palette" resizable="true" collapsible="true"> + <p:tree value="#{componentBean.root}" var="node" expanded="true" > + <p:treeNode> + <h:outputText value="#{node}"/> + </p:treeNode> + </p:tree> + </p:layoutUnit> + </p:layout> + </h:form> + </h:body> +</html> + -- GitLab