version 5.2 beta1
authorChristian Schwarzinger <christian.schwarzinger@proclos.com>
Tue, 30 Sep 2014 14:57:50 +0200
changeset 34ca8c3ce863ed
parent 33 892d194a4bb7
child 35 e9d32807bc33
version 5.2 beta1
build.xml
dist/PalOOCa.jar
dist/PalOOCa.oxt
dist/PalOOCa_IDL_types.jar
dist/external_jars/jars.properties
lib/jdom-2.0.5.jar
lib/palojlib-5.1.jar
nbproject/build-impl.xml~
nbproject/private/private.properties
nbproject/private/private.xml
nbproject/project.properties
src/description.xml
src/org/palooca/DataValueHandler.java
src/org/palooca/PalOOCaManager.java
src/org/palooca/PalOOCaView.java
src/org/palooca/dialogs/ConsolidationFactorDialog.form
src/org/palooca/dialogs/ConsolidationFactorDialog.java
src/org/palooca/dialogs/DimensionSubsetList.java
src/org/palooca/dialogs/DimensionSubsetListItem.java
src/org/palooca/dialogs/Modeller.form
src/org/palooca/dialogs/Modeller.java
src/org/palooca/dialogs/PaloDialogUtilities.java
src/org/palooca/dialogs/SubsetList.java
src/org/palooca/dialogs/SubsetListItem.java
src/org/palooca/dialogs/SubsetModeller.form
src/org/palooca/dialogs/SubsetModeller.java
src/org/palooca/dialogs/ViewDialog.java
src/org/palooca/dialogs/nodes/SubsetTreeNode.java
src/org/palooca/dialogs/resources/ConsolidationFactorDialog.properties
src/org/palooca/dialogs/resources/SubsetModeller.properties
src/org/palooca/network/ConnectionHandler.java
src/org/palooca/network/ConnectionInfo.java
src/org/palooca/olap4j/Olap4jConnection.java
src/org/palooca/subsets/Subset2.java
src/org/palooca/subsets/SubsetFilter.java
src/palooca.update.xml
     1.1 --- a/build.xml	Fri Aug 08 13:19:03 2014 +0200
     1.2 +++ b/build.xml	Tue Sep 30 14:57:50 2014 +0200
     1.3 @@ -1,11 +1,11 @@
     1.4  <?xml version="1.0" encoding="UTF-8"?>
     1.5 -<!-- You may freely edit this file. See commented blocks below for -->
     1.6 -<!-- some examples of how to customize the build. -->
     1.7 -<!-- (If you delete it and reopen the project it will be recreated.) -->
     1.8 -<project name="PalOOCa" default="default" basedir=".">
     1.9 -    <description>Builds, tests, and runs the project Addin.</description>
    1.10 -    <import file="nbproject/build-uno-impl.xml"/>
    1.11 -    <!--
    1.12 +<!-- You may freely edit this file. See commented blocks below for -->
    1.13 +<!-- some examples of how to customize the build. -->
    1.14 +<!-- (If you delete it and reopen the project it will be recreated.) -->
    1.15 +<project name="PalOOCa" default="default" basedir=".">
    1.16 +    <description>Builds, tests, and runs the project Addin.</description>
    1.17 +    <import file="nbproject/build-uno-impl.xml"/>
    1.18 +    <!--
    1.19  
    1.20      There exist several targets which are by default empty and which can be
    1.21      used for execution of your tasks. These targets are usually executed
    1.22 @@ -20,14 +20,14 @@
    1.23        -pre-compile-test:         called before javac compilation of JUnit tests
    1.24        -post-compile-test:        called after javac compilation of JUnit tests
    1.25        -pre-compile-test-single:  called before javac compilation of single JUnit test
    1.26 -      -post-compile-test-single: called after javac compilation of single JUunit test
    1.27 -      -pre-jar:                  called before JAR building
    1.28 -      -post-jar:                 called after JAR building
    1.29 -      -pre-uno-package:          called before OXT creation
    1.30 -      -post-uno-package:         called after OXT creation
    1.31 -      -post-clean:               called after cleaning build products
    1.32 -
    1.33 -    (Targets beginning with '-' are not intended to be called on their own.)
    1.34 +      -post-compile-test-single: called after javac compilation of single JUunit test
    1.35 +      -pre-jar:                  called before JAR building
    1.36 +      -post-jar:                 called after JAR building
    1.37 +      -pre-uno-package:          called before OXT creation
    1.38 +      -post-uno-package:         called after OXT creation
    1.39 +      -post-clean:               called after cleaning build products
    1.40 +
    1.41 +    (Targets beginning with '-' are not intended to be called on their own.)
    1.42  
    1.43      Example of inserting an obfuscator after compilation could look like this:
    1.44  
    1.45 @@ -68,5 +68,16 @@
    1.46      nbproject/build-impl.xml file
    1.47  
    1.48      -->
    1.49 +    
    1.50 +    <!--
    1.51 +    <target name="-do-jar-with-manifest">
    1.52 +    </target>
    1.53 +    
    1.54 +     <target name="-do-jar-without-manifest">
    1.55 +    </target>
    1.56 +    
    1.57 +    <target name="-do-jar-with-mainclass">
    1.58 +    </target>
    1.59 +    -->
    1.60  
    1.61  </project>
     2.1 Binary file dist/PalOOCa.jar has changed
     3.1 Binary file dist/PalOOCa.oxt has changed
     4.1 Binary file dist/PalOOCa_IDL_types.jar has changed
     5.1 --- a/dist/external_jars/jars.properties	Fri Aug 08 13:19:03 2014 +0200
     5.2 +++ b/dist/external_jars/jars.properties	Tue Sep 30 14:57:50 2014 +0200
     5.3 @@ -1,3 +1,3 @@
     5.4  #PackageActionDescription
     5.5 -#Fri Aug 08 13:13:14 CEST 2014
     5.6 -external.jars=external_jars/dom4j-1.6.1.jar external_jars/swing-layout-1.0.4.jar external_jars/appframework-1.0.3.jar external_jars/swing-worker-1.1.jar external_jars/AbsoluteLayout.jar external_jars/log4j-1.2.16.jar external_jars/xercesImpl.jar external_jars/h2-1.3.172.jar external_jars/olap4j-1.2.0-SNAPSHOT.jar external_jars/olap4j-xmla-1.2.0-SNAPSHOT.jar external_jars/palojlib-5.1.jar
     5.7 +#Tue Sep 30 14:57:22 CEST 2014
     5.8 +external.jars=external_jars/dom4j-1.6.1.jar external_jars/swing-layout-1.0.4.jar external_jars/appframework-1.0.3.jar external_jars/swing-worker-1.1.jar external_jars/AbsoluteLayout.jar external_jars/log4j-1.2.16.jar external_jars/xercesImpl.jar external_jars/h2-1.3.172.jar external_jars/olap4j-1.2.0-SNAPSHOT.jar external_jars/olap4j-xmla-1.2.0-SNAPSHOT.jar external_jars/palojlib-5.1.jar external_jars/jdom-2.0.5.jar
     6.1 Binary file lib/jdom-2.0.5.jar has changed
     7.1 Binary file lib/palojlib-5.1.jar has changed
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/nbproject/build-impl.xml~	Tue Sep 30 14:57:50 2014 +0200
     8.3 @@ -0,0 +1,1413 @@
     8.4 +<?xml version="1.0" encoding="UTF-8"?>
     8.5 +<!--
     8.6 +*** GENERATED FROM project.xml - DO NOT EDIT  ***
     8.7 +***         EDIT ../build.xml INSTEAD         ***
     8.8 +
     8.9 +For the purpose of easier reading the script
    8.10 +is divided into following sections:
    8.11 +
    8.12 +  - initialization
    8.13 +  - compilation
    8.14 +  - jar
    8.15 +  - execution
    8.16 +  - debugging
    8.17 +  - javadoc
    8.18 +  - test compilation
    8.19 +  - test execution
    8.20 +  - test debugging
    8.21 +  - applet
    8.22 +  - cleanup
    8.23 +
    8.24 +        -->
    8.25 +<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="PalOOCa-impl">
    8.26 +    <fail message="Please build using Ant 1.8.0 or higher.">
    8.27 +        <condition>
    8.28 +            <not>
    8.29 +                <antversion atleast="1.8.0"/>
    8.30 +            </not>
    8.31 +        </condition>
    8.32 +    </fail>
    8.33 +    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
    8.34 +    <!-- 
    8.35 +                ======================
    8.36 +                INITIALIZATION SECTION 
    8.37 +                ======================
    8.38 +            -->
    8.39 +    <target name="-pre-init">
    8.40 +        <!-- Empty placeholder for easier customization. -->
    8.41 +        <!-- You can override this target in the ../build.xml file. -->
    8.42 +    </target>
    8.43 +    <target depends="-pre-init" name="-init-private">
    8.44 +        <property file="nbproject/private/config.properties"/>
    8.45 +        <property file="nbproject/private/configs/${config}.properties"/>
    8.46 +        <property file="nbproject/private/private.properties"/>
    8.47 +    </target>
    8.48 +    <target depends="-pre-init,-init-private" name="-init-user">
    8.49 +        <property file="${user.properties.file}"/>
    8.50 +        <!-- The two properties below are usually overridden -->
    8.51 +        <!-- by the active platform. Just a fallback. -->
    8.52 +        <property name="default.javac.source" value="1.4"/>
    8.53 +        <property name="default.javac.target" value="1.4"/>
    8.54 +    </target>
    8.55 +    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
    8.56 +        <property file="nbproject/configs/${config}.properties"/>
    8.57 +        <property file="nbproject/project.properties"/>
    8.58 +    </target>
    8.59 +    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
    8.60 +        <property name="platform.java" value="${java.home}/bin/java"/>
    8.61 +        <available file="${manifest.file}" property="manifest.available"/>
    8.62 +        <condition property="splashscreen.available">
    8.63 +            <and>
    8.64 +                <not>
    8.65 +                    <equals arg1="${application.splash}" arg2="" trim="true"/>
    8.66 +                </not>
    8.67 +                <available file="${application.splash}"/>
    8.68 +            </and>
    8.69 +        </condition>
    8.70 +        <condition property="main.class.available">
    8.71 +            <and>
    8.72 +                <isset property="main.class"/>
    8.73 +                <not>
    8.74 +                    <equals arg1="${main.class}" arg2="" trim="true"/>
    8.75 +                </not>
    8.76 +            </and>
    8.77 +        </condition>
    8.78 +        <condition property="profile.available">
    8.79 +            <and>
    8.80 +                <isset property="javac.profile"/>
    8.81 +                <length length="0" string="${javac.profile}" when="greater"/>
    8.82 +                <matches pattern="1\.[89](\..*)?" string="${javac.source}"/>
    8.83 +            </and>
    8.84 +        </condition>
    8.85 +        <condition property="do.archive">
    8.86 +            <or>
    8.87 +                <not>
    8.88 +                    <istrue value="${jar.archive.disabled}"/>
    8.89 +                </not>
    8.90 +                <istrue value="${not.archive.disabled}"/>
    8.91 +            </or>
    8.92 +        </condition>
    8.93 +        <condition property="do.mkdist">
    8.94 +            <and>
    8.95 +                <isset property="do.archive"/>
    8.96 +                <isset property="libs.CopyLibs.classpath"/>
    8.97 +                <not>
    8.98 +                    <istrue value="${mkdist.disabled}"/>
    8.99 +                </not>
   8.100 +            </and>
   8.101 +        </condition>
   8.102 +        <condition property="do.archive+manifest.available">
   8.103 +            <and>
   8.104 +                <isset property="manifest.available"/>
   8.105 +                <istrue value="${do.archive}"/>
   8.106 +            </and>
   8.107 +        </condition>
   8.108 +        <condition property="do.archive+main.class.available">
   8.109 +            <and>
   8.110 +                <isset property="main.class.available"/>
   8.111 +                <istrue value="${do.archive}"/>
   8.112 +            </and>
   8.113 +        </condition>
   8.114 +        <condition property="do.archive+splashscreen.available">
   8.115 +            <and>
   8.116 +                <isset property="splashscreen.available"/>
   8.117 +                <istrue value="${do.archive}"/>
   8.118 +            </and>
   8.119 +        </condition>
   8.120 +        <condition property="do.archive+profile.available">
   8.121 +            <and>
   8.122 +                <isset property="profile.available"/>
   8.123 +                <istrue value="${do.archive}"/>
   8.124 +            </and>
   8.125 +        </condition>
   8.126 +        <condition property="have.tests">
   8.127 +            <or>
   8.128 +                <available file="${test.src.dir}"/>
   8.129 +            </or>
   8.130 +        </condition>
   8.131 +        <condition property="have.sources">
   8.132 +            <or>
   8.133 +                <available file="${src.dir}"/>
   8.134 +            </or>
   8.135 +        </condition>
   8.136 +        <condition property="netbeans.home+have.tests">
   8.137 +            <and>
   8.138 +                <isset property="netbeans.home"/>
   8.139 +                <isset property="have.tests"/>
   8.140 +            </and>
   8.141 +        </condition>
   8.142 +        <condition property="no.javadoc.preview">
   8.143 +            <and>
   8.144 +                <isset property="javadoc.preview"/>
   8.145 +                <isfalse value="${javadoc.preview}"/>
   8.146 +            </and>
   8.147 +        </condition>
   8.148 +        <property name="run.jvmargs" value=""/>
   8.149 +        <property name="run.jvmargs.ide" value=""/>
   8.150 +        <property name="javac.compilerargs" value=""/>
   8.151 +        <property name="work.dir" value="${basedir}"/>
   8.152 +        <condition property="no.deps">
   8.153 +            <and>
   8.154 +                <istrue value="${no.dependencies}"/>
   8.155 +            </and>
   8.156 +        </condition>
   8.157 +        <property name="javac.debug" value="true"/>
   8.158 +        <property name="javadoc.preview" value="true"/>
   8.159 +        <property name="application.args" value=""/>
   8.160 +        <property name="source.encoding" value="${file.encoding}"/>
   8.161 +        <property name="runtime.encoding" value="${source.encoding}"/>
   8.162 +        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
   8.163 +            <and>
   8.164 +                <isset property="javadoc.encoding"/>
   8.165 +                <not>
   8.166 +                    <equals arg1="${javadoc.encoding}" arg2=""/>
   8.167 +                </not>
   8.168 +            </and>
   8.169 +        </condition>
   8.170 +        <property name="javadoc.encoding.used" value="${source.encoding}"/>
   8.171 +        <property name="includes" value="**"/>
   8.172 +        <property name="excludes" value=""/>
   8.173 +        <property name="do.depend" value="false"/>
   8.174 +        <condition property="do.depend.true">
   8.175 +            <istrue value="${do.depend}"/>
   8.176 +        </condition>
   8.177 +        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
   8.178 +        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
   8.179 +            <and>
   8.180 +                <isset property="endorsed.classpath"/>
   8.181 +                <not>
   8.182 +                    <equals arg1="${endorsed.classpath}" arg2="" trim="true"/>
   8.183 +                </not>
   8.184 +            </and>
   8.185 +        </condition>
   8.186 +        <condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
   8.187 +            <isset property="profile.available"/>
   8.188 +        </condition>
   8.189 +        <condition else="false" property="jdkBug6558476">
   8.190 +            <and>
   8.191 +                <matches pattern="1\.[56]" string="${java.specification.version}"/>
   8.192 +                <not>
   8.193 +                    <os family="unix"/>
   8.194 +                </not>
   8.195 +            </and>
   8.196 +        </condition>
   8.197 +        <property name="javac.fork" value="${jdkBug6558476}"/>
   8.198 +        <property name="jar.index" value="false"/>
   8.199 +        <property name="jar.index.metainf" value="${jar.index}"/>
   8.200 +        <property name="copylibs.rebase" value="true"/>
   8.201 +        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
   8.202 +        <condition property="junit.available">
   8.203 +            <or>
   8.204 +                <available classname="org.junit.Test" classpath="${run.test.classpath}"/>
   8.205 +                <available classname="junit.framework.Test" classpath="${run.test.classpath}"/>
   8.206 +            </or>
   8.207 +        </condition>
   8.208 +        <condition property="testng.available">
   8.209 +            <available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/>
   8.210 +        </condition>
   8.211 +        <condition property="junit+testng.available">
   8.212 +            <and>
   8.213 +                <istrue value="${junit.available}"/>
   8.214 +                <istrue value="${testng.available}"/>
   8.215 +            </and>
   8.216 +        </condition>
   8.217 +        <condition else="testng" property="testng.mode" value="mixed">
   8.218 +            <istrue value="${junit+testng.available}"/>
   8.219 +        </condition>
   8.220 +        <condition else="" property="testng.debug.mode" value="-mixed">
   8.221 +            <istrue value="${junit+testng.available}"/>
   8.222 +        </condition>
   8.223 +    </target>
   8.224 +    <target name="-post-init">
   8.225 +        <!-- Empty placeholder for easier customization. -->
   8.226 +        <!-- You can override this target in the ../build.xml file. -->
   8.227 +    </target>
   8.228 +    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
   8.229 +        <fail unless="src.dir">Must set src.dir</fail>
   8.230 +        <fail unless="test.src.dir">Must set test.src.dir</fail>
   8.231 +        <fail unless="build.dir">Must set build.dir</fail>
   8.232 +        <fail unless="dist.dir">Must set dist.dir</fail>
   8.233 +        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
   8.234 +        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
   8.235 +        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
   8.236 +        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
   8.237 +        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
   8.238 +        <fail unless="dist.jar">Must set dist.jar</fail>
   8.239 +    </target>
   8.240 +    <target name="-init-macrodef-property">
   8.241 +        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
   8.242 +            <attribute name="name"/>
   8.243 +            <attribute name="value"/>
   8.244 +            <sequential>
   8.245 +                <property name="@{name}" value="${@{value}}"/>
   8.246 +            </sequential>
   8.247 +        </macrodef>
   8.248 +    </target>
   8.249 +    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
   8.250 +        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.251 +            <attribute default="${src.dir}" name="srcdir"/>
   8.252 +            <attribute default="${build.classes.dir}" name="destdir"/>
   8.253 +            <attribute default="${javac.classpath}" name="classpath"/>
   8.254 +            <attribute default="${javac.processorpath}" name="processorpath"/>
   8.255 +            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
   8.256 +            <attribute default="${includes}" name="includes"/>
   8.257 +            <attribute default="${excludes}" name="excludes"/>
   8.258 +            <attribute default="${javac.debug}" name="debug"/>
   8.259 +            <attribute default="${empty.dir}" name="sourcepath"/>
   8.260 +            <attribute default="${empty.dir}" name="gensrcdir"/>
   8.261 +            <element name="customize" optional="true"/>
   8.262 +            <sequential>
   8.263 +                <property location="${build.dir}/empty" name="empty.dir"/>
   8.264 +                <mkdir dir="${empty.dir}"/>
   8.265 +                <mkdir dir="@{apgeneratedsrcdir}"/>
   8.266 +                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
   8.267 +                    <src>
   8.268 +                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
   8.269 +                            <include name="*"/>
   8.270 +                        </dirset>
   8.271 +                    </src>
   8.272 +                    <classpath>
   8.273 +                        <path path="@{classpath}"/>
   8.274 +                    </classpath>
   8.275 +                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
   8.276 +                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
   8.277 +                    <compilerarg line="${javac.compilerargs}"/>
   8.278 +                    <compilerarg value="-processorpath"/>
   8.279 +                    <compilerarg path="@{processorpath}:${empty.dir}"/>
   8.280 +                    <compilerarg line="${ap.processors.internal}"/>
   8.281 +                    <compilerarg line="${annotation.processing.processor.options}"/>
   8.282 +                    <compilerarg value="-s"/>
   8.283 +                    <compilerarg path="@{apgeneratedsrcdir}"/>
   8.284 +                    <compilerarg line="${ap.proc.none.internal}"/>
   8.285 +                    <customize/>
   8.286 +                </javac>
   8.287 +            </sequential>
   8.288 +        </macrodef>
   8.289 +    </target>
   8.290 +    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
   8.291 +        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.292 +            <attribute default="${src.dir}" name="srcdir"/>
   8.293 +            <attribute default="${build.classes.dir}" name="destdir"/>
   8.294 +            <attribute default="${javac.classpath}" name="classpath"/>
   8.295 +            <attribute default="${javac.processorpath}" name="processorpath"/>
   8.296 +            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
   8.297 +            <attribute default="${includes}" name="includes"/>
   8.298 +            <attribute default="${excludes}" name="excludes"/>
   8.299 +            <attribute default="${javac.debug}" name="debug"/>
   8.300 +            <attribute default="${empty.dir}" name="sourcepath"/>
   8.301 +            <attribute default="${empty.dir}" name="gensrcdir"/>
   8.302 +            <element name="customize" optional="true"/>
   8.303 +            <sequential>
   8.304 +                <property location="${build.dir}/empty" name="empty.dir"/>
   8.305 +                <mkdir dir="${empty.dir}"/>
   8.306 +                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
   8.307 +                    <src>
   8.308 +                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
   8.309 +                            <include name="*"/>
   8.310 +                        </dirset>
   8.311 +                    </src>
   8.312 +                    <classpath>
   8.313 +                        <path path="@{classpath}"/>
   8.314 +                    </classpath>
   8.315 +                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
   8.316 +                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
   8.317 +                    <compilerarg line="${javac.compilerargs}"/>
   8.318 +                    <customize/>
   8.319 +                </javac>
   8.320 +            </sequential>
   8.321 +        </macrodef>
   8.322 +    </target>
   8.323 +    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
   8.324 +        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.325 +            <attribute default="${src.dir}" name="srcdir"/>
   8.326 +            <attribute default="${build.classes.dir}" name="destdir"/>
   8.327 +            <attribute default="${javac.classpath}" name="classpath"/>
   8.328 +            <sequential>
   8.329 +                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
   8.330 +                    <classpath>
   8.331 +                        <path path="@{classpath}"/>
   8.332 +                    </classpath>
   8.333 +                </depend>
   8.334 +            </sequential>
   8.335 +        </macrodef>
   8.336 +        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.337 +            <attribute default="${build.classes.dir}" name="destdir"/>
   8.338 +            <sequential>
   8.339 +                <fail unless="javac.includes">Must set javac.includes</fail>
   8.340 +                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
   8.341 +                    <path>
   8.342 +                        <filelist dir="@{destdir}" files="${javac.includes}"/>
   8.343 +                    </path>
   8.344 +                    <globmapper from="*.java" to="*.class"/>
   8.345 +                </pathconvert>
   8.346 +                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
   8.347 +                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
   8.348 +                <delete>
   8.349 +                    <files includesfile="${javac.includesfile.binary}"/>
   8.350 +                </delete>
   8.351 +                <delete>
   8.352 +                    <fileset file="${javac.includesfile.binary}"/>
   8.353 +                </delete>
   8.354 +            </sequential>
   8.355 +        </macrodef>
   8.356 +    </target>
   8.357 +    <target if="${junit.available}" name="-init-macrodef-junit-init">
   8.358 +        <condition else="false" property="nb.junit.batch" value="true">
   8.359 +            <and>
   8.360 +                <istrue value="${junit.available}"/>
   8.361 +                <not>
   8.362 +                    <isset property="test.method"/>
   8.363 +                </not>
   8.364 +            </and>
   8.365 +        </condition>
   8.366 +        <condition else="false" property="nb.junit.single" value="true">
   8.367 +            <and>
   8.368 +                <istrue value="${junit.available}"/>
   8.369 +                <isset property="test.method"/>
   8.370 +            </and>
   8.371 +        </condition>
   8.372 +    </target>
   8.373 +    <target name="-init-test-properties">
   8.374 +        <property name="test.binaryincludes" value="&lt;nothing&gt;"/>
   8.375 +        <property name="test.binarytestincludes" value=""/>
   8.376 +        <property name="test.binaryexcludes" value=""/>
   8.377 +    </target>
   8.378 +    <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
   8.379 +        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.380 +            <attribute default="${includes}" name="includes"/>
   8.381 +            <attribute default="${excludes}" name="excludes"/>
   8.382 +            <attribute default="**" name="testincludes"/>
   8.383 +            <attribute default="" name="testmethods"/>
   8.384 +            <element name="customize" optional="true"/>
   8.385 +            <sequential>
   8.386 +                <property name="junit.forkmode" value="perTest"/>
   8.387 +                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
   8.388 +                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
   8.389 +                    <syspropertyset>
   8.390 +                        <propertyref prefix="test-sys-prop."/>
   8.391 +                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
   8.392 +                    </syspropertyset>
   8.393 +                    <formatter type="brief" usefile="false"/>
   8.394 +                    <formatter type="xml"/>
   8.395 +                    <jvmarg value="-ea"/>
   8.396 +                    <customize/>
   8.397 +                </junit>
   8.398 +            </sequential>
   8.399 +        </macrodef>
   8.400 +    </target>
   8.401 +    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
   8.402 +        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.403 +            <attribute default="${includes}" name="includes"/>
   8.404 +            <attribute default="${excludes}" name="excludes"/>
   8.405 +            <attribute default="**" name="testincludes"/>
   8.406 +            <attribute default="" name="testmethods"/>
   8.407 +            <element name="customize" optional="true"/>
   8.408 +            <sequential>
   8.409 +                <property name="junit.forkmode" value="perTest"/>
   8.410 +                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
   8.411 +                    <batchtest todir="${build.test.results.dir}">
   8.412 +                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
   8.413 +                            <filename name="@{testincludes}"/>
   8.414 +                        </fileset>
   8.415 +                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
   8.416 +                            <filename name="${test.binarytestincludes}"/>
   8.417 +                        </fileset>
   8.418 +                    </batchtest>
   8.419 +                    <syspropertyset>
   8.420 +                        <propertyref prefix="test-sys-prop."/>
   8.421 +                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
   8.422 +                    </syspropertyset>
   8.423 +                    <formatter type="brief" usefile="false"/>
   8.424 +                    <formatter type="xml"/>
   8.425 +                    <jvmarg value="-ea"/>
   8.426 +                    <customize/>
   8.427 +                </junit>
   8.428 +            </sequential>
   8.429 +        </macrodef>
   8.430 +    </target>
   8.431 +    <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
   8.432 +    <target if="${testng.available}" name="-init-macrodef-testng">
   8.433 +        <macrodef name="testng" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.434 +            <attribute default="${includes}" name="includes"/>
   8.435 +            <attribute default="${excludes}" name="excludes"/>
   8.436 +            <attribute default="**" name="testincludes"/>
   8.437 +            <attribute default="" name="testmethods"/>
   8.438 +            <element name="customize" optional="true"/>
   8.439 +            <sequential>
   8.440 +                <condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}">
   8.441 +                    <isset property="test.method"/>
   8.442 +                </condition>
   8.443 +                <union id="test.set">
   8.444 +                    <fileset dir="${test.src.dir}" excludes="@{excludes},**/*.xml,${excludes}" includes="@{includes}">
   8.445 +                        <filename name="@{testincludes}"/>
   8.446 +                    </fileset>
   8.447 +                </union>
   8.448 +                <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
   8.449 +                <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="PalOOCa" testname="TestNG tests" workingDir="${work.dir}">
   8.450 +                    <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
   8.451 +                    <propertyset>
   8.452 +                        <propertyref prefix="test-sys-prop."/>
   8.453 +                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
   8.454 +                    </propertyset>
   8.455 +                    <customize/>
   8.456 +                </testng>
   8.457 +            </sequential>
   8.458 +        </macrodef>
   8.459 +    </target>
   8.460 +    <target name="-init-macrodef-test-impl">
   8.461 +        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.462 +            <attribute default="${includes}" name="includes"/>
   8.463 +            <attribute default="${excludes}" name="excludes"/>
   8.464 +            <attribute default="**" name="testincludes"/>
   8.465 +            <attribute default="" name="testmethods"/>
   8.466 +            <element implicit="true" name="customize" optional="true"/>
   8.467 +            <sequential>
   8.468 +                <echo>No tests executed.</echo>
   8.469 +            </sequential>
   8.470 +        </macrodef>
   8.471 +    </target>
   8.472 +    <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl">
   8.473 +        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.474 +            <attribute default="${includes}" name="includes"/>
   8.475 +            <attribute default="${excludes}" name="excludes"/>
   8.476 +            <attribute default="**" name="testincludes"/>
   8.477 +            <attribute default="" name="testmethods"/>
   8.478 +            <element implicit="true" name="customize" optional="true"/>
   8.479 +            <sequential>
   8.480 +                <j2seproject3:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
   8.481 +                    <customize/>
   8.482 +                </j2seproject3:junit>
   8.483 +            </sequential>
   8.484 +        </macrodef>
   8.485 +    </target>
   8.486 +    <target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl">
   8.487 +        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.488 +            <attribute default="${includes}" name="includes"/>
   8.489 +            <attribute default="${excludes}" name="excludes"/>
   8.490 +            <attribute default="**" name="testincludes"/>
   8.491 +            <attribute default="" name="testmethods"/>
   8.492 +            <element implicit="true" name="customize" optional="true"/>
   8.493 +            <sequential>
   8.494 +                <j2seproject3:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
   8.495 +                    <customize/>
   8.496 +                </j2seproject3:testng>
   8.497 +            </sequential>
   8.498 +        </macrodef>
   8.499 +    </target>
   8.500 +    <target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test">
   8.501 +        <macrodef name="test" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.502 +            <attribute default="${includes}" name="includes"/>
   8.503 +            <attribute default="${excludes}" name="excludes"/>
   8.504 +            <attribute default="**" name="testincludes"/>
   8.505 +            <attribute default="" name="testmethods"/>
   8.506 +            <sequential>
   8.507 +                <j2seproject3:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
   8.508 +                    <customize>
   8.509 +                        <classpath>
   8.510 +                            <path path="${run.test.classpath}"/>
   8.511 +                        </classpath>
   8.512 +                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
   8.513 +                        <jvmarg line="${run.jvmargs}"/>
   8.514 +                        <jvmarg line="${run.jvmargs.ide}"/>
   8.515 +                    </customize>
   8.516 +                </j2seproject3:test-impl>
   8.517 +            </sequential>
   8.518 +        </macrodef>
   8.519 +    </target>
   8.520 +    <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
   8.521 +        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.522 +            <attribute default="${includes}" name="includes"/>
   8.523 +            <attribute default="${excludes}" name="excludes"/>
   8.524 +            <attribute default="**" name="testincludes"/>
   8.525 +            <attribute default="" name="testmethods"/>
   8.526 +            <element name="customize" optional="true"/>
   8.527 +            <sequential>
   8.528 +                <property name="junit.forkmode" value="perTest"/>
   8.529 +                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
   8.530 +                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
   8.531 +                    <syspropertyset>
   8.532 +                        <propertyref prefix="test-sys-prop."/>
   8.533 +                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
   8.534 +                    </syspropertyset>
   8.535 +                    <formatter type="brief" usefile="false"/>
   8.536 +                    <formatter type="xml"/>
   8.537 +                    <jvmarg value="-ea"/>
   8.538 +                    <jvmarg line="${debug-args-line}"/>
   8.539 +                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
   8.540 +                    <customize/>
   8.541 +                </junit>
   8.542 +            </sequential>
   8.543 +        </macrodef>
   8.544 +    </target>
   8.545 +    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
   8.546 +        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.547 +            <attribute default="${includes}" name="includes"/>
   8.548 +            <attribute default="${excludes}" name="excludes"/>
   8.549 +            <attribute default="**" name="testincludes"/>
   8.550 +            <attribute default="" name="testmethods"/>
   8.551 +            <element name="customize" optional="true"/>
   8.552 +            <sequential>
   8.553 +                <property name="junit.forkmode" value="perTest"/>
   8.554 +                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
   8.555 +                    <batchtest todir="${build.test.results.dir}">
   8.556 +                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
   8.557 +                            <filename name="@{testincludes}"/>
   8.558 +                        </fileset>
   8.559 +                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
   8.560 +                            <filename name="${test.binarytestincludes}"/>
   8.561 +                        </fileset>
   8.562 +                    </batchtest>
   8.563 +                    <syspropertyset>
   8.564 +                        <propertyref prefix="test-sys-prop."/>
   8.565 +                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
   8.566 +                    </syspropertyset>
   8.567 +                    <formatter type="brief" usefile="false"/>
   8.568 +                    <formatter type="xml"/>
   8.569 +                    <jvmarg value="-ea"/>
   8.570 +                    <jvmarg line="${debug-args-line}"/>
   8.571 +                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
   8.572 +                    <customize/>
   8.573 +                </junit>
   8.574 +            </sequential>
   8.575 +        </macrodef>
   8.576 +    </target>
   8.577 +    <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
   8.578 +        <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.579 +            <attribute default="${includes}" name="includes"/>
   8.580 +            <attribute default="${excludes}" name="excludes"/>
   8.581 +            <attribute default="**" name="testincludes"/>
   8.582 +            <attribute default="" name="testmethods"/>
   8.583 +            <element implicit="true" name="customize" optional="true"/>
   8.584 +            <sequential>
   8.585 +                <j2seproject3:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
   8.586 +                    <customize/>
   8.587 +                </j2seproject3:junit-debug>
   8.588 +            </sequential>
   8.589 +        </macrodef>
   8.590 +    </target>
   8.591 +    <target if="${testng.available}" name="-init-macrodef-testng-debug">
   8.592 +        <macrodef name="testng-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.593 +            <attribute default="${main.class}" name="testClass"/>
   8.594 +            <attribute default="" name="testMethod"/>
   8.595 +            <element name="customize2" optional="true"/>
   8.596 +            <sequential>
   8.597 +                <condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
   8.598 +                    <isset property="test.method"/>
   8.599 +                </condition>
   8.600 +                <condition else="-suitename PalOOCa -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
   8.601 +                    <matches pattern=".*\.xml" string="@{testClass}"/>
   8.602 +                </condition>
   8.603 +                <delete dir="${build.test.results.dir}" quiet="true"/>
   8.604 +                <mkdir dir="${build.test.results.dir}"/>
   8.605 +                <j2seproject3:debug classname="org.testng.TestNG" classpath="${debug.test.classpath}">
   8.606 +                    <customize>
   8.607 +                        <customize2/>
   8.608 +                        <jvmarg value="-ea"/>
   8.609 +                        <arg line="${testng.debug.mode}"/>
   8.610 +                        <arg line="-d ${build.test.results.dir}"/>
   8.611 +                        <arg line="-listener org.testng.reporters.VerboseReporter"/>
   8.612 +                        <arg line="${testng.cmd.args}"/>
   8.613 +                    </customize>
   8.614 +                </j2seproject3:debug>
   8.615 +            </sequential>
   8.616 +        </macrodef>
   8.617 +    </target>
   8.618 +    <target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl">
   8.619 +        <macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.620 +            <attribute default="${main.class}" name="testClass"/>
   8.621 +            <attribute default="" name="testMethod"/>
   8.622 +            <element implicit="true" name="customize2" optional="true"/>
   8.623 +            <sequential>
   8.624 +                <j2seproject3:testng-debug testClass="@{testClass}" testMethod="@{testMethod}">
   8.625 +                    <customize2/>
   8.626 +                </j2seproject3:testng-debug>
   8.627 +            </sequential>
   8.628 +        </macrodef>
   8.629 +    </target>
   8.630 +    <target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit">
   8.631 +        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.632 +            <attribute default="${includes}" name="includes"/>
   8.633 +            <attribute default="${excludes}" name="excludes"/>
   8.634 +            <attribute default="**" name="testincludes"/>
   8.635 +            <attribute default="" name="testmethods"/>
   8.636 +            <attribute default="${main.class}" name="testClass"/>
   8.637 +            <attribute default="" name="testMethod"/>
   8.638 +            <sequential>
   8.639 +                <j2seproject3:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
   8.640 +                    <customize>
   8.641 +                        <classpath>
   8.642 +                            <path path="${run.test.classpath}"/>
   8.643 +                        </classpath>
   8.644 +                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
   8.645 +                        <jvmarg line="${run.jvmargs}"/>
   8.646 +                        <jvmarg line="${run.jvmargs.ide}"/>
   8.647 +                    </customize>
   8.648 +                </j2seproject3:test-debug-impl>
   8.649 +            </sequential>
   8.650 +        </macrodef>
   8.651 +    </target>
   8.652 +    <target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng">
   8.653 +        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.654 +            <attribute default="${includes}" name="includes"/>
   8.655 +            <attribute default="${excludes}" name="excludes"/>
   8.656 +            <attribute default="**" name="testincludes"/>
   8.657 +            <attribute default="" name="testmethods"/>
   8.658 +            <attribute default="${main.class}" name="testClass"/>
   8.659 +            <attribute default="" name="testMethod"/>
   8.660 +            <sequential>
   8.661 +                <j2seproject3:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}">
   8.662 +                    <customize2>
   8.663 +                        <syspropertyset>
   8.664 +                            <propertyref prefix="test-sys-prop."/>
   8.665 +                            <mapper from="test-sys-prop.*" to="*" type="glob"/>
   8.666 +                        </syspropertyset>
   8.667 +                    </customize2>
   8.668 +                </j2seproject3:testng-debug-impl>
   8.669 +            </sequential>
   8.670 +        </macrodef>
   8.671 +    </target>
   8.672 +    <target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/>
   8.673 +    <!--
   8.674 +                pre NB7.2 profiling section; consider it deprecated
   8.675 +            -->
   8.676 +    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/>
   8.677 +    <target if="profiler.info.jvmargs.agent" name="-profile-pre-init">
   8.678 +        <!-- Empty placeholder for easier customization. -->
   8.679 +        <!-- You can override this target in the ../build.xml file. -->
   8.680 +    </target>
   8.681 +    <target if="profiler.info.jvmargs.agent" name="-profile-post-init">
   8.682 +        <!-- Empty placeholder for easier customization. -->
   8.683 +        <!-- You can override this target in the ../build.xml file. -->
   8.684 +    </target>
   8.685 +    <target if="profiler.info.jvmargs.agent" name="-profile-init-macrodef-profile">
   8.686 +        <macrodef name="resolve">
   8.687 +            <attribute name="name"/>
   8.688 +            <attribute name="value"/>
   8.689 +            <sequential>
   8.690 +                <property name="@{name}" value="${env.@{value}}"/>
   8.691 +            </sequential>
   8.692 +        </macrodef>
   8.693 +        <macrodef name="profile">
   8.694 +            <attribute default="${main.class}" name="classname"/>
   8.695 +            <element name="customize" optional="true"/>
   8.696 +            <sequential>
   8.697 +                <property environment="env"/>
   8.698 +                <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
   8.699 +                <java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
   8.700 +                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
   8.701 +                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
   8.702 +                    <jvmarg line="${profiler.info.jvmargs}"/>
   8.703 +                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
   8.704 +                    <arg line="${application.args}"/>
   8.705 +                    <classpath>
   8.706 +                        <path path="${run.classpath}"/>
   8.707 +                    </classpath>
   8.708 +                    <syspropertyset>
   8.709 +                        <propertyref prefix="run-sys-prop."/>
   8.710 +                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
   8.711 +                    </syspropertyset>
   8.712 +                    <customize/>
   8.713 +                </java>
   8.714 +            </sequential>
   8.715 +        </macrodef>
   8.716 +    </target>
   8.717 +    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" if="profiler.info.jvmargs.agent" name="-profile-init-check">
   8.718 +        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
   8.719 +        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
   8.720 +    </target>
   8.721 +    <!--
   8.722 +                end of pre NB7.2 profiling section
   8.723 +            -->
   8.724 +    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
   8.725 +        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
   8.726 +            <attribute default="${main.class}" name="name"/>
   8.727 +            <attribute default="${debug.classpath}" name="classpath"/>
   8.728 +            <attribute default="" name="stopclassname"/>
   8.729 +            <sequential>
   8.730 +                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
   8.731 +                    <classpath>
   8.732 +                        <path path="@{classpath}"/>
   8.733 +                    </classpath>
   8.734 +                </nbjpdastart>
   8.735 +            </sequential>
   8.736 +        </macrodef>
   8.737 +        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
   8.738 +            <attribute default="${build.classes.dir}" name="dir"/>
   8.739 +            <sequential>
   8.740 +                <nbjpdareload>
   8.741 +                    <fileset dir="@{dir}" includes="${fix.classes}">
   8.742 +                        <include name="${fix.includes}*.class"/>
   8.743 +                    </fileset>
   8.744 +                </nbjpdareload>
   8.745 +            </sequential>
   8.746 +        </macrodef>
   8.747 +    </target>
   8.748 +    <target name="-init-debug-args">
   8.749 +        <property name="version-output" value="java version &quot;${ant.java.version}"/>
   8.750 +        <condition property="have-jdk-older-than-1.4">
   8.751 +            <or>
   8.752 +                <contains string="${version-output}" substring="java version &quot;1.0"/>
   8.753 +                <contains string="${version-output}" substring="java version &quot;1.1"/>
   8.754 +                <contains string="${version-output}" substring="java version &quot;1.2"/>
   8.755 +                <contains string="${version-output}" substring="java version &quot;1.3"/>
   8.756 +            </or>
   8.757 +        </condition>
   8.758 +        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
   8.759 +            <istrue value="${have-jdk-older-than-1.4}"/>
   8.760 +        </condition>
   8.761 +        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
   8.762 +            <os family="windows"/>
   8.763 +        </condition>
   8.764 +        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
   8.765 +            <isset property="debug.transport"/>
   8.766 +        </condition>
   8.767 +    </target>
   8.768 +    <target depends="-init-debug-args" name="-init-macrodef-debug">
   8.769 +        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.770 +            <attribute default="${main.class}" name="classname"/>
   8.771 +            <attribute default="${debug.classpath}" name="classpath"/>
   8.772 +            <element name="customize" optional="true"/>
   8.773 +            <sequential>
   8.774 +                <java classname="@{classname}" dir="${work.dir}" fork="true">
   8.775 +                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
   8.776 +                    <jvmarg line="${debug-args-line}"/>
   8.777 +                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
   8.778 +                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
   8.779 +                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
   8.780 +                    <jvmarg line="${run.jvmargs}"/>
   8.781 +                    <jvmarg line="${run.jvmargs.ide}"/>
   8.782 +                    <classpath>
   8.783 +                        <path path="@{classpath}"/>
   8.784 +                    </classpath>
   8.785 +                    <syspropertyset>
   8.786 +                        <propertyref prefix="run-sys-prop."/>
   8.787 +                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
   8.788 +                    </syspropertyset>
   8.789 +                    <customize/>
   8.790 +                </java>
   8.791 +            </sequential>
   8.792 +        </macrodef>
   8.793 +    </target>
   8.794 +    <target name="-init-macrodef-java">
   8.795 +        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
   8.796 +            <attribute default="${main.class}" name="classname"/>
   8.797 +            <attribute default="${run.classpath}" name="classpath"/>
   8.798 +            <attribute default="jvm" name="jvm"/>
   8.799 +            <element name="customize" optional="true"/>
   8.800 +            <sequential>
   8.801 +                <java classname="@{classname}" dir="${work.dir}" fork="true">
   8.802 +                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
   8.803 +                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
   8.804 +                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
   8.805 +                    <jvmarg line="${run.jvmargs}"/>
   8.806 +                    <jvmarg line="${run.jvmargs.ide}"/>
   8.807 +                    <classpath>
   8.808 +                        <path path="@{classpath}"/>
   8.809 +                    </classpath>
   8.810 +                    <syspropertyset>
   8.811 +                        <propertyref prefix="run-sys-prop."/>
   8.812 +                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
   8.813 +                    </syspropertyset>
   8.814 +                    <customize/>
   8.815 +                </java>
   8.816 +            </sequential>
   8.817 +        </macrodef>
   8.818 +    </target>
   8.819 +    <target name="-init-macrodef-copylibs">
   8.820 +        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
   8.821 +            <attribute default="${manifest.file}" name="manifest"/>
   8.822 +            <element name="customize" optional="true"/>
   8.823 +            <sequential>
   8.824 +                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
   8.825 +                <pathconvert property="run.classpath.without.build.classes.dir">
   8.826 +                    <path path="${run.classpath}"/>
   8.827 +                    <map from="${build.classes.dir.resolved}" to=""/>
   8.828 +                </pathconvert>
   8.829 +                <pathconvert pathsep=" " property="jar.classpath">
   8.830 +                    <path path="${run.classpath.without.build.classes.dir}"/>
   8.831 +                    <chainedmapper>
   8.832 +                        <flattenmapper/>
   8.833 +                        <filtermapper>
   8.834 +                            <replacestring from=" " to="%20"/>
   8.835 +                        </filtermapper>
   8.836 +                        <globmapper from="*" to="lib/*"/>
   8.837 +                    </chainedmapper>
   8.838 +                </pathconvert>
   8.839 +                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
   8.840 +                <copylibs compress="${jar.compress}" excludeFromCopy="${copylibs.excludes}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
   8.841 +                    <fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
   8.842 +                    <manifest>
   8.843 +                        <attribute name="Class-Path" value="${jar.classpath}"/>
   8.844 +                        <customize/>
   8.845 +                    </manifest>
   8.846 +                </copylibs>
   8.847 +            </sequential>
   8.848 +        </macrodef>
   8.849 +    </target>
   8.850 +    <target name="-init-presetdef-jar">
   8.851 +        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
   8.852 +            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
   8.853 +                <j2seproject1:fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
   8.854 +            </jar>
   8.855 +        </presetdef>
   8.856 +    </target>
   8.857 +    <target name="-init-ap-cmdline-properties">
   8.858 +        <property name="annotation.processing.enabled" value="true"/>
   8.859 +        <property name="annotation.processing.processors.list" value=""/>
   8.860 +        <property name="annotation.processing.processor.options" value=""/>
   8.861 +        <property name="annotation.processing.run.all.processors" value="true"/>
   8.862 +        <property name="javac.processorpath" value="${javac.classpath}"/>
   8.863 +        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
   8.864 +        <condition property="ap.supported.internal" value="true">
   8.865 +            <not>
   8.866 +                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
   8.867 +            </not>
   8.868 +        </condition>
   8.869 +    </target>
   8.870 +    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
   8.871 +        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
   8.872 +            <isfalse value="${annotation.processing.run.all.processors}"/>
   8.873 +        </condition>
   8.874 +        <condition else="" property="ap.proc.none.internal" value="-proc:none">
   8.875 +            <isfalse value="${annotation.processing.enabled}"/>
   8.876 +        </condition>
   8.877 +    </target>
   8.878 +    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
   8.879 +        <property name="ap.cmd.line.internal" value=""/>
   8.880 +    </target>
   8.881 +    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-test,-init-macrodef-test-debug,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
   8.882 +    <!--
   8.883 +                ===================
   8.884 +                COMPILATION SECTION
   8.885 +                ===================
   8.886 +            -->
   8.887 +    <target name="-deps-jar-init" unless="built-jar.properties">
   8.888 +        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
   8.889 +        <delete file="${built-jar.properties}" quiet="true"/>
   8.890 +    </target>
   8.891 +    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
   8.892 +        <echo level="warn" message="Cycle detected: PalOOCa was already built"/>
   8.893 +    </target>
   8.894 +    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
   8.895 +        <mkdir dir="${build.dir}"/>
   8.896 +        <touch file="${built-jar.properties}" verbose="false"/>
   8.897 +        <property file="${built-jar.properties}" prefix="already.built.jar."/>
   8.898 +        <antcall target="-warn-already-built-jar"/>
   8.899 +        <propertyfile file="${built-jar.properties}">
   8.900 +            <entry key="${basedir}" value=""/>
   8.901 +        </propertyfile>
   8.902 +    </target>
   8.903 +    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
   8.904 +    <target depends="init" name="-check-automatic-build">
   8.905 +        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
   8.906 +    </target>
   8.907 +    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
   8.908 +        <antcall target="clean"/>
   8.909 +    </target>
   8.910 +    <target depends="init,deps-jar" name="-pre-pre-compile">
   8.911 +        <mkdir dir="${build.classes.dir}"/>
   8.912 +    </target>
   8.913 +    <target name="-pre-compile">
   8.914 +        <!-- Empty placeholder for easier customization. -->
   8.915 +        <!-- You can override this target in the ../build.xml file. -->
   8.916 +    </target>
   8.917 +    <target if="do.depend.true" name="-compile-depend">
   8.918 +        <pathconvert property="build.generated.subdirs">
   8.919 +            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
   8.920 +                <include name="*"/>
   8.921 +            </dirset>
   8.922 +        </pathconvert>
   8.923 +        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
   8.924 +    </target>
   8.925 +    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
   8.926 +        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
   8.927 +        <copy todir="${build.classes.dir}">
   8.928 +            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
   8.929 +        </copy>
   8.930 +    </target>
   8.931 +    <target if="has.persistence.xml" name="-copy-persistence-xml">
   8.932 +        <mkdir dir="${build.classes.dir}/META-INF"/>
   8.933 +        <copy todir="${build.classes.dir}/META-INF">
   8.934 +            <fileset dir="${meta.inf.dir}" includes="persistence.xml orm.xml"/>
   8.935 +        </copy>
   8.936 +    </target>
   8.937 +    <target name="-post-compile">
   8.938 +        <!-- Empty placeholder for easier customization. -->
   8.939 +        <!-- You can override this target in the ../build.xml file. -->
   8.940 +    </target>
   8.941 +    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
   8.942 +    <target name="-pre-compile-single">
   8.943 +        <!-- Empty placeholder for easier customization. -->
   8.944 +        <!-- You can override this target in the ../build.xml file. -->
   8.945 +    </target>
   8.946 +    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
   8.947 +        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
   8.948 +        <j2seproject3:force-recompile/>
   8.949 +        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
   8.950 +    </target>
   8.951 +    <target name="-post-compile-single">
   8.952 +        <!-- Empty placeholder for easier customization. -->
   8.953 +        <!-- You can override this target in the ../build.xml file. -->
   8.954 +    </target>
   8.955 +    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
   8.956 +    <!--
   8.957 +                ====================
   8.958 +                JAR BUILDING SECTION
   8.959 +                ====================
   8.960 +            -->
   8.961 +    <target depends="init" name="-pre-pre-jar">
   8.962 +        <dirname file="${dist.jar}" property="dist.jar.dir"/>
   8.963 +        <mkdir dir="${dist.jar.dir}"/>
   8.964 +    </target>
   8.965 +    <target name="-pre-jar">
   8.966 +        <!-- Empty placeholder for easier customization. -->
   8.967 +        <!-- You can override this target in the ../build.xml file. -->
   8.968 +    </target>
   8.969 +    <target depends="init" if="do.archive" name="-do-jar-create-manifest" unless="manifest.available">
   8.970 +        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
   8.971 +        <touch file="${tmp.manifest.file}" verbose="false"/>
   8.972 +    </target>
   8.973 +    <target depends="init" if="do.archive+manifest.available" name="-do-jar-copy-manifest">
   8.974 +        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
   8.975 +        <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
   8.976 +    </target>
   8.977 +    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
   8.978 +        <manifest file="${tmp.manifest.file}" mode="update">
   8.979 +            <attribute name="Main-Class" value="${main.class}"/>
   8.980 +        </manifest>
   8.981 +    </target>
   8.982 +    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+profile.available" name="-do-jar-set-profile">
   8.983 +        <manifest file="${tmp.manifest.file}" mode="update">
   8.984 +            <attribute name="Profile" value="${javac.profile}"/>
   8.985 +        </manifest>
   8.986 +    </target>
   8.987 +    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-set-splashscreen">
   8.988 +        <basename file="${application.splash}" property="splashscreen.basename"/>
   8.989 +        <mkdir dir="${build.classes.dir}/META-INF"/>
   8.990 +        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
   8.991 +        <manifest file="${tmp.manifest.file}" mode="update">
   8.992 +            <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
   8.993 +        </manifest>
   8.994 +    </target>
   8.995 +    <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.mkdist" name="-do-jar-copylibs">
   8.996 +        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
   8.997 +        <echo level="info">To run this application from the command line without Ant, try:</echo>
   8.998 +        <property location="${dist.jar}" name="dist.jar.resolved"/>
   8.999 +        <echo level="info">java -jar "${dist.jar.resolved}"</echo>
  8.1000 +    </target>
  8.1001 +    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
  8.1002 +        <j2seproject1:jar manifest="${tmp.manifest.file}"/>
  8.1003 +        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
  8.1004 +        <property location="${dist.jar}" name="dist.jar.resolved"/>
  8.1005 +        <pathconvert property="run.classpath.with.dist.jar">
  8.1006 +            <path path="${run.classpath}"/>
  8.1007 +            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
  8.1008 +        </pathconvert>
  8.1009 +        <condition else="" property="jar.usage.message" value="To run this application from the command line without Ant, try:${line.separator}${platform.java} -cp ${run.classpath.with.dist.jar} ${main.class}">
  8.1010 +            <isset property="main.class.available"/>
  8.1011 +        </condition>
  8.1012 +        <condition else="debug" property="jar.usage.level" value="info">
  8.1013 +            <isset property="main.class.available"/>
  8.1014 +        </condition>
  8.1015 +        <echo level="${jar.usage.level}" message="${jar.usage.message}"/>
  8.1016 +    </target>
  8.1017 +    <target depends="-do-jar-copylibs" if="do.archive" name="-do-jar-delete-manifest">
  8.1018 +        <delete>
  8.1019 +            <fileset file="${tmp.manifest.file}"/>
  8.1020 +        </delete>
  8.1021 +    </target>
  8.1022 +    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-jar,-do-jar-delete-manifest" name="-do-jar-without-libraries"/>
  8.1023 +    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-copylibs,-do-jar-delete-manifest" name="-do-jar-with-libraries"/>
  8.1024 +    <target name="-post-jar">
  8.1025 +        <!-- Empty placeholder for easier customization. -->
  8.1026 +        <!-- You can override this target in the ../build.xml file. -->
  8.1027 +    </target>
  8.1028 +    <target depends="init,compile,-pre-jar,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar" name="-do-jar"/>
  8.1029 +    <target depends="init,compile,-pre-jar,-do-jar,-post-jar" description="Build JAR." name="jar"/>
  8.1030 +    <!--
  8.1031 +                =================
  8.1032 +                EXECUTION SECTION
  8.1033 +                =================
  8.1034 +            -->
  8.1035 +    <target depends="init,compile" description="Run a main class." name="run">
  8.1036 +        <j2seproject1:java>
  8.1037 +            <customize>
  8.1038 +                <arg line="${application.args}"/>
  8.1039 +            </customize>
  8.1040 +        </j2seproject1:java>
  8.1041 +    </target>
  8.1042 +    <target name="-do-not-recompile">
  8.1043 +        <property name="javac.includes.binary" value=""/>
  8.1044 +    </target>
  8.1045 +    <target depends="init,compile-single" name="run-single">
  8.1046 +        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
  8.1047 +        <j2seproject1:java classname="${run.class}"/>
  8.1048 +    </target>
  8.1049 +    <target depends="init,compile-test-single" name="run-test-with-main">
  8.1050 +        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
  8.1051 +        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
  8.1052 +    </target>
  8.1053 +    <!--
  8.1054 +                =================
  8.1055 +                DEBUGGING SECTION
  8.1056 +                =================
  8.1057 +            -->
  8.1058 +    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
  8.1059 +        <j2seproject1:nbjpdastart name="${debug.class}"/>
  8.1060 +    </target>
  8.1061 +    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
  8.1062 +        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
  8.1063 +    </target>
  8.1064 +    <target depends="init,compile" name="-debug-start-debuggee">
  8.1065 +        <j2seproject3:debug>
  8.1066 +            <customize>
  8.1067 +                <arg line="${application.args}"/>
  8.1068 +            </customize>
  8.1069 +        </j2seproject3:debug>
  8.1070 +    </target>
  8.1071 +    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
  8.1072 +    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
  8.1073 +        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
  8.1074 +    </target>
  8.1075 +    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
  8.1076 +    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
  8.1077 +        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
  8.1078 +        <j2seproject3:debug classname="${debug.class}"/>
  8.1079 +    </target>
  8.1080 +    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
  8.1081 +    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
  8.1082 +        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
  8.1083 +        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
  8.1084 +    </target>
  8.1085 +    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
  8.1086 +    <target depends="init" name="-pre-debug-fix">
  8.1087 +        <fail unless="fix.includes">Must set fix.includes</fail>
  8.1088 +        <property name="javac.includes" value="${fix.includes}.java"/>
  8.1089 +    </target>
  8.1090 +    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
  8.1091 +        <j2seproject1:nbjpdareload/>
  8.1092 +    </target>
  8.1093 +    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
  8.1094 +    <!--
  8.1095 +                =================
  8.1096 +                PROFILING SECTION
  8.1097 +                =================
  8.1098 +            -->
  8.1099 +    <!--
  8.1100 +                pre NB7.2 profiler integration
  8.1101 +            -->
  8.1102 +    <target depends="profile-init,compile" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72">
  8.1103 +        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
  8.1104 +        <nbprofiledirect>
  8.1105 +            <classpath>
  8.1106 +                <path path="${run.classpath}"/>
  8.1107 +            </classpath>
  8.1108 +        </nbprofiledirect>
  8.1109 +        <profile/>
  8.1110 +    </target>
  8.1111 +    <target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="profiler.info.jvmargs.agent" name="-profile-single-pre72">
  8.1112 +        <fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
  8.1113 +        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
  8.1114 +        <nbprofiledirect>
  8.1115 +            <classpath>
  8.1116 +                <path path="${run.classpath}"/>
  8.1117 +            </classpath>
  8.1118 +        </nbprofiledirect>
  8.1119 +        <profile classname="${profile.class}"/>
  8.1120 +    </target>
  8.1121 +    <target depends="profile-init,compile-single" if="profiler.info.jvmargs.agent" name="-profile-applet-pre72">
  8.1122 +        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
  8.1123 +        <nbprofiledirect>
  8.1124 +            <classpath>
  8.1125 +                <path path="${run.classpath}"/>
  8.1126 +            </classpath>
  8.1127 +        </nbprofiledirect>
  8.1128 +        <profile classname="sun.applet.AppletViewer">
  8.1129 +            <customize>
  8.1130 +                <arg value="${applet.url}"/>
  8.1131 +            </customize>
  8.1132 +        </profile>
  8.1133 +    </target>
  8.1134 +    <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
  8.1135 +        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
  8.1136 +        <nbprofiledirect>
  8.1137 +            <classpath>
  8.1138 +                <path path="${run.test.classpath}"/>
  8.1139 +            </classpath>
  8.1140 +        </nbprofiledirect>
  8.1141 +        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
  8.1142 +            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
  8.1143 +            <jvmarg value="${profiler.info.jvmargs.agent}"/>
  8.1144 +            <jvmarg line="${profiler.info.jvmargs}"/>
  8.1145 +            <test name="${profile.class}"/>
  8.1146 +            <classpath>
  8.1147 +                <path path="${run.test.classpath}"/>
  8.1148 +            </classpath>
  8.1149 +            <syspropertyset>
  8.1150 +                <propertyref prefix="test-sys-prop."/>
  8.1151 +                <mapper from="test-sys-prop.*" to="*" type="glob"/>
  8.1152 +            </syspropertyset>
  8.1153 +            <formatter type="brief" usefile="false"/>
  8.1154 +            <formatter type="xml"/>
  8.1155 +        </junit>
  8.1156 +    </target>
  8.1157 +    <!--
  8.1158 +                end of pre NB72 profiling section
  8.1159 +            -->
  8.1160 +    <target if="netbeans.home" name="-profile-check">
  8.1161 +        <condition property="profiler.configured">
  8.1162 +            <or>
  8.1163 +                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
  8.1164 +                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
  8.1165 +            </or>
  8.1166 +        </condition>
  8.1167 +    </target>
  8.1168 +    <target depends="-profile-check,-profile-pre72" description="Profile a project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent">
  8.1169 +        <startprofiler/>
  8.1170 +        <antcall target="run"/>
  8.1171 +    </target>
  8.1172 +    <target depends="-profile-check,-profile-single-pre72" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-single" unless="profiler.info.jvmargs.agent">
  8.1173 +        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
  8.1174 +        <startprofiler/>
  8.1175 +        <antcall target="run-single"/>
  8.1176 +    </target>
  8.1177 +    <target depends="-profile-test-single-pre72" description="Profile a selected test in the IDE." name="profile-test-single"/>
  8.1178 +    <target depends="-profile-check" description="Profile a selected test in the IDE." if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs">
  8.1179 +        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
  8.1180 +        <startprofiler/>
  8.1181 +        <antcall target="test-single"/>
  8.1182 +    </target>
  8.1183 +    <target depends="-profile-check" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-test-with-main">
  8.1184 +        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
  8.1185 +        <startprofiler/>
  8.1186 +        <antcal target="run-test-with-main"/>
  8.1187 +    </target>
  8.1188 +    <target depends="-profile-check,-profile-applet-pre72" if="profiler.configured" name="profile-applet" unless="profiler.info.jvmargs.agent">
  8.1189 +        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
  8.1190 +        <startprofiler/>
  8.1191 +        <antcall target="run-applet"/>
  8.1192 +    </target>
  8.1193 +    <!--
  8.1194 +                ===============
  8.1195 +                JAVADOC SECTION
  8.1196 +                ===============
  8.1197 +            -->
  8.1198 +    <target depends="init" if="have.sources" name="-javadoc-build">
  8.1199 +        <mkdir dir="${dist.javadoc.dir}"/>
  8.1200 +        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
  8.1201 +            <and>
  8.1202 +                <isset property="endorsed.classpath.cmd.line.arg"/>
  8.1203 +                <not>
  8.1204 +                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
  8.1205 +                </not>
  8.1206 +            </and>
  8.1207 +        </condition>
  8.1208 +        <condition else="" property="bug5101868workaround" value="*.java">
  8.1209 +            <matches pattern="1\.[56](\..*)?" string="${java.version}"/>
  8.1210 +        </condition>
  8.1211 +        <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${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}">
  8.1212 +            <classpath>
  8.1213 +                <path path="${javac.classpath}"/>
  8.1214 +            </classpath>
  8.1215 +            <fileset dir="${src.dir}" excludes="${bug5101868workaround},${excludes}" includes="${includes}">
  8.1216 +                <filename name="**/*.java"/>
  8.1217 +            </fileset>
  8.1218 +            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
  8.1219 +                <include name="**/*.java"/>
  8.1220 +                <exclude name="*.java"/>
  8.1221 +            </fileset>
  8.1222 +            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
  8.1223 +        </javadoc>
  8.1224 +        <copy todir="${dist.javadoc.dir}">
  8.1225 +            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
  8.1226 +                <filename name="**/doc-files/**"/>
  8.1227 +            </fileset>
  8.1228 +            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
  8.1229 +                <include name="**/doc-files/**"/>
  8.1230 +            </fileset>
  8.1231 +        </copy>
  8.1232 +    </target>
  8.1233 +    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
  8.1234 +        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
  8.1235 +    </target>
  8.1236 +    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
  8.1237 +    <!--
  8.1238 +                =========================
  8.1239 +                TEST COMPILATION SECTION
  8.1240 +                =========================
  8.1241 +            -->
  8.1242 +    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
  8.1243 +        <mkdir dir="${build.test.classes.dir}"/>
  8.1244 +    </target>
  8.1245 +    <target name="-pre-compile-test">
  8.1246 +        <!-- Empty placeholder for easier customization. -->
  8.1247 +        <!-- You can override this target in the ../build.xml file. -->
  8.1248 +    </target>
  8.1249 +    <target if="do.depend.true" name="-compile-test-depend">
  8.1250 +        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
  8.1251 +    </target>
  8.1252 +    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
  8.1253 +        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
  8.1254 +        <copy todir="${build.test.classes.dir}">
  8.1255 +            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
  8.1256 +        </copy>
  8.1257 +    </target>
  8.1258 +    <target name="-post-compile-test">
  8.1259 +        <!-- Empty placeholder for easier customization. -->
  8.1260 +        <!-- You can override this target in the ../build.xml file. -->
  8.1261 +    </target>
  8.1262 +    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
  8.1263 +    <target name="-pre-compile-test-single">
  8.1264 +        <!-- Empty placeholder for easier customization. -->
  8.1265 +        <!-- You can override this target in the ../build.xml file. -->
  8.1266 +    </target>
  8.1267 +    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
  8.1268 +        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
  8.1269 +        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
  8.1270 +        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
  8.1271 +        <copy todir="${build.test.classes.dir}">
  8.1272 +            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
  8.1273 +        </copy>
  8.1274 +    </target>
  8.1275 +    <target name="-post-compile-test-single">
  8.1276 +        <!-- Empty placeholder for easier customization. -->
  8.1277 +        <!-- You can override this target in the ../build.xml file. -->
  8.1278 +    </target>
  8.1279 +    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
  8.1280 +    <!--
  8.1281 +                =======================
  8.1282 +                TEST EXECUTION SECTION
  8.1283 +                =======================
  8.1284 +            -->
  8.1285 +    <target depends="init" if="have.tests" name="-pre-test-run">
  8.1286 +        <mkdir dir="${build.test.results.dir}"/>
  8.1287 +    </target>
  8.1288 +    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
  8.1289 +        <j2seproject3:test includes="${includes}" testincludes="**/*Test.java"/>
  8.1290 +    </target>
  8.1291 +    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
  8.1292 +        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
  8.1293 +    </target>
  8.1294 +    <target depends="init" if="have.tests" name="test-report"/>
  8.1295 +    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
  8.1296 +    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
  8.1297 +    <target depends="init" if="have.tests" name="-pre-test-run-single">
  8.1298 +        <mkdir dir="${build.test.results.dir}"/>
  8.1299 +    </target>
  8.1300 +    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
  8.1301 +        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
  8.1302 +        <j2seproject3:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/>
  8.1303 +    </target>
  8.1304 +    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
  8.1305 +        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
  8.1306 +    </target>
  8.1307 +    <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"/>
  8.1308 +    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
  8.1309 +        <fail unless="test.class">Must select some files in the IDE or set test.class</fail>
  8.1310 +        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
  8.1311 +        <j2seproject3:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/>
  8.1312 +    </target>
  8.1313 +    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
  8.1314 +        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
  8.1315 +    </target>
  8.1316 +    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
  8.1317 +    <!--
  8.1318 +                =======================
  8.1319 +                TEST DEBUGGING SECTION
  8.1320 +                =======================
  8.1321 +            -->
  8.1322 +    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test">
  8.1323 +        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
  8.1324 +        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/>
  8.1325 +    </target>
  8.1326 +    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method">
  8.1327 +        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
  8.1328 +        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
  8.1329 +        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/>
  8.1330 +    </target>
  8.1331 +    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
  8.1332 +        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
  8.1333 +    </target>
  8.1334 +    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
  8.1335 +    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
  8.1336 +    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
  8.1337 +        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
  8.1338 +    </target>
  8.1339 +    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
  8.1340 +    <!--
  8.1341 +                =========================
  8.1342 +                APPLET EXECUTION SECTION
  8.1343 +                =========================
  8.1344 +            -->
  8.1345 +    <target depends="init,compile-single" name="run-applet">
  8.1346 +        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
  8.1347 +        <j2seproject1:java classname="sun.applet.AppletViewer">
  8.1348 +            <customize>
  8.1349 +                <arg value="${applet.url}"/>
  8.1350 +            </customize>
  8.1351 +        </j2seproject1:java>
  8.1352 +    </target>
  8.1353 +    <!--
  8.1354 +                =========================
  8.1355 +                APPLET DEBUGGING  SECTION
  8.1356 +                =========================
  8.1357 +            -->
  8.1358 +    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
  8.1359 +        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
  8.1360 +        <j2seproject3:debug classname="sun.applet.AppletViewer">
  8.1361 +            <customize>
  8.1362 +                <arg value="${applet.url}"/>
  8.1363 +            </customize>
  8.1364 +        </j2seproject3:debug>
  8.1365 +    </target>
  8.1366 +    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
  8.1367 +    <!--
  8.1368 +                ===============
  8.1369 +                CLEANUP SECTION
  8.1370 +                ===============
  8.1371 +            -->
  8.1372 +    <target name="-deps-clean-init" unless="built-clean.properties">
  8.1373 +        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
  8.1374 +        <delete file="${built-clean.properties}" quiet="true"/>
  8.1375 +    </target>
  8.1376 +    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
  8.1377 +        <echo level="warn" message="Cycle detected: PalOOCa was already built"/>
  8.1378 +    </target>
  8.1379 +    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
  8.1380 +        <mkdir dir="${build.dir}"/>
  8.1381 +        <touch file="${built-clean.properties}" verbose="false"/>
  8.1382 +        <property file="${built-clean.properties}" prefix="already.built.clean."/>
  8.1383 +        <antcall target="-warn-already-built-clean"/>
  8.1384 +        <propertyfile file="${built-clean.properties}">
  8.1385 +            <entry key="${basedir}" value=""/>
  8.1386 +        </propertyfile>
  8.1387 +    </target>
  8.1388 +    <target depends="init" name="-do-clean">
  8.1389 +        <delete dir="${build.dir}"/>
  8.1390 +        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
  8.1391 +    </target>
  8.1392 +    <target name="-post-clean">
  8.1393 +        <!-- Empty placeholder for easier customization. -->
  8.1394 +        <!-- You can override this target in the ../build.xml file. -->
  8.1395 +    </target>
  8.1396 +    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
  8.1397 +    <target name="-check-call-dep">
  8.1398 +        <property file="${call.built.properties}" prefix="already.built."/>
  8.1399 +        <condition property="should.call.dep">
  8.1400 +            <and>
  8.1401 +                <not>
  8.1402 +                    <isset property="already.built.${call.subproject}"/>
  8.1403 +                </not>
  8.1404 +                <available file="${call.script}"/>
  8.1405 +            </and>
  8.1406 +        </condition>
  8.1407 +    </target>
  8.1408 +    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
  8.1409 +        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
  8.1410 +            <propertyset>
  8.1411 +                <propertyref prefix="transfer."/>
  8.1412 +                <mapper from="transfer.*" to="*" type="glob"/>
  8.1413 +            </propertyset>
  8.1414 +        </ant>
  8.1415 +    </target>
  8.1416 +</project>
     9.1 --- a/nbproject/private/private.properties	Fri Aug 08 13:19:03 2014 +0200
     9.2 +++ b/nbproject/private/private.properties	Tue Sep 30 14:57:50 2014 +0200
     9.3 @@ -1,4 +1,4 @@
     9.4 -compile.on.save=false
     9.5 +compile.on.save=true
     9.6  do.depend=false
     9.7  do.jar=true
     9.8  file.reference.dom4j-1.6.1.jar=/Users/chris/poospace/paloo/lib/dom4j-1.6.1.jar
    10.1 --- a/nbproject/private/private.xml	Fri Aug 08 13:19:03 2014 +0200
    10.2 +++ b/nbproject/private/private.xml	Tue Sep 30 14:57:50 2014 +0200
    10.3 @@ -1,4 +1,11 @@
    10.4  <?xml version="1.0" encoding="UTF-8"?>
    10.5  <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
    10.6      <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
    10.7 +    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
    10.8 +    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
    10.9 +        <group>
   10.10 +            <file>file:/Users/chris/poospace/paloo/build.xml</file>
   10.11 +            <file>file:/Users/chris/poospace/paloo/nbproject/build-uno-impl.xml</file>
   10.12 +        </group>
   10.13 +    </open-files>
   10.14  </project-private>
    11.1 --- a/nbproject/project.properties	Fri Aug 08 13:19:03 2014 +0200
    11.2 +++ b/nbproject/project.properties	Tue Sep 30 14:57:50 2014 +0200
    11.3 @@ -1,6 +1,10 @@
    11.4 +annotation.processing.enabled=true
    11.5 +annotation.processing.enabled.in.editor=false
    11.6 +annotation.processing.processors.list=
    11.7 +annotation.processing.run.all.processors=true
    11.8  application.args=
    11.9 -application.title=PaloOpenOffice
   11.10 -application.vendor=Tensegrtiy Software GmbH
   11.11 +application.title=OLAPOpenOffice
   11.12 +application.vendor=Proclos
   11.13  build.classes.dir=${build.dir}/classes
   11.14  build.classes.excludes=**/*.java,**/*.form,**/*.xcu,**/*.xcs,**/*.idl,**/*manifest.xml
   11.15  # This directory is removed when the project is cleaned:
   11.16 @@ -24,6 +28,7 @@
   11.17  file.reference.com.tensegrity.paloapi_2.0.0.0166.jar=../../Dokumente und Einstellungen/MichaelRaue/Desktop/Palo Client/plugins/com.tensegrity.paloapi_2.0.0.0166.jar
   11.18  file.reference.dom4j-1.6.1.jar=../PalOOCa/external_jars/dom4j-1.6.1.jar
   11.19  file.reference.h2-1.3.172.jar=lib/h2-1.3.172.jar
   11.20 +file.reference.jdom-2.0.5.jar=lib/jdom-2.0.5.jar
   11.21  file.reference.jpalo.jar=../../../workspace33/PaloJavaAPI_2.0.0.214/jpalo_2.0.0.0214/lib/jpalo.jar
   11.22  file.reference.jpaloapi_2.0.0.0228.jar=lib/jpaloapi_2.0.0.0228.jar
   11.23  file.reference.log4j-1.2.16.jar=lib/log4j-1.2.16.jar
   11.24 @@ -33,6 +38,7 @@
   11.25  file.reference.org-jdesktop-layout.jar=../../Dokumente und Einstellungen/MichaelRaue/Desktop/org-jdesktop-layout.jar
   11.26  file.reference.paloapi-src=../../workspace33/paloapi/src
   11.27  file.reference.palojlib-5.1.jar=lib/palojlib-5.1.jar
   11.28 +file.reference.palojlib-src=../../colibrispace/colibri/palojlib/src
   11.29  file.reference.PalOOCa_IDL_types.jar=dist/PalOOCa_IDL_types.jar
   11.30  file.reference.src-org=../../workspace33/paloapi/src/org
   11.31  file.reference.workspace33-paloapi=../../workspace33/paloapi
   11.32 @@ -47,17 +53,20 @@
   11.33      ${libs.swing-layout.classpath}:\
   11.34      ${libs.swing-app-framework.classpath}:\
   11.35      ${libs.absolutelayout.classpath}:\
   11.36 -    ${libs.OpenOffice.org 3.4.1.classpath}:\
   11.37      ${file.reference.log4j-1.2.16.jar}:\
   11.38      ${file.reference.xercesImpl.jar}:\
   11.39      ${file.reference.h2-1.3.172.jar}:\
   11.40      ${file.reference.olap4j-1.2.0-SNAPSHOT.jar}:\
   11.41      ${file.reference.olap4j-xmla-1.2.0-SNAPSHOT.jar}:\
   11.42      ${file.reference.PalOOCa_IDL_types.jar}:\
   11.43 -    ${file.reference.palojlib-5.1.jar}
   11.44 +    ${file.reference.palojlib-5.1.jar}:\
   11.45 +    ${file.reference.jdom-2.0.5.jar}:\
   11.46 +    ${libs.OpenOffice.org 3.4.1.classpath}
   11.47  # Space-separated list of extra javac options
   11.48  javac.compilerargs=
   11.49  javac.deprecation=false
   11.50 +javac.processorpath=\
   11.51 +    ${javac.classpath}
   11.52  javac.source=1.6
   11.53  javac.target=1.6
   11.54  javac.test.classpath=\
   11.55 @@ -85,6 +94,7 @@
   11.56  # Property libs.JPalo.classpath is set here just to make sharing of project simpler.
   11.57  # The library definition has always preference over this property.
   11.58  meta.inf.dir=${src.dir}/META-INF
   11.59 +mkdist.disabled=false
   11.60  platform.active=default_platform
   11.61  run.classpath=\
   11.62      ${javac.classpath}:\
   11.63 @@ -97,5 +107,6 @@
   11.64      ${javac.test.classpath}:\
   11.65      ${build.test.classes.dir}
   11.66  source.reference.olap4j-xmla-1.2.0-SNAPSHOT.jar=/Users/chris/workspace/olap4j/src
   11.67 +source.reference.palojlib-5.1.jar=/Users/chris/colibrispace/colibri/palojlib/src/main/java/
   11.68  src.dir=src
   11.69  test.src.dir=test
    12.1 --- a/src/description.xml	Fri Aug 08 13:19:03 2014 +0200
    12.2 +++ b/src/description.xml	Tue Sep 30 14:57:50 2014 +0200
    12.3 @@ -1,6 +1,6 @@
    12.4  <?xml version="1.0" encoding="UTF-8"?>
    12.5  <description xmlns="http://openoffice.org/extensions/description/2006" xmlns:dep="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
    12.6 -    <version value="5.1.0"/>
    12.7 +    <version value="5.2.0"/>
    12.8      <identifier value="PaloForOpenOffice"/>
    12.9      <!--dependencies>
   12.10          <OpenOffice.org-minimal-version value=3.0" dep:name="You need at least OpenOffice.org version 3.0"/>
   12.11 @@ -12,11 +12,12 @@
   12.12          <name lang="en" xlink:href="http://www.proclos.com">Proclos</name>
   12.13      </publisher>
   12.14      <extension-description>
   12.15 +        <src lang="de" xlink:href="description/packagedescription.txt"/>
   12.16          <src lang="en" xlink:href="description/packagedescription.txt"/>
   12.17 -        <src lang="de" xlink:href="description/packagedescription.txt"/>
   12.18      </extension-description>
   12.19      <update-information>
   12.20          <src xlink:href="http://ursula.proclos.com/paloo/palooca.update.xml"/>
   12.21      </update-information>
   12.22  </description>
   12.23 -<!--Created with OpenOffice.org API plug-in for NetBeans Version 2.0.6.000205-->
   12.24 +<!--Created with OpenOffice.org API plug-in for NetBeans Version 2.0.6-->
   12.25 +<!--Created with Apache OpenOffice API plug-in for NetBeans Version 2.0.6.000205-->
    13.1 --- a/src/org/palooca/DataValueHandler.java	Fri Aug 08 13:19:03 2014 +0200
    13.2 +++ b/src/org/palooca/DataValueHandler.java	Tue Sep 30 14:57:50 2014 +0200
    13.3 @@ -70,11 +70,17 @@
    13.4              // Now do a second pass to read results from the batch
    13.5              DataValueHandler.beginReadFromBatchResults();
    13.6              cellRangeFormula.setFormulaArray(formula);
    13.7 +            /* done in view now
    13.8              manager.recalculateDocument(true);
    13.9              DataValueHandler.endReadFromBatchResults();
   13.10              cellLookup.remove(cubeName);
   13.11 +             * */
   13.12          }
   13.13 +    }
   13.14  
   13.15 +    public static void endBatchUpdate(XComponentContext context,String cubeName) {
   13.16 +         DataValueHandler.endReadFromBatchResults();
   13.17 +         cellLookup.remove(cubeName);
   13.18      }
   13.19  
   13.20      public static String getServerCubeCombo(String servdb, String cubeName) {
   13.21 @@ -104,16 +110,16 @@
   13.22                  if ( database == null )
   13.23                      return null;
   13.24  
   13.25 +                database.setCacheTrustExpiries(60,60,60);
   13.26                  ICube cube = database.getCubeByName(cubeName);
   13.27                  if ( cube == null )
   13.28                      return null;
   13.29  
   13.30 -                String[] coordStrings = PalOOCaImpl.processCoordinates(coordinates);
   13.31 -                IElement[] elementCoords = new IElement[coordStrings.length];
   13.32 +                IElement[] elementCoords = new IElement[coordinates.length];
   13.33                  IDimension[] dimensions = cube.getDimensions();
   13.34  
   13.35 -                for (int i = 0; i < coordStrings.length; i++) {
   13.36 -                    elementCoords[i] = dimensions[i].getElementByName(coordStrings[i],false);
   13.37 +                for (int i = 0; i < coordinates.length; i++) {
   13.38 +                    elementCoords[i] = dimensions[i].getElementByName(coordinates[i].toString(),false);
   13.39                      if (elementCoords[i] == null)
   13.40                          return null;
   13.41                  }
    14.1 --- a/src/org/palooca/PalOOCaManager.java	Fri Aug 08 13:19:03 2014 +0200
    14.2 +++ b/src/org/palooca/PalOOCaManager.java	Tue Sep 30 14:57:50 2014 +0200
    14.3 @@ -63,6 +63,7 @@
    14.4  import com.sun.star.lang.XMultiComponentFactory;
    14.5  import com.sun.star.lang.XMultiServiceFactory;
    14.6  import com.sun.star.lang.XTypeProvider;
    14.7 +import com.sun.star.sheet.ActivationEvent;
    14.8  import com.sun.star.sheet.XCalculatable;
    14.9  import com.sun.star.sheet.XCellRangeAddressable;
   14.10  import com.sun.star.sheet.XFunctionAccess;
   14.11 @@ -100,8 +101,8 @@
   14.12  import javax.swing.UIManager;
   14.13  import javax.swing.UnsupportedLookAndFeelException;
   14.14  import com.jedox.palojlib.interfaces.*;
   14.15 -import com.sun.star.awt.XWindow;
   14.16  import com.sun.star.container.XIndexAccess;
   14.17 +import com.sun.star.sheet.XActivationBroadcaster;
   14.18  import java.awt.Toolkit;
   14.19  import java.util.Collections;
   14.20  import java.util.HashMap;
   14.21 @@ -129,6 +130,7 @@
   14.22   */
   14.23  public class PalOOCaManager
   14.24          implements com.sun.star.document.XEventListener,
   14.25 +        com.sun.star.sheet.XActivationEventListener,
   14.26          com.sun.star.awt.XMouseClickHandler,
   14.27          com.sun.star.view.XSelectionChangeListener,
   14.28          com.sun.star.util.XModifyListener,
   14.29 @@ -195,7 +197,7 @@
   14.30              XSpreadsheets sheets = activeDocument.getSheets();
   14.31              XSpreadsheet sheet = getActiveSpreadSheet();
   14.32             
   14.33 -            PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet());
   14.34 +            PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet(),true);
   14.35              boolean fullUpdate = false;
   14.36              for (int i = 0; i < view.getFilterDimensions().size(); i++) {
   14.37                  if (view.getFilterDimensions().get(i).getDimension() == browser.getDimension()) {
   14.38 @@ -232,7 +234,7 @@
   14.39                      return false;
   14.40                  if (getData(activeCell, "IsPaloView", "").equals("True")) {
   14.41                      long time = System.currentTimeMillis();
   14.42 -                    PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet());
   14.43 +                    PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet(),true);
   14.44                      if (view != null) {
   14.45                          ViewDialog viewDialog = new ViewDialog(null, false, context, view);
   14.46                          showModal(viewDialog);
   14.47 @@ -252,7 +254,7 @@
   14.48                                      switch (type.intValue()) {
   14.49                                          case 0:                 // show element selection dialog
   14.50                                              if (isShowElementOnDblClk()) {
   14.51 -                                                PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet());
   14.52 +                                                PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet(),true);
   14.53                                                  if (view != null) {
   14.54                                                      String elementPath = arguments.get(4).calculate(functionAccess, sheets, sheet).toString();
   14.55                                                      if (showElementSelection(view, elementPath)) {
   14.56 @@ -283,7 +285,7 @@
   14.57                                          case 3:
   14.58                                              if (arguments.size() < 5)
   14.59                                                  break;
   14.60 -                                            PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet());
   14.61 +                                            PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet(),true);
   14.62                                              if (view != null) {
   14.63                                                  if (isShowElementOnDblClk()) {
   14.64                                                      String elementPath = arguments.get(4).calculate(functionAccess, sheets, sheet).toString();
   14.65 @@ -744,13 +746,14 @@
   14.66  
   14.67      // <editor-fold defaultstate="collapsed" desc="Listeners">
   14.68      // <editor-fold defaultstate="collapsed" desc="com.sun.star.document.XEventListener">
   14.69 +    @Override
   14.70      public void notifyEvent(com.sun.star.document.EventObject e) {
   14.71          if (e.EventName.equals("OnFocus") || e.EventName.equals("OnNew") || e.EventName.equals("OnLoad") || e.EventName.equals("OnViewCreated")) {
   14.72              XSpreadsheetDocument doc = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, e.Source);
   14.73              if (doc != null) {
   14.74                  setActiveDocument(doc);
   14.75                  if (e.EventName.equals("OnLoad")) {
   14.76 -                    PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet());
   14.77 +                    PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet(),false);
   14.78                      if (view != null) {
   14.79                          view.generate(getActiveSpreadSheet());
   14.80                      }
   14.81 @@ -767,12 +770,19 @@
   14.82           */
   14.83      }
   14.84  
   14.85 +     @Override
   14.86 +    public void activeSpreadsheetChanged(ActivationEvent e) {
   14.87 +       lastActiveSheet = e.ActiveSheet;
   14.88 +    }
   14.89 +
   14.90 +    @Override
   14.91      public void disposing(EventObject e) {
   14.92          setActiveDocument(null);
   14.93      }
   14.94      // </editor-fold>
   14.95      
   14.96      // <editor-fold defaultstate="collapsed" desc="com.sun.star.awt.XMouseClickHandler">
   14.97 +    @Override
   14.98      public boolean mousePressed(MouseEvent e) {
   14.99          RunnableModal modal = new RunnableModal(e);
  14.100          OSUtil.invokeRunnable(modal);
  14.101 @@ -925,7 +935,7 @@
  14.102              }
  14.103               cell.setFormula(oldContent);
  14.104              if (success) {
  14.105 -                 PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet());
  14.106 +                 PalOOCaView view = PalOOCaView.parseSpreadsheet(context, getActiveSpreadSheet(),false);
  14.107                   if (view != null) {
  14.108                         view.generate(getActiveSpreadSheet(), false, false);
  14.109                   } else {
  14.110 @@ -956,7 +966,7 @@
  14.111              if (broadcaster != null) {
  14.112                  broadcaster.addEventListener(this);
  14.113              }
  14.114 -
  14.115 +           
  14.116              
  14.117              //add window listener
  14.118              /*
  14.119 @@ -997,10 +1007,12 @@
  14.120      }
  14.121  
  14.122      public XSpreadsheet getActiveSpreadSheet() {
  14.123 +        
  14.124          if (spreadsheetView != null && spreadsheetView.getActiveSheet() != null) {
  14.125              lastActiveSheet = spreadsheetView.getActiveSheet();
  14.126              return lastActiveSheet;
  14.127          }
  14.128 +        /*
  14.129          if (spreadsheetView != null && spreadsheetView.getActiveSheet() == null && lastActiveSheet != null) {
  14.130              XIndexAccess xSheetIndexAccess = (XIndexAccess)UnoRuntime.queryInterface(XIndexAccess.class, getActiveDocument().getSheets());
  14.131              try {
  14.132 @@ -1012,6 +1024,10 @@
  14.133              return lastActiveSheet;
  14.134          }
  14.135          return null;
  14.136 +         *
  14.137 +         */
  14.138 +        //set by listener activeSpreadsheetChanged
  14.139 +        return lastActiveSheet;
  14.140      }
  14.141      
  14.142      /**
  14.143 @@ -1021,7 +1037,7 @@
  14.144       * @param document The new active spreadsheet document.
  14.145       */
  14.146      public void setActiveDocument(XSpreadsheetDocument document) {
  14.147 -        //if (activeDocument != document) {
  14.148 +            /*
  14.149              if (selectionSupplier != null) {
  14.150                  selectionSupplier.removeSelectionChangeListener(this);
  14.151                  XUserInputInterception inputInterception = (XUserInputInterception) UnoRuntime.queryInterface(XUserInputInterception.class, selectionSupplier);
  14.152 @@ -1030,6 +1046,8 @@
  14.153                  spreadsheetView = null;
  14.154                  selectionSupplier = null;
  14.155              }
  14.156 +             *
  14.157 +             */
  14.158              
  14.159              if (document != null) {
  14.160                  XModel model = (XModel) UnoRuntime.queryInterface(XModel.class, document);
  14.161 @@ -1038,15 +1056,21 @@
  14.162                      spreadsheetView = (XSpreadsheetView) UnoRuntime.queryInterface(XSpreadsheetView.class, selectionSupplier);
  14.163                      selectionSupplier.addSelectionChangeListener(this);
  14.164                      XUserInputInterception inputInterception = (XUserInputInterception) UnoRuntime.queryInterface(XUserInputInterception.class, selectionSupplier);
  14.165 +                    inputInterception.removeMouseClickHandler(this);
  14.166                      inputInterception.addMouseClickHandler(this);
  14.167                      setActiveCell((XCell) UnoRuntime.queryInterface(XCell.class, selectionSupplier.getSelection()));
  14.168 -                } else {
  14.169 -                    document = null;
  14.170 +                    XComponent xComponent = getCurrentComponent();
  14.171 +                    XModel xModel = (XModel) UnoRuntime.queryInterface(XModel.class, xComponent);
  14.172 +                    XController xController = xModel.getCurrentController();
  14.173 +                    XSpreadsheetView view = (XSpreadsheetView)UnoRuntime.queryInterface(XSpreadsheetView.class, xController );
  14.174 +                    XActivationBroadcaster activationBroadcaster = (XActivationBroadcaster) UnoRuntime.queryInterface(XActivationBroadcaster.class, view);
  14.175 +                    if (activationBroadcaster != null) {
  14.176 +                        activationBroadcaster.removeActivationEventListener(this);
  14.177 +                        activationBroadcaster.addActivationEventListener(this);
  14.178 +                    }
  14.179                  }
  14.180 +                activeDocument = document;
  14.181              }
  14.182 -            
  14.183 -            activeDocument = document;
  14.184 -        //}
  14.185      }
  14.186      
  14.187      private XCell activeCell = null;
    15.1 --- a/src/org/palooca/PalOOCaView.java	Fri Aug 08 13:19:03 2014 +0200
    15.2 +++ b/src/org/palooca/PalOOCaView.java	Tue Sep 30 14:57:50 2014 +0200
    15.3 @@ -499,6 +499,18 @@
    15.4      
    15.5      public void generate(XSpreadsheet sheet, boolean updateColumns, boolean updateRows) {
    15.6        try {
    15.7 +           // Lock
    15.8 +        XActionLockable actionLockable = (XActionLockable) UnoRuntime.queryInterface(XActionLockable.class, manager.getActiveDocument());
    15.9 +        actionLockable.addActionLock();
   15.10 +        XModel xSpreadsheetModel = (XModel)UnoRuntime.queryInterface(XModel.class, manager.getActiveDocument());
   15.11 +        xSpreadsheetModel.lockControllers();
   15.12 +        XCalculatable calc = (XCalculatable) UnoRuntime.queryInterface(XCalculatable.class,manager.getCurrentComponent());
   15.13 +        boolean autocalc = false;
   15.14 +        if (calc != null) {
   15.15 +            autocalc = calc.isAutomaticCalculationEnabled();
   15.16 +            calc.enableAutomaticCalculation(false);
   15.17 +        }
   15.18 +       
   15.19          XCellRange targetRange;
   15.20          XCellRangeFormula cellRangeFormula;
   15.21          String[][] formula;
   15.22 @@ -517,12 +529,7 @@
   15.23          updateRows = updateRows || manager.isHideEmptyData();
   15.24          updateColumns = updateColumns || manager.isHideEmptyData();
   15.25  
   15.26 -        // Lock
   15.27 -        XActionLockable actionLockable = (XActionLockable) UnoRuntime.queryInterface(XActionLockable.class, manager.getActiveDocument());
   15.28 -        actionLockable.addActionLock();
   15.29 -        XModel xSpreadsheetModel = (XModel)UnoRuntime.queryInterface(XModel.class, manager.getActiveDocument());
   15.30 -        xSpreadsheetModel.lockControllers();
   15.31 -
   15.32 +       
   15.33          manager.clearDimensionCache(); //Clear database dimension mapping
   15.34  
   15.35          int top = 2 + filterDimensions.size() + 1;
   15.36 @@ -767,6 +774,7 @@
   15.37              }
   15.38          }
   15.39  
   15.40 +        
   15.41          // Update cells while using a one batch call to fetch data values
   15.42          if (queryThread != null && dataQuery != null) {
   15.43              queryThread.join();
   15.44 @@ -782,21 +790,22 @@
   15.45                  dim.restoreElements();
   15.46              }
   15.47          }
   15.48 -
   15.49 +        
   15.50 +        if (calc != null) {
   15.51 +            calc.enableAutomaticCalculation(autocalc);
   15.52 +            if (!autocalc) {
   15.53 +                calc.calculate();
   15.54 +            }
   15.55 +        }
   15.56 +        DataValueHandler.endBatchUpdate(context,servDB+";"+cube.getName());
   15.57          System.err.println("Generate post DataValueHandler in "+(System.currentTimeMillis()-time)+"ms");
   15.58 -
   15.59          postprocessUpdateStyles(targetRange, top, rowSpan, colSpan);
   15.60 -        
   15.61 -
   15.62 -        //Remove lock and turn off autocalc
   15.63          System.err.println("Generate finished in "+(System.currentTimeMillis()-time)+"ms");
   15.64 -        XCalculatable calc = (XCalculatable) UnoRuntime.queryInterface(XCalculatable.class,manager.getCurrentComponent());
   15.65 -        if (calc != null) calc.enableAutomaticCalculation(false);
   15.66          actionLockable.removeActionLock();
   15.67          xSpreadsheetModel.unlockControllers();
   15.68        }
   15.69        catch (Exception e) {
   15.70 -           RunnableWarning modal = new RunnableWarning(e.getMessage(),"Worksheet error");
   15.71 +           RunnableWarning modal = new RunnableWarning("Error building worksheet view: "+e.getMessage(),"Worksheet error");
   15.72             Thread thread = new Thread(modal);
   15.73             thread.start();
   15.74             Logger.getLogger(PalOOCaView.class.getName()).log(Level.SEVERE, null, e);
   15.75 @@ -918,12 +927,12 @@
   15.76          if (hideEmptyCells) { //only keep non zero elements
   15.77              for (int k = 0; k < rowDimensions.size(); k++) {
   15.78                  Set<String> elementKeep = keep.get(rowDimensions.get(k).getDimension());
   15.79 -                rowDimensions.get(k).updateElements(elementKeep);
   15.80 +                rowDimensions.get(k).updateElements(elementKeep, true, false);
   15.81              }
   15.82  
   15.83              for (int k = 0; k < columnDimensions.size(); k++) {
   15.84                  Set<String> elementKeep = keep.get(columnDimensions.get(k).getDimension());
   15.85 -                columnDimensions.get(k).updateElements(elementKeep);
   15.86 +                columnDimensions.get(k).updateElements(elementKeep, true, false);
   15.87              }
   15.88          }
   15.89          if (cells.isEmpty() && hideEmptyCells) {
   15.90 @@ -977,6 +986,13 @@
   15.91                  cellStyle.setPropertyValue("NumberFormat", new Integer(manager.getNumberFormat(2)));
   15.92                  cellStyle.setPropertyValue("CharColor", new Integer(0x000000));
   15.93              }
   15.94 +            if (!cellStyles.hasByName("PaloDataOdd")) {
   15.95 +                cellStyle = manager.createCellStyle(cellStyles, "PaloDataOdd");
   15.96 +                cellStyle.setPropertyValue("IsCellBackgroundTransparent", Boolean.FALSE);
   15.97 +                cellStyle.setPropertyValue("CellBackColor", new Integer(0xF9F9F4));
   15.98 +                cellStyle.setPropertyValue("NumberFormat", new Integer(manager.getNumberFormat(2)));
   15.99 +                cellStyle.setPropertyValue("CharColor", new Integer(0x000000));
  15.100 +            }
  15.101              if (!cellStyles.hasByName("PaloHidden")) {
  15.102                  cellStyle = manager.createCellStyle(cellStyles, "PaloHidden");
  15.103                  cellStyle.setPropertyValue("NumberFormat", new Integer(manager.getNumberFormat(";;;")));
  15.104 @@ -1001,6 +1017,16 @@
  15.105              manager.setCellStyle(targetRange, "PaloData");
  15.106          }
  15.107  
  15.108 +        try {
  15.109 +            for (int i=1; i < rowSpan-top; i+=2) {
  15.110 +                XCellRange oddRange = manager.getRange(rowDimensions.size(), top+i+1, colSpan, top+i+1);
  15.111 +                manager.setCellStyle(oddRange, "PaloDataOdd");
  15.112 +            }
  15.113 +        }
  15.114 +        catch (Exception e) {
  15.115 +            e.printStackTrace();
  15.116 +        }
  15.117 +
  15.118  
  15.119          if (columnDimensions.size() > 0 && rowDimensions.size() > 0) {
  15.120              targetRange = manager.getRange(0, top, rowDimensions.size() - 1, top + columnDimensions.size() - 1);
  15.121 @@ -1244,11 +1270,11 @@
  15.122              manager.setShowElementOnDblClk(false);
  15.123              manager.setFunctionType(0);
  15.124  
  15.125 -            DimensionSubsetListItem     dimItem = new DimensionSubsetListItem(dims[0], true, false);
  15.126 +            DimensionSubsetListItem     dimItem = new DimensionSubsetListItem(connInfo,db,dims[0], true, false);
  15.127  
  15.128              columnDimensions.add(dimItem);
  15.129  
  15.130 -            dimItem = new DimensionSubsetListItem(dims[1], true, false);
  15.131 +            dimItem = new DimensionSubsetListItem(connInfo,db,dims[1], true, false);
  15.132  
  15.133              rowDimensions.add(dimItem);
  15.134  
  15.135 @@ -1278,10 +1304,20 @@
  15.136          return result;
  15.137      }
  15.138  
  15.139 -    public static PalOOCaView parseSpreadsheet(XComponentContext context, XSpreadsheet sheet) {
  15.140 +    public static PalOOCaView throwViewParseError(String message, String type, boolean showErrors) {
  15.141 +         if (showErrors) {
  15.142 +            RunnableWarning modalWarning = new RunnableWarning(message,type);
  15.143 +            Thread thread = new Thread(modalWarning);
  15.144 +            thread.start();
  15.145 +         }
  15.146 +         return null;
  15.147 +    }
  15.148 +
  15.149 +    public static PalOOCaView parseSpreadsheet(XComponentContext context, XSpreadsheet sheet, boolean showErrors) {
  15.150          PalOOCaView view = new PalOOCaView(context);
  15.151          PalOOCaManager manager = PalOOCaManager.getInstance(context);
  15.152          ConnectionHandler connectionHandler = manager.getConnectionHandler();
  15.153 +        String errorType = connectionHandler.getResourceBundle().getString("Connection_Failed_Caption");
  15.154          long time = System.currentTimeMillis();
  15.155  
  15.156          String val = getNamedRangeValue(manager, "_palopasteviewident");
  15.157 @@ -1311,13 +1347,15 @@
  15.158              String[][] formulaData = rangeFormula.getFormulaArray();
  15.159  
  15.160              IDatabase database = connectionHandler.getDatabase(formulaData[0][0]);
  15.161 -            if (database == null)
  15.162 -                return null;
  15.163 +            if (database == null) {
  15.164 +                return throwViewParseError("Could not connect to "+formulaData[0][0], errorType, showErrors);
  15.165 +            }
  15.166              view.setServDB(formulaData[0][0]);
  15.167  
  15.168              ICube cube = database.getCubeByName(formulaData[1][0]);
  15.169 -            if (cube == null)
  15.170 -                return null;
  15.171 +            if (cube == null) {
  15.172 +                return throwViewParseError("Could not connect to cube "+formulaData[1][0], errorType, showErrors);
  15.173 +            }
  15.174              view.setCube(cube);
  15.175  
  15.176              Token formula;
  15.177 @@ -1355,7 +1393,7 @@
  15.178                                      if (dimension != null) {
  15.179                                          String[] stringArray;
  15.180                                          element = dimension.getElementByName(function.get(2).get(0).getContent(),false);
  15.181 -                                        DimensionSubsetListItem dimItem = new DimensionSubsetListItem(dimension, false, false);
  15.182 +                                        DimensionSubsetListItem dimItem = new DimensionSubsetListItem(connectionHandler.getLastConnectionInfo(),database,dimension, false, false);
  15.183                                          if (element != null) {
  15.184                                              if (function.size() > 4) {
  15.185                                                  path = function.get(4).get(0).getContent();
  15.186 @@ -1399,8 +1437,9 @@
  15.187                              }
  15.188                          }
  15.189  
  15.190 -                        if (dimension == null)
  15.191 -                            return null;
  15.192 +                        if (dimension == null) {
  15.193 +                            return throwViewParseError("Unknown dimension in use.", errorType, showErrors);
  15.194 +                        }
  15.195                          if (element == null)
  15.196                              continue;
  15.197                      }
  15.198 @@ -1441,12 +1480,13 @@
  15.199                                  dimension = dimensionLookUp.get(function.get(1).get(0).getContent());
  15.200                                  if (lastDimension == null) {
  15.201                                      if (dimItem == null)
  15.202 -                                        dimItem = new DimensionSubsetListItem(dimension, false, false);
  15.203 +                                        dimItem = new DimensionSubsetListItem(connectionHandler.getLastConnectionInfo(),database,dimension, false, false);
  15.204                                      lastDimension = dimension;
  15.205                                  }
  15.206  
  15.207 -                                if (dimension == null || dimension != lastDimension)
  15.208 -                                    return null;
  15.209 +                                if (dimension == null || dimension != lastDimension) {
  15.210 +                                     return throwViewParseError("Unknown dimension in use.", errorType, showErrors);
  15.211 +                                }
  15.212  
  15.213                                  element = dimension.getElementByName(function.get(2).get(0).getContent(),false);
  15.214                                  if (element == null)
  15.215 @@ -1455,10 +1495,10 @@
  15.216                                  dimItem.selectedElementObjects.add(element);
  15.217                                  String elementPath = function.get(4).get(0).getContent();
  15.218                                  if (element == null)
  15.219 -                                    return null;
  15.220 +                                    return throwViewParseError("Element not found.", errorType, showErrors);
  15.221                                  String[] stringPath = stringPathToStringArray(elementPath);
  15.222                                  if (stringPath == null)
  15.223 -                                    return null;
  15.224 +                                    return throwViewParseError("Illegal path.", errorType, showErrors);
  15.225                                  dimItem.selectedElements.add(stringPath);
  15.226  
  15.227                                  if (j > 0 && j < maxLength)
  15.228 @@ -1478,11 +1518,11 @@
  15.229                          }
  15.230                      }
  15.231                      if (j == 0 && !found)
  15.232 -                        return null;
  15.233 +                        return throwViewParseError("View parse error.", errorType, showErrors);
  15.234                  }
  15.235  
  15.236                  if (!found)
  15.237 -                    return null;
  15.238 +                    return throwViewParseError("View parse error.", errorType, showErrors);
  15.239  
  15.240                  columnDimensions.add(dimItem);
  15.241              }
  15.242 @@ -1521,7 +1561,7 @@
  15.243                                  dimension = dimensionLookUp.get(function.get(1).get(0).getContent());
  15.244                                  if (lastDimension == null) {
  15.245                                      if (dimItem == null)
  15.246 -                                        dimItem = new DimensionSubsetListItem(dimension, false, false);
  15.247 +                                        dimItem = new DimensionSubsetListItem(connectionHandler.getLastConnectionInfo(),database,dimension, false, false);
  15.248                                      lastDimension = dimension;
  15.249                                  }
  15.250  
  15.251 @@ -1599,7 +1639,7 @@
  15.252              // </editor-fold>
  15.253          } catch (Exception ex) {
  15.254              ex.printStackTrace();
  15.255 -            return null;
  15.256 +            return throwViewParseError("View parse error.: "+ex.getMessage(), errorType, showErrors);
  15.257          }
  15.258  
  15.259          return view;
    16.1 --- a/src/org/palooca/dialogs/ConsolidationFactorDialog.form	Fri Aug 08 13:19:03 2014 +0200
    16.2 +++ b/src/org/palooca/dialogs/ConsolidationFactorDialog.form	Tue Sep 30 14:57:50 2014 +0200
    16.3 @@ -23,91 +23,139 @@
    16.4      <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
    16.5      <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
    16.6      <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
    16.7 -    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,81,0,0,1,64"/>
    16.8 +    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,110,0,0,1,83"/>
    16.9    </AuxValues>
   16.10  
   16.11    <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
   16.12      <Property name="useNullLayout" type="boolean" value="false"/>
   16.13    </Layout>
   16.14    <SubComponents>
   16.15 -    <Component class="javax.swing.JLabel" name="jLabel1">
   16.16 +    <Container class="javax.swing.JPanel" name="jPanel2">
   16.17        <Properties>
   16.18 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   16.19 -          <ResourceString bundle="org/palooca/dialogs/PalOOCaDialogs.properties" key="ConsolidationFactor" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
   16.20 -        </Property>
   16.21 -        <Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
   16.22 +        <Property name="name" type="java.lang.String" value="jPanel2" noResource="true"/>
   16.23        </Properties>
   16.24        <Constraints>
   16.25          <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
   16.26 -          <AbsoluteConstraints x="10" y="30" width="-1" height="-1"/>
   16.27 -        </Constraint>
   16.28 -      </Constraints>
   16.29 -    </Component>
   16.30 -    <Component class="javax.swing.JTextField" name="edtFactor">
   16.31 -      <Properties>
   16.32 -        <Property name="text" type="java.lang.String" resourceKey="edtFactor.text"/>
   16.33 -        <Property name="name" type="java.lang.String" value="edtFactor" noResource="true"/>
   16.34 -      </Properties>
   16.35 -      <Constraints>
   16.36 -        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
   16.37 -          <AbsoluteConstraints x="120" y="26" width="70" height="-1"/>
   16.38 -        </Constraint>
   16.39 -      </Constraints>
   16.40 -    </Component>
   16.41 -    <Component class="javax.swing.JButton" name="btnOK">
   16.42 -      <Properties>
   16.43 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   16.44 -          <ResourceString bundle="org/palooca/dialogs/PalOOCaDialogs.properties" key="OK" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
   16.45 -        </Property>
   16.46 -        <Property name="name" type="java.lang.String" value="btnOK" noResource="true"/>
   16.47 -      </Properties>
   16.48 -      <Events>
   16.49 -        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnOKActionPerformed"/>
   16.50 -      </Events>
   16.51 -      <Constraints>
   16.52 -        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
   16.53 -          <AbsoluteConstraints x="220" y="10" width="90" height="-1"/>
   16.54 -        </Constraint>
   16.55 -      </Constraints>
   16.56 -    </Component>
   16.57 -    <Component class="javax.swing.JButton" name="btnCancel">
   16.58 -      <Properties>
   16.59 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   16.60 -          <ResourceString bundle="org/palooca/dialogs/PalOOCaDialogs.properties" key="Cancel" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
   16.61 -        </Property>
   16.62 -        <Property name="name" type="java.lang.String" value="btnCancel" noResource="true"/>
   16.63 -      </Properties>
   16.64 -      <Events>
   16.65 -        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCancelActionPerformed"/>
   16.66 -      </Events>
   16.67 -      <Constraints>
   16.68 -        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
   16.69 -          <AbsoluteConstraints x="220" y="40" width="90" height="-1"/>
   16.70 -        </Constraint>
   16.71 -      </Constraints>
   16.72 -    </Component>
   16.73 -    <Container class="javax.swing.JPanel" name="jPanel1">
   16.74 -      <Properties>
   16.75 -        <Property name="name" type="java.lang.String" value="jPanel1" noResource="true"/>
   16.76 -      </Properties>
   16.77 -      <Constraints>
   16.78 -        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
   16.79 -          <AbsoluteConstraints x="290" y="50" width="20" height="20"/>
   16.80 +          <AbsoluteConstraints x="10" y="0" width="320" height="110"/>
   16.81          </Constraint>
   16.82        </Constraints>
   16.83  
   16.84        <Layout>
   16.85          <DimensionLayout dim="0">
   16.86            <Group type="103" groupAlignment="0" attributes="0">
   16.87 -              <EmptySpace min="0" pref="20" max="32767" attributes="0"/>
   16.88 +              <EmptySpace min="0" pref="320" max="32767" attributes="0"/>
   16.89 +              <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
   16.90 +                  <Group type="102" attributes="0">
   16.91 +                      <EmptySpace min="0" pref="10" max="32767" attributes="0"/>
   16.92 +                      <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
   16.93 +                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
   16.94 +                      <Component id="edtFactor" min="-2" pref="119" max="-2" attributes="0"/>
   16.95 +                      <EmptySpace min="-2" pref="30" max="-2" attributes="0"/>
   16.96 +                      <Group type="103" groupAlignment="0" attributes="0">
   16.97 +                          <Component id="btnOK" min="-2" pref="90" max="-2" attributes="0"/>
   16.98 +                          <Component id="btnCancel" min="-2" pref="90" max="-2" attributes="0"/>
   16.99 +                          <Group type="102" attributes="0">
  16.100 +                              <EmptySpace min="70" pref="70" max="70" attributes="0"/>
  16.101 +                              <Component id="jPanel1" min="-2" max="-2" attributes="0"/>
  16.102 +                          </Group>
  16.103 +                      </Group>
  16.104 +                      <EmptySpace min="0" pref="10" max="32767" attributes="0"/>
  16.105 +                  </Group>
  16.106 +              </Group>
  16.107            </Group>
  16.108          </DimensionLayout>
  16.109          <DimensionLayout dim="1">
  16.110            <Group type="103" groupAlignment="0" attributes="0">
  16.111 -              <EmptySpace min="0" pref="20" max="32767" attributes="0"/>
  16.112 +              <EmptySpace min="0" pref="110" max="32767" attributes="0"/>
  16.113 +              <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
  16.114 +                  <Group type="102" attributes="0">
  16.115 +                      <Group type="103" groupAlignment="0" attributes="0">
  16.116 +                          <Group type="102" attributes="0">
  16.117 +                              <EmptySpace min="0" pref="25" max="32767" attributes="0"/>
  16.118 +                              <Group type="103" groupAlignment="0" attributes="0">
  16.119 +                                  <Group type="102" attributes="0">
  16.120 +                                      <EmptySpace min="20" pref="20" max="20" attributes="0"/>
  16.121 +                                      <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
  16.122 +                                  </Group>
  16.123 +                                  <Group type="102" attributes="0">
  16.124 +                                      <Component id="btnOK" min="-2" max="-2" attributes="0"/>
  16.125 +                                      <EmptySpace min="1" pref="1" max="1" attributes="0"/>
  16.126 +                                      <Group type="103" groupAlignment="0" attributes="0">
  16.127 +                                          <Component id="btnCancel" min="-2" max="-2" attributes="0"/>
  16.128 +                                          <Group type="102" attributes="0">
  16.129 +                                              <EmptySpace min="10" pref="10" max="10" attributes="0"/>
  16.130 +                                              <Component id="jPanel1" min="-2" max="-2" attributes="0"/>
  16.131 +                                          </Group>
  16.132 +                                      </Group>
  16.133 +                                  </Group>
  16.134 +                              </Group>
  16.135 +                          </Group>
  16.136 +                          <Group type="102" alignment="0" attributes="0">
  16.137 +                              <EmptySpace min="-2" pref="41" max="-2" attributes="0"/>
  16.138 +                              <Component id="edtFactor" min="-2" max="-2" attributes="0"/>
  16.139 +                          </Group>
  16.140 +                      </Group>
  16.141 +                      <EmptySpace pref="25" max="32767" attributes="0"/>
  16.142 +                  </Group>
  16.143 +              </Group>
  16.144            </Group>
  16.145          </DimensionLayout>
  16.146        </Layout>
  16.147 +      <SubComponents>
  16.148 +        <Component class="javax.swing.JLabel" name="jLabel1">
  16.149 +          <Properties>
  16.150 +            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  16.151 +              <ResourceString bundle="org/palooca/dialogs/PalOOCaDialogs.properties" key="ConsolidationFactor" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
  16.152 +            </Property>
  16.153 +            <Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
  16.154 +          </Properties>
  16.155 +        </Component>
  16.156 +        <Component class="javax.swing.JTextField" name="edtFactor">
  16.157 +          <Properties>
  16.158 +            <Property name="name" type="java.lang.String" value="edtFactor" noResource="true"/>
  16.159 +          </Properties>
  16.160 +        </Component>
  16.161 +        <Component class="javax.swing.JButton" name="btnOK">
  16.162 +          <Properties>
  16.163 +            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  16.164 +              <ResourceString bundle="org/palooca/dialogs/PalOOCaDialogs.properties" key="OK" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
  16.165 +            </Property>
  16.166 +            <Property name="name" type="java.lang.String" value="btnOK" noResource="true"/>
  16.167 +          </Properties>
  16.168 +          <Events>
  16.169 +            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnOKActionPerformed"/>
  16.170 +          </Events>
  16.171 +        </Component>
  16.172 +        <Component class="javax.swing.JButton" name="btnCancel">
  16.173 +          <Properties>
  16.174 +            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  16.175 +              <ResourceString bundle="org/palooca/dialogs/PalOOCaDialogs.properties" key="Cancel" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
  16.176 +            </Property>
  16.177 +            <Property name="name" type="java.lang.String" value="btnCancel" noResource="true"/>
  16.178 +          </Properties>
  16.179 +          <Events>
  16.180 +            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCancelActionPerformed"/>
  16.181 +          </Events>
  16.182 +        </Component>
  16.183 +        <Container class="javax.swing.JPanel" name="jPanel1">
  16.184 +          <Properties>
  16.185 +            <Property name="name" type="java.lang.String" value="jPanel1" noResource="true"/>
  16.186 +          </Properties>
  16.187 +
  16.188 +          <Layout>
  16.189 +            <DimensionLayout dim="0">
  16.190 +              <Group type="103" groupAlignment="0" attributes="0">
  16.191 +                  <EmptySpace min="0" pref="20" max="32767" attributes="0"/>
  16.192 +              </Group>
  16.193 +            </DimensionLayout>
  16.194 +            <DimensionLayout dim="1">
  16.195 +              <Group type="103" groupAlignment="0" attributes="0">
  16.196 +                  <EmptySpace min="0" pref="20" max="32767" attributes="0"/>
  16.197 +              </Group>
  16.198 +            </DimensionLayout>
  16.199 +          </Layout>
  16.200 +        </Container>
  16.201 +      </SubComponents>
  16.202      </Container>
  16.203    </SubComponents>
  16.204  </Form>
    17.1 --- a/src/org/palooca/dialogs/ConsolidationFactorDialog.java	Fri Aug 08 13:19:03 2014 +0200
    17.2 +++ b/src/org/palooca/dialogs/ConsolidationFactorDialog.java	Tue Sep 30 14:57:50 2014 +0200
    17.3 @@ -72,6 +72,7 @@
    17.4      // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    17.5      private void initComponents() {
    17.6  
    17.7 +        jPanel2 = new javax.swing.JPanel();
    17.8          jLabel1 = new javax.swing.JLabel();
    17.9          edtFactor = new javax.swing.JTextField();
   17.10          btnOK = new javax.swing.JButton();
   17.11 @@ -86,14 +87,12 @@
   17.12          setResizable(false);
   17.13          getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
   17.14  
   17.15 +        jPanel2.setName("jPanel2"); // NOI18N
   17.16 +
   17.17          jLabel1.setText(bundle.getString("ConsolidationFactor")); // NOI18N
   17.18          jLabel1.setName("jLabel1"); // NOI18N
   17.19 -        getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 30, -1, -1));
   17.20  
   17.21 -        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance().getContext().getResourceMap(ConsolidationFactorDialog.class);
   17.22 -        edtFactor.setText(resourceMap.getString("edtFactor.text")); // NOI18N
   17.23          edtFactor.setName("edtFactor"); // NOI18N
   17.24 -        getContentPane().add(edtFactor, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 26, 70, -1));
   17.25  
   17.26          btnOK.setText(bundle.getString("OK")); // NOI18N
   17.27          btnOK.setName("btnOK"); // NOI18N
   17.28 @@ -102,7 +101,6 @@
   17.29                  btnOKActionPerformed(evt);
   17.30              }
   17.31          });
   17.32 -        getContentPane().add(btnOK, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 10, 90, -1));
   17.33  
   17.34          btnCancel.setText(bundle.getString("Cancel")); // NOI18N
   17.35          btnCancel.setName("btnCancel"); // NOI18N
   17.36 @@ -111,7 +109,6 @@
   17.37                  btnCancelActionPerformed(evt);
   17.38              }
   17.39          });
   17.40 -        getContentPane().add(btnCancel, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 40, 90, -1));
   17.41  
   17.42          jPanel1.setName("jPanel1"); // NOI18N
   17.43  
   17.44 @@ -126,7 +123,53 @@
   17.45              .add(0, 20, Short.MAX_VALUE)
   17.46          );
   17.47  
   17.48 -        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(290, 50, 20, 20));
   17.49 +        org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
   17.50 +        jPanel2.setLayout(jPanel2Layout);
   17.51 +        jPanel2Layout.setHorizontalGroup(
   17.52 +            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   17.53 +            .add(0, 320, Short.MAX_VALUE)
   17.54 +            .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   17.55 +                .add(jPanel2Layout.createSequentialGroup()
   17.56 +                    .add(0, 10, Short.MAX_VALUE)
   17.57 +                    .add(jLabel1)
   17.58 +                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
   17.59 +                    .add(edtFactor, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 119, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
   17.60 +                    .add(30, 30, 30)
   17.61 +                    .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   17.62 +                        .add(btnOK, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
   17.63 +                        .add(btnCancel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
   17.64 +                        .add(jPanel2Layout.createSequentialGroup()
   17.65 +                            .add(70, 70, 70)
   17.66 +                            .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
   17.67 +                    .add(0, 10, Short.MAX_VALUE)))
   17.68 +        );
   17.69 +        jPanel2Layout.setVerticalGroup(
   17.70 +            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   17.71 +            .add(0, 110, Short.MAX_VALUE)
   17.72 +            .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   17.73 +                .add(jPanel2Layout.createSequentialGroup()
   17.74 +                    .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   17.75 +                        .add(jPanel2Layout.createSequentialGroup()
   17.76 +                            .add(0, 25, Short.MAX_VALUE)
   17.77 +                            .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   17.78 +                                .add(jPanel2Layout.createSequentialGroup()
   17.79 +                                    .add(20, 20, 20)
   17.80 +                                    .add(jLabel1))
   17.81 +                                .add(jPanel2Layout.createSequentialGroup()
   17.82 +                                    .add(btnOK)
   17.83 +                                    .add(1, 1, 1)
   17.84 +                                    .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   17.85 +                                        .add(btnCancel)
   17.86 +                                        .add(jPanel2Layout.createSequentialGroup()
   17.87 +                                            .add(10, 10, 10)
   17.88 +                                            .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))))
   17.89 +                        .add(jPanel2Layout.createSequentialGroup()
   17.90 +                            .add(41, 41, 41)
   17.91 +                            .add(edtFactor, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
   17.92 +                    .addContainerGap(25, Short.MAX_VALUE)))
   17.93 +        );
   17.94 +
   17.95 +        getContentPane().add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 0, 320, 110));
   17.96  
   17.97          pack();
   17.98      }// </editor-fold>//GEN-END:initComponents
   17.99 @@ -161,6 +204,7 @@
  17.100      private javax.swing.JTextField edtFactor;
  17.101      private javax.swing.JLabel jLabel1;
  17.102      private javax.swing.JPanel jPanel1;
  17.103 +    private javax.swing.JPanel jPanel2;
  17.104      // End of variables declaration//GEN-END:variables
  17.105  
  17.106  }
    18.1 --- a/src/org/palooca/dialogs/DimensionSubsetList.java	Fri Aug 08 13:19:03 2014 +0200
    18.2 +++ b/src/org/palooca/dialogs/DimensionSubsetList.java	Tue Sep 30 14:57:50 2014 +0200
    18.3 @@ -21,6 +21,7 @@
    18.4  
    18.5  package org.palooca.dialogs;
    18.6  
    18.7 +import com.jedox.palojlib.interfaces.IDatabase;
    18.8  import com.sun.star.uno.XComponentContext;
    18.9  import javax.swing.*;
   18.10  import java.awt.*;
   18.11 @@ -44,8 +45,10 @@
   18.12  import java.awt.event.*;
   18.13  import java.io.IOException;
   18.14  import java.util.*;
   18.15 -import org.palooca.dialogs.nodes.SubsetTreeNode.Subset2;
   18.16 +import org.palooca.subsets.Subset2;
   18.17  import com.jedox.palojlib.interfaces.IDimension;
   18.18 +import java.util.List;
   18.19 +import org.palooca.network.ConnectionInfo;
   18.20  
   18.21  public class DimensionSubsetList extends JPanel
   18.22                           implements MouseListener, DragSourceListener,
   18.23 @@ -119,9 +122,9 @@
   18.24          dimensions.add(dimItem);
   18.25      }
   18.26  
   18.27 -    public void addDimension(IDimension dim) {
   18.28 +    public void addDimension(ConnectionInfo connectionInfo, IDatabase database, IDimension dim) {
   18.29          Rectangle client = drawingPane.getVisibleRect();
   18.30 -        dimensions.add(new DimensionSubsetListItem(dim, true, isFilter()));
   18.31 +        dimensions.add(new DimensionSubsetListItem(connectionInfo, database, dim, true, isFilter()));
   18.32  
   18.33          Graphics g = this.getGraphics();
   18.34  
   18.35 @@ -133,6 +136,21 @@
   18.36          return dimensions.get(index);
   18.37      }
   18.38  
   18.39 +    public Collection<DimensionSubsetListItem> getDimensions() {
   18.40 +        return dimensions;
   18.41 +    }
   18.42 +
   18.43 +    public void setDimensions(List<DimensionSubsetListItem> dimensions) {
   18.44 +        clearDimensions();
   18.45 +        for (DimensionSubsetListItem d : dimensions) {
   18.46 +            addDimension(d);
   18.47 +        }
   18.48 +        Rectangle client = drawingPane.getVisibleRect();
   18.49 +        Graphics g = this.getGraphics();
   18.50 +        drawingPane.setPreferredSize(new Dimension(client.width, dimensions.size() * getItemHeight(g)));
   18.51 +        drawingPane.revalidate();
   18.52 +    }
   18.53 +
   18.54      public int getDimensionCount() {
   18.55          return dimensions.size();
   18.56      }
   18.57 @@ -193,7 +211,8 @@
   18.58  
   18.59                  y += itemHeight;
   18.60                  if (selectedIndex == i && dimItem.isOpen()) {
   18.61 -                    Subset2[] subsets = new Subset2[0];//TODO dim.getSubsetHandler().getSubsets();
   18.62 +                    Subset2[] subsets = dimItem.getAvailableSubsets();
   18.63 +
   18.64  
   18.65                      if (dimItem.getSubset() == null) {
   18.66                          img = new javax.swing.ImageIcon(getClass().getResource("/images/radioChecked.PNG")).getImage();
   18.67 @@ -296,7 +315,7 @@
   18.68  
   18.69                  IDimension dim = dimItem.getDimension();
   18.70                  int j;
   18.71 -                Subset2[] subsets = new Subset2[0]; //TODO dim.getSubsetHandler().getSubsets();
   18.72 +                Subset2[] subsets = dimItem.getAvailableSubsets();
   18.73                  for (j = 0; j < subsets.length; j++) {
   18.74                      if (r.contains(p)) {
   18.75                          dimItem.setSubset(subsets[j]);
   18.76 @@ -324,7 +343,7 @@
   18.77                  DimensionSubsetListItem dimItem = dimensions.get(selectedIndex);
   18.78                  if (dimItem.isOpen()) {
   18.79                      IDimension dim = dimItem.getDimension();
   18.80 -                    Subset2[] subsets = new Subset2[0]; //TODO dim.getSubsetHandler().getSubsets();
   18.81 +                    Subset2[] subsets = dimItem.getAvailableSubsets();
   18.82                      height += (subsets.length + 1) * itemHeight;
   18.83                  }
   18.84              }
   18.85 @@ -362,7 +381,7 @@
   18.86                  r.y += itemHeight;
   18.87  
   18.88                  IDimension dim = dimItem.getDimension();
   18.89 -                Subset2[] subsets = new Subset2[0]; //TODO dim.getSubsetHandler().getSubsets();
   18.90 +                Subset2[] subsets = dimItem.getAvailableSubsets();
   18.91                  for (int j = 0; j < subsets.length; j++) {
   18.92                      if (r.contains(p)) {
   18.93                          return -1;
    19.1 --- a/src/org/palooca/dialogs/DimensionSubsetListItem.java	Fri Aug 08 13:19:03 2014 +0200
    19.2 +++ b/src/org/palooca/dialogs/DimensionSubsetListItem.java	Tue Sep 30 14:57:50 2014 +0200
    19.3 @@ -24,13 +24,15 @@
    19.4  import java.util.ArrayList;
    19.5  import java.util.Vector;
    19.6  import com.jedox.palojlib.interfaces.IAttribute;
    19.7 +import com.jedox.palojlib.interfaces.IDatabase;
    19.8  import com.jedox.palojlib.interfaces.IDimension;
    19.9  import com.jedox.palojlib.interfaces.IElement;
   19.10  import java.util.List;
   19.11  import java.util.Set;
   19.12  import org.palooca.PaloLibUtil;
   19.13  import org.palooca.dialogs.nodes.ElementTreeNode;
   19.14 -import org.palooca.dialogs.nodes.SubsetTreeNode.Subset2;
   19.15 +import org.palooca.network.ConnectionInfo;
   19.16 +import org.palooca.subsets.Subset2;
   19.17  
   19.18  public class DimensionSubsetListItem extends Object {
   19.19  
   19.20 @@ -43,6 +45,9 @@
   19.21      private List<IElement> elementObjectsBackup = new ArrayList<IElement>();
   19.22      private boolean open = false;
   19.23      private int currentIndex = 0;
   19.24 +    private IDatabase database;
   19.25 +    private Subset2[] availableSubsets;
   19.26 +    private ConnectionInfo connectionInfo;
   19.27  
   19.28      public DimensionSubsetListItem(DimensionSubsetListItem other) {
   19.29          super();
   19.30 @@ -50,13 +55,17 @@
   19.31          subset = other.subset;
   19.32          open = other.open;
   19.33          attribute = other.attribute;
   19.34 +        database = other.database;
   19.35          selectedElements = (Vector<String[]>)other.selectedElements.clone();
   19.36          selectedElementObjects = (Vector<IElement>)other.selectedElementObjects.clone();
   19.37 +        connectionInfo = other.connectionInfo;
   19.38      }
   19.39  
   19.40 -    public DimensionSubsetListItem(IDimension dimension, boolean initialize, boolean filterDimension) {
   19.41 +    public DimensionSubsetListItem(ConnectionInfo connectionInfo, IDatabase database, IDimension dimension, boolean initialize, boolean filterDimension) {
   19.42          super();
   19.43 +        this.database = database;
   19.44          this.dimension = dimension;
   19.45 +        this.connectionInfo = connectionInfo;
   19.46          IElement[] elements = dimension.getElements(false);
   19.47          if (initialize && elements.length > 0) {
   19.48  //            if (filterDimension) {
   19.49 @@ -86,16 +95,32 @@
   19.50          }
   19.51      }
   19.52  
   19.53 -    public void updateElements(Set<String> elements) {
   19.54 +    public IDatabase getDatabase() {
   19.55 +        return database;
   19.56 +    }
   19.57 +
   19.58 +    public void setDatabase(IDatabase database) {
   19.59 +        this.database = database;
   19.60 +    }
   19.61 +
   19.62 +    public void setConnectionInfo(ConnectionInfo connectionInfo) {
   19.63 +        this.connectionInfo = connectionInfo;
   19.64 +    }
   19.65 +
   19.66 +    public void updateElements(Set<String> elements, boolean withBackup, boolean refresh) {
   19.67          elementsBackup.clear();
   19.68          elementObjectsBackup.clear();
   19.69 -        elementsBackup.addAll(selectedElements);
   19.70 -        elementObjectsBackup.addAll(selectedElementObjects);
   19.71 +        if (withBackup) {
   19.72 +            elementsBackup.addAll(selectedElements);
   19.73 +            elementObjectsBackup.addAll(selectedElementObjects);
   19.74 +        }
   19.75          if (elements != null) {
   19.76              List<Integer> indices = new ArrayList<Integer>();
   19.77              for (int i=0; i<selectedElementObjects.size(); i++) {
   19.78                  IElement element = selectedElementObjects.elementAt(i);
   19.79 -                if (!elements.contains(element.getName())) indices.add(i);
   19.80 +                if (!elements.contains(element.getName())) {
   19.81 +                    indices.add(i);
   19.82 +                }
   19.83              }
   19.84              IElement lastElement = null;
   19.85              String[] lastPath = null;
   19.86 @@ -108,6 +133,14 @@
   19.87                  selectedElementObjects.add(lastElement);
   19.88                  selectedElements.add(lastPath);
   19.89              }
   19.90 +            if (refresh) {
   19.91 +                List<IElement> toRefresh = new ArrayList<IElement>();
   19.92 +                toRefresh.addAll(selectedElementObjects);
   19.93 +                selectedElementObjects.clear();
   19.94 +                for (IElement e : toRefresh) {
   19.95 +                    selectedElementObjects.add(dimension.getElementByName(e.getName(), true));
   19.96 +                }
   19.97 +            }
   19.98          }
   19.99      }
  19.100  
  19.101 @@ -310,6 +343,16 @@
  19.102          path.add(parent.getName());
  19.103          addParentToStringPath(parent, path);
  19.104      }
  19.105 +
  19.106 +    public Subset2[] getAvailableSubsets() {
  19.107 +        /*
  19.108 +        if (availableSubsets == null) {
  19.109 +            availableSubsets = SubsetHandler.loadSubsets(database, dimension, connectionInfo.getUsername());
  19.110 +        }
  19.111 +         * 
  19.112 +         */
  19.113 +        return availableSubsets;
  19.114 +    }
  19.115  }
  19.116  
  19.117  
    20.1 --- a/src/org/palooca/dialogs/Modeller.form	Fri Aug 08 13:19:03 2014 +0200
    20.2 +++ b/src/org/palooca/dialogs/Modeller.form	Tue Sep 30 14:57:50 2014 +0200
    20.3 @@ -1104,6 +1104,7 @@
    20.4                      <Property name="showsRootHandles" type="boolean" value="true"/>
    20.5                    </Properties>
    20.6                    <Events>
    20.7 +                    <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="treeHierarchyMouseClicked"/>
    20.8                      <EventHandler event="valueChanged" listener="javax.swing.event.TreeSelectionListener" parameters="javax.swing.event.TreeSelectionEvent" handler="treeHierarchyValueChanged"/>
    20.9                    </Events>
   20.10                    <AuxValues>
    21.1 --- a/src/org/palooca/dialogs/Modeller.java	Fri Aug 08 13:19:03 2014 +0200
    21.2 +++ b/src/org/palooca/dialogs/Modeller.java	Tue Sep 30 14:57:50 2014 +0200
    21.3 @@ -74,8 +74,6 @@
    21.4  import com.jedox.palojlib.interfaces.IElement;
    21.5  import com.jedox.palojlib.exceptions.PaloJException;
    21.6  import com.jedox.palojlib.exceptions.PaloException;
    21.7 -import com.jedox.palojlib.interfaces.ICube.CubeType;
    21.8 -import com.jedox.palojlib.interfaces.IDimension.DimensionType;
    21.9  import com.jedox.palojlib.interfaces.IRule;
   21.10  import org.palooca.PalOOCaManager;
   21.11  import org.palooca.PalOOCaView;
   21.12 @@ -86,6 +84,7 @@
   21.13  import org.palooca.dialogs.nodes.CubesTreeNode;
   21.14  import org.palooca.dialogs.nodes.DimensionRightsTreeNode;
   21.15  import org.palooca.dialogs.nodes.DimensionsTreeNode;
   21.16 +import org.palooca.dialogs.nodes.ModellerFolderTreeNode;
   21.17  import org.palooca.network.ConnectionHandler;
   21.18  import org.palooca.network.ConnectionInfo;
   21.19  import org.palooca.network.ConnectionState;
   21.20 @@ -802,13 +801,12 @@
   21.21          boolean found = false;
   21.22          if (dimensions == null)
   21.23              return false;
   21.24 -
   21.25          for (int i = 0; i < dimensions.length; i++) {
   21.26                  if (dimensions[i].getType().equals(type) || node instanceof CubeTreeNode) {
   21.27                      DimensionTreeNode dimensionNode = new DimensionTreeNode(dimensions[i],db);
   21.28                      node.add(dimensionNode);
   21.29                      if (subsets) {
   21.30 -//                        addSubsets(dimensionNode);
   21.31 +                        addSubsets(dimensionNode);
   21.32                          if (!(node instanceof CubeTreeNode)) {
   21.33                              AttributesTreeNode attributesNode = new AttributesTreeNode(dimensionNode.getDimension(), resourceBundle.getString("Attributes"), dimensionNode.getDatabase()); // NOI18N);
   21.34                              dimensionNode.add(attributesNode);
   21.35 @@ -832,15 +830,20 @@
   21.36          IDimension[] dims = db.getDimensions();
   21.37          if (dims == null)
   21.38              return;
   21.39 -
   21.40          addDimensions(db, node, IDimension.DimensionType.DIMENSION_NORMAL, dims, true);
   21.41      }
   21.42  
   21.43      private void addSubsets(DimensionTreeNode dimNode) {
   21.44 +
   21.45 +        /* deactivated work in progress
   21.46 +        ConnectionTreeNode connNode = getConnectionNode(dimNode);
   21.47 +        if (connNode != null && connNode.getConnection().getType() == ConnectionInfo.TYPE_HTTP) {
   21.48 +            ModellerFolderTreeNode node = new ModellerFolderTreeNode(resourceBundle.getString("Subsets")); // NOI18N);
   21.49 +            dimNode.add(node);
   21.50 +        }
   21.51 +         *
   21.52 +         */
   21.53          /*
   21.54 -        ModellerFolderTreeNode node = new ModellerFolderTreeNode(resourceBundle.getString("Subsets")); // NOI18N);
   21.55 -        dimNode.add(node);
   21.56 -
   21.57          Subset2[] subs = dimNode.getDimension().getSubsetHandler().getSubsets();
   21.58  
   21.59          if (subs != null) {
   21.60 @@ -3649,6 +3652,11 @@
   21.61          treeHierarchy.setName("treeHierarchy"); // NOI18N
   21.62          treeHierarchy.setRootVisible(false);
   21.63          treeHierarchy.setShowsRootHandles(true);
   21.64 +        treeHierarchy.addMouseListener(new java.awt.event.MouseAdapter() {
   21.65 +            public void mouseClicked(java.awt.event.MouseEvent evt) {
   21.66 +                treeHierarchyMouseClicked(evt);
   21.67 +            }
   21.68 +        });
   21.69          treeHierarchy.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
   21.70              public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
   21.71                  treeHierarchyValueChanged(evt);
   21.72 @@ -4701,7 +4709,20 @@
   21.73                       addAttributes(aNode);
   21.74                       aNode.setInitialized(true);
   21.75                   }
   21.76 -             }
   21.77 +             } else if (node instanceof ModellerFolderTreeNode && node.getUserObject().equals("Subsets")) {
   21.78 +                 SubsetModeller subsetModeller = new SubsetModeller(this, true, context);
   21.79 +                 ConnectionTreeNode connection = (ConnectionTreeNode)path.getPathComponent(1);
   21.80 +                 DatabaseTreeNode database = (DatabaseTreeNode)path.getPathComponent(2);
   21.81 +                 subsetModeller.setDatabase(connection.getConnection(), database.getDatabase(), null);
   21.82 +                 subsetModeller.setDimension(((DimensionTreeNode)node.getParent()).getDimension());
   21.83 +                 subsetModeller.setAlwaysOnTop(true);
   21.84 +                 subsetModeller.setVisible(true);  
   21.85 +            } else if (node instanceof ConnectionTreeNode) {
   21.86 +                ConnectionTreeNode connNode = (ConnectionTreeNode) node;
   21.87 +                if (connNode.getConnection().getConnection() == null || !connNode.getConnection().getConnection().isConnected()) {
   21.88 +                   btnConnectActionPerformed(null);
   21.89 +                }
   21.90 +            }
   21.91          }
   21.92      }//GEN-LAST:event_treeOverviewMouseClicked
   21.93  
   21.94 @@ -4711,7 +4732,7 @@
   21.95  
   21.96          TreePath path = treeOverview.getSelectionPath();
   21.97          if (path != null && oldSelectionPath != null) {
   21.98 -            if (path.equals(oldSelectionPath))
   21.99 +            if (path.equals(oldSelectionPath) && (!(path.getLastPathComponent() instanceof ModellerFolderTreeNode)))
  21.100                  return;
  21.101          }
  21.102          oldSelectionPath = path;
  21.103 @@ -4759,7 +4780,7 @@
  21.104                  showAttributePanel();
  21.105              } else if (node instanceof DimensionRightsTreeNode) {
  21.106                  showDimensionRightsPanel();
  21.107 -            }
  21.108 +            } 
  21.109          }
  21.110  
  21.111          updateConnectionButtons();
  21.112 @@ -5952,6 +5973,19 @@
  21.113          
  21.114      }//GEN-LAST:event_mnuElementSearchActionPerformed
  21.115  
  21.116 +    private void treeHierarchyMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeHierarchyMouseClicked
  21.117 +        // TODO add your handling code here:
  21.118 +        if (evt.getClickCount() > 1) {
  21.119 +            TreePath path = treeHierarchy.getSelectionPath();
  21.120 +            if (path != null) {
  21.121 +                 DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent();
  21.122 +                 if (node.getChildCount() == 0) {
  21.123 +                    btnWeightActionPerformed(null);
  21.124 +                 }
  21.125 +            }
  21.126 +        }
  21.127 +    }//GEN-LAST:event_treeHierarchyMouseClicked
  21.128 +
  21.129      // Variables declaration - do not modify//GEN-BEGIN:variables
  21.130      private javax.swing.JButton btnAttributeDelete;
  21.131      private javax.swing.JButton btnAttributeEdit;
    22.1 --- a/src/org/palooca/dialogs/PaloDialogUtilities.java	Fri Aug 08 13:19:03 2014 +0200
    22.2 +++ b/src/org/palooca/dialogs/PaloDialogUtilities.java	Tue Sep 30 14:57:50 2014 +0200
    22.3 @@ -43,6 +43,7 @@
    22.4  import javax.swing.tree.TreeNode;
    22.5  import javax.swing.tree.TreePath;
    22.6  import com.jedox.palojlib.interfaces.*;
    22.7 +import com.jedox.palojlib.main.ConnectionManager;
    22.8  import org.palooca.PalOOCaManager;
    22.9  import org.palooca.network.ConnectionChangeListener;
   22.10  import org.palooca.network.ConnectionHandler;
   22.11 @@ -167,6 +168,10 @@
   22.12          }
   22.13      }
   22.14  
   22.15 +    protected IDatabase getDatabase() {
   22.16 +        return database;
   22.17 +    }
   22.18 +
   22.19      protected void setConnectionInfo(ConnectionInfo connectionInfo) {
   22.20          if (this.connectionInfo != connectionInfo) {
   22.21              if (this.connectionInfo != null)
   22.22 @@ -178,6 +183,10 @@
   22.23          }
   22.24      }
   22.25  
   22.26 +    protected ConnectionInfo getConnectionInfo() {
   22.27 +        return connectionInfo != null ? connectionInfo : connectionHandler.getLastConnectionInfo();
   22.28 +    }
   22.29 +
   22.30      public void connectionChanged(ConnectionInfo connectionInfo) {
   22.31          if (connectionInfo.getState() != ConnectionState.Connected) {
   22.32              setConnectionInfo(null);
    23.1 --- a/src/org/palooca/dialogs/SubsetList.java	Fri Aug 08 13:19:03 2014 +0200
    23.2 +++ b/src/org/palooca/dialogs/SubsetList.java	Tue Sep 30 14:57:50 2014 +0200
    23.3 @@ -44,7 +44,7 @@
    23.4  import java.awt.geom.Rectangle2D;
    23.5  import java.io.IOException;
    23.6  import com.jedox.palojlib.interfaces.IDimension;
    23.7 -import org.palooca.dialogs.nodes.SubsetTreeNode.Subset2;
    23.8 +import org.palooca.subsets.Subset2;
    23.9  
   23.10  public class SubsetList extends JPanel
   23.11                           implements MouseListener, DragSourceListener,
   23.12 @@ -56,6 +56,7 @@
   23.13      private JPanel drawingPane;
   23.14      private int selectedIndex = -1;
   23.15      private Subset2 selectedSubset = null;
   23.16 +    private Subset2[] availableSubsets = null;
   23.17  
   23.18      public Subset2 getSelectedSubset() {
   23.19          return selectedSubset;
   23.20 @@ -194,6 +195,7 @@
   23.21          openIndex = -1;
   23.22          selectedIndex = -1;
   23.23          selectedSubset = null;
   23.24 +        availableSubsets = null;
   23.25      }
   23.26  
   23.27      public void setContext(XComponentContext context) {
   23.28 @@ -209,7 +211,12 @@
   23.29      }
   23.30  
   23.31      private Subset2[] getSubsets(IDimension dimension) {
   23.32 -        return new Subset2[0];
   23.33 +        /*
   23.34 +        if (availableSubsets == null) {
   23.35 +            availableSubsets = SubsetHandler.loadSubsets(modeller.getDatabase(), dimension, modeller.getConnectionInfo().getUsername());
   23.36 +        }
   23.37 +         * */
   23.38 +        return availableSubsets;
   23.39      }
   23.40  
   23.41      //Handle mouse events.
    24.1 --- a/src/org/palooca/dialogs/SubsetListItem.java	Fri Aug 08 13:19:03 2014 +0200
    24.2 +++ b/src/org/palooca/dialogs/SubsetListItem.java	Tue Sep 30 14:57:50 2014 +0200
    24.3 @@ -25,7 +25,7 @@
    24.4  import java.util.Vector;
    24.5  import com.jedox.palojlib.interfaces.*;
    24.6  import org.palooca.PaloLibUtil;
    24.7 -import org.palooca.dialogs.nodes.SubsetTreeNode.Subset2;
    24.8 +import org.palooca.subsets.Subset2;
    24.9  
   24.10  public class SubsetListItem extends Object {
   24.11  
    25.1 --- a/src/org/palooca/dialogs/SubsetModeller.form	Fri Aug 08 13:19:03 2014 +0200
    25.2 +++ b/src/org/palooca/dialogs/SubsetModeller.form	Tue Sep 30 14:57:50 2014 +0200
    25.3 @@ -77,7 +77,7 @@
    25.4                        <EmptySpace max="-2" attributes="0"/>
    25.5                        <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
    25.6                        <EmptySpace max="-2" attributes="0"/>
    25.7 -                      <Component id="subsetList1" pref="466" max="32767" attributes="0"/>
    25.8 +                      <Component id="subsetList1" pref="442" max="32767" attributes="0"/>
    25.9                        <EmptySpace max="-2" attributes="0"/>
   25.10                    </Group>
   25.11                </Group>
   25.12 @@ -166,9 +166,9 @@
   25.13                                <Group type="102" attributes="0">
   25.14                                    <EmptySpace max="-2" attributes="0"/>
   25.15                                    <Group type="103" groupAlignment="0" attributes="0">
   25.16 -                                      <Component id="cmbDatabase" alignment="0" pref="168" max="32767" attributes="0"/>
   25.17 +                                      <Component id="cmbDatabase" alignment="0" pref="151" max="32767" attributes="0"/>
   25.18                                        <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
   25.19 -                                      <Component id="cmbDimension" alignment="0" pref="168" max="32767" attributes="0"/>
   25.20 +                                      <Component id="cmbDimension" alignment="0" pref="151" max="32767" attributes="0"/>
   25.21                                        <Component id="jLabel4" alignment="0" min="-2" max="-2" attributes="0"/>
   25.22                                    </Group>
   25.23                                    <EmptySpace max="-2" attributes="0"/>
   25.24 @@ -185,7 +185,7 @@
   25.25                                    <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
   25.26                                    <EmptySpace max="-2" attributes="0"/>
   25.27                                    <Component id="cmbDimension" min="-2" max="-2" attributes="0"/>
   25.28 -                                  <EmptySpace pref="12" max="32767" attributes="0"/>
   25.29 +                                  <EmptySpace max="32767" attributes="0"/>
   25.30                                </Group>
   25.31                            </Group>
   25.32                          </DimensionLayout>
   25.33 @@ -254,10 +254,10 @@
   25.34                                <Group type="102" attributes="0">
   25.35                                    <EmptySpace max="-2" attributes="0"/>
   25.36                                    <Group type="103" groupAlignment="0" attributes="0">
   25.37 -                                      <Component id="cmbAlias1" alignment="0" pref="177" max="32767" attributes="0"/>
   25.38 +                                      <Component id="cmbAlias1" alignment="0" pref="139" max="32767" attributes="0"/>
   25.39                                        <Component id="jLabel5" alignment="0" min="-2" max="-2" attributes="0"/>
   25.40                                        <Component id="jLabel6" alignment="0" min="-2" max="-2" attributes="0"/>
   25.41 -                                      <Component id="cmbAlias2" alignment="0" pref="177" max="32767" attributes="0"/>
   25.42 +                                      <Component id="cmbAlias2" alignment="0" pref="139" max="32767" attributes="0"/>
   25.43                                    </Group>
   25.44                                    <EmptySpace max="-2" attributes="0"/>
   25.45                                    <Group type="103" groupAlignment="0" attributes="0">
   25.46 @@ -279,7 +279,7 @@
   25.47                                    </Group>
   25.48                                    <EmptySpace type="unrelated" max="-2" attributes="0"/>
   25.49                                    <Component id="jLabel6" min="-2" max="-2" attributes="0"/>
   25.50 -                                  <EmptySpace pref="6" max="32767" attributes="0"/>
   25.51 +                                  <EmptySpace max="32767" attributes="0"/>
   25.52                                    <Group type="103" groupAlignment="3" attributes="0">
   25.53                                        <Component id="jCheckBox4" alignment="3" min="-2" max="-2" attributes="0"/>
   25.54                                        <Component id="cmbAlias2" alignment="3" min="-2" max="-2" attributes="0"/>
   25.55 @@ -377,7 +377,7 @@
   25.56                                        <Component id="radioViewAsHierarchy" alignment="0" min="-2" max="-2" attributes="0"/>
   25.57                                        <Component id="radioViewParentsBelowChildren" alignment="0" min="-2" max="-2" attributes="0"/>
   25.58                                    </Group>
   25.59 -                                  <EmptySpace pref="21" max="32767" attributes="0"/>
   25.60 +                                  <EmptySpace max="32767" attributes="0"/>
   25.61                                </Group>
   25.62                            </Group>
   25.63                          </DimensionLayout>
   25.64 @@ -466,7 +466,7 @@
   25.65                                        <Component id="radioLowestLevel0" alignment="0" min="-2" max="-2" attributes="0"/>
   25.66                                        <Component id="radioHighestLevel0" alignment="0" min="-2" max="-2" attributes="0"/>
   25.67                                    </Group>
   25.68 -                                  <EmptySpace pref="143" max="32767" attributes="0"/>
   25.69 +                                  <EmptySpace pref="97" max="32767" attributes="0"/>
   25.70                                </Group>
   25.71                            </Group>
   25.72                          </DimensionLayout>
   25.73 @@ -554,7 +554,7 @@
   25.74                                        <Component id="chkShowHiddenChildren" alignment="0" min="-2" max="-2" attributes="0"/>
   25.75                                        <Component id="chkIncludeDuplicates" alignment="0" min="-2" max="-2" attributes="0"/>
   25.76                                    </Group>
   25.77 -                                  <EmptySpace pref="53" max="32767" attributes="0"/>
   25.78 +                                  <EmptySpace max="32767" attributes="0"/>
   25.79                                </Group>
   25.80                            </Group>
   25.81                          </DimensionLayout>
   25.82 @@ -684,12 +684,12 @@
   25.83                    <Layout>
   25.84                      <DimensionLayout dim="0">
   25.85                        <Group type="103" groupAlignment="0" attributes="0">
   25.86 -                          <EmptySpace min="0" pref="505" max="32767" attributes="0"/>
   25.87 +                          <EmptySpace min="0" pref="489" max="32767" attributes="0"/>
   25.88                        </Group>
   25.89                      </DimensionLayout>
   25.90                      <DimensionLayout dim="1">
   25.91                        <Group type="103" groupAlignment="0" attributes="0">
   25.92 -                          <EmptySpace min="0" pref="462" max="32767" attributes="0"/>
   25.93 +                          <EmptySpace min="0" pref="444" max="32767" attributes="0"/>
   25.94                        </Group>
   25.95                      </DimensionLayout>
   25.96                    </Layout>
   25.97 @@ -711,12 +711,12 @@
   25.98                    <Layout>
   25.99                      <DimensionLayout dim="0">
  25.100                        <Group type="103" groupAlignment="0" attributes="0">
  25.101 -                          <EmptySpace min="0" pref="505" max="32767" attributes="0"/>
  25.102 +                          <EmptySpace min="0" pref="489" max="32767" attributes="0"/>
  25.103                        </Group>
  25.104                      </DimensionLayout>
  25.105                      <DimensionLayout dim="1">
  25.106                        <Group type="103" groupAlignment="0" attributes="0">
  25.107 -                          <EmptySpace min="0" pref="462" max="32767" attributes="0"/>
  25.108 +                          <EmptySpace min="0" pref="444" max="32767" attributes="0"/>
  25.109                        </Group>
  25.110                      </DimensionLayout>
  25.111                    </Layout>
  25.112 @@ -738,12 +738,12 @@
  25.113                    <Layout>
  25.114                      <DimensionLayout dim="0">
  25.115                        <Group type="103" groupAlignment="0" attributes="0">
  25.116 -                          <EmptySpace min="0" pref="505" max="32767" attributes="0"/>
  25.117 +                          <EmptySpace min="0" pref="489" max="32767" attributes="0"/>
  25.118                        </Group>
  25.119                      </DimensionLayout>
  25.120                      <DimensionLayout dim="1">
  25.121                        <Group type="103" groupAlignment="0" attributes="0">
  25.122 -                          <EmptySpace min="0" pref="462" max="32767" attributes="0"/>
  25.123 +                          <EmptySpace min="0" pref="444" max="32767" attributes="0"/>
  25.124                        </Group>
  25.125                      </DimensionLayout>
  25.126                    </Layout>
  25.127 @@ -865,26 +865,18 @@
  25.128        </Events>
  25.129        <Constraints>
  25.130          <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
  25.131 -          <AbsoluteConstraints x="390" y="520" width="90" height="-1"/>
  25.132 +          <AbsoluteConstraints x="500" y="520" width="90" height="-1"/>
  25.133          </Constraint>
  25.134        </Constraints>
  25.135      </Component>
  25.136 -    <Component class="javax.swing.JButton" name="jButton2">
  25.137 +    <Component class="javax.swing.JButton" name="btnClose">
  25.138        <Properties>
  25.139 -        <Property name="text" type="java.lang.String" resourceKey="jButton2.text"/>
  25.140 -        <Property name="name" type="java.lang.String" value="jButton2" noResource="true"/>
  25.141 +        <Property name="text" type="java.lang.String" resourceKey="btnClose.text"/>
  25.142 +        <Property name="name" type="java.lang.String" value="btnClose" noResource="true"/>
  25.143        </Properties>
  25.144 -      <Constraints>
  25.145 -        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
  25.146 -          <AbsoluteConstraints x="490" y="520" width="90" height="-1"/>
  25.147 -        </Constraint>
  25.148 -      </Constraints>
  25.149 -    </Component>
  25.150 -    <Component class="javax.swing.JButton" name="jButton3">
  25.151 -      <Properties>
  25.152 -        <Property name="text" type="java.lang.String" resourceKey="jButton3.text"/>
  25.153 -        <Property name="name" type="java.lang.String" value="jButton3" noResource="true"/>
  25.154 -      </Properties>
  25.155 +      <Events>
  25.156 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCloseActionPerformed"/>
  25.157 +      </Events>
  25.158        <Constraints>
  25.159          <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
  25.160            <AbsoluteConstraints x="590" y="520" width="90" height="-1"/>
    26.1 --- a/src/org/palooca/dialogs/SubsetModeller.java	Fri Aug 08 13:19:03 2014 +0200
    26.2 +++ b/src/org/palooca/dialogs/SubsetModeller.java	Tue Sep 30 14:57:50 2014 +0200
    26.3 @@ -29,8 +29,8 @@
    26.4  import com.jedox.palojlib.interfaces.*;
    26.5  import org.palooca.dialogs.nodes.ElementTreeNode;
    26.6  import org.palooca.network.ConnectionInfo;
    26.7 -import org.palooca.dialogs.nodes.SubsetTreeNode.Subset2;
    26.8 -import org.palooca.dialogs.nodes.SubsetTreeNode.SubsetFilter;
    26.9 +import org.palooca.subsets.Subset2;
   26.10 +import org.palooca.subsets.SubsetFilter;
   26.11  
   26.12  /**
   26.13   *
   26.14 @@ -41,7 +41,7 @@
   26.15      boolean     dirty = false;
   26.16  
   26.17      /** Creates new form SubsetModeller */
   26.18 -    public SubsetModeller(java.awt.Frame parent, boolean modal, XComponentContext context) {
   26.19 +    public SubsetModeller(java.awt.Dialog parent, boolean modal, XComponentContext context) {
   26.20          super(parent, modal, context);
   26.21          initComponents();
   26.22  
   26.23 @@ -63,7 +63,7 @@
   26.24      }
   26.25  
   26.26      @Override
   26.27 -    protected void setDatabase(ConnectionInfo connectionInfoNew, IDatabase databaseNew, JComboBox combBoxCube) {
   26.28 +    public void setDatabase(ConnectionInfo connectionInfoNew, IDatabase databaseNew, JComboBox combBoxCube) {
   26.29          super.setDatabase(connectionInfoNew, databaseNew, null);
   26.30  
   26.31          if (connectionInfoNew != null && databaseNew != null) {
   26.32 @@ -87,6 +87,11 @@
   26.33          }
   26.34      }
   26.35  
   26.36 +    public void setDimension(IDimension dimension) {
   26.37 +        dimensionComboModel.setSelectedItem(dimension);
   26.38 +        this.dimension = dimension;
   26.39 +    }
   26.40 +
   26.41      @Override
   26.42      protected void resetDatabase()
   26.43      {
   26.44 @@ -116,70 +121,70 @@
   26.45              return;
   26.46  
   26.47          subBackup = subset.copy();
   26.48 +       
   26.49          /*
   26.50 -
   26.51 -        SortingFilterSetting    setting = getSortSettings();
   26.52 +        SortingFilter setting = (SortingFilter)subset.getFilter(SubsetFilter.TYPE_SORTING);
   26.53          if (setting == null)
   26.54              return;
   26.55  
   26.56 -        switch (setting.getHierarchicalMode().getValue()) {
   26.57 -            case SortingFilterSetting.HIERARCHICAL_MODE_DISABLED:
   26.58 -                switch (setting.getOrderMode().getValue()) {
   26.59 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_DISABLED:
   26.60 +        switch (setting.getWhole()) {
   26.61 +            case SortingFilter.HIERARCHICAL_MODE_DISABLED:
   26.62 +                switch (setting.getReverse()) {
   26.63 +                    case SortingFilter.ORDER_MODE_REVERSE_DISABLED:
   26.64                          radioViewAsList.setSelected(true);
   26.65                          chkShowHiddenChildren.setSelected(false);
   26.66                          chkReverse.setSelected(false);
   26.67                          break;
   26.68 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_TOTAL:
   26.69 +                    case SortingFilter.ORDER_MODE_REVERSE_TOTAL:
   26.70                          break;
   26.71 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_PER_LEVEL:
   26.72 +                    case SortingFilter.ORDER_MODE_REVERSE_PER_LEVEL:
   26.73                          break;
   26.74 -                    case 3:
   26.75 +                    default:
   26.76                          break;
   26.77                  }
   26.78                  break;
   26.79 -            case SortingFilterSetting.HIERARCHICAL_MODE_SHOW_CHILDREN:
   26.80 -                switch (setting.getOrderMode().getValue()) {
   26.81 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_DISABLED:
   26.82 +            case SortingFilter.HIERARCHICAL_MODE_SHOW_CHILDREN:
   26.83 +                switch (setting.getReverse()) {
   26.84 +                    case SortingFilter.ORDER_MODE_REVERSE_DISABLED:
   26.85                          radioViewAsHierarchy.setSelected(true);
   26.86                          chkShowHiddenChildren.setSelected(true);
   26.87                          chkReverse.setSelected(false);
   26.88                          break;
   26.89 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_TOTAL:
   26.90 +                    case SortingFilter.ORDER_MODE_REVERSE_TOTAL:
   26.91                          radioViewParentsBelowChildren.setSelected(true);
   26.92                          chkShowHiddenChildren.setSelected(true);
   26.93                          chkReverse.setSelected(false);
   26.94                          break;
   26.95 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_PER_LEVEL:
   26.96 +                    case SortingFilter.ORDER_MODE_REVERSE_PER_LEVEL:
   26.97                          radioViewAsHierarchy.setSelected(true);
   26.98                          chkShowHiddenChildren.setSelected(true);
   26.99                          chkReverse.setSelected(true);
  26.100                          break;
  26.101 -                    case 3:
  26.102 +                    default:
  26.103                          radioViewParentsBelowChildren.setSelected(true);
  26.104                          chkShowHiddenChildren.setSelected(true);
  26.105                          chkReverse.setSelected(true);
  26.106                          break;
  26.107                  }
  26.108                  break;
  26.109 -            case SortingFilterSetting.HIERARCHICAL_MODE_HIDE_CHILDREN:
  26.110 -                switch (setting.getOrderMode().getValue()) {
  26.111 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_DISABLED:
  26.112 +            case SortingFilter.HIERARCHICAL_MODE_HIDE_CHILDREN:
  26.113 +                switch (setting.getReverse()) {
  26.114 +                    case SortingFilter.ORDER_MODE_REVERSE_DISABLED:
  26.115                          radioViewAsHierarchy.setSelected(true);
  26.116                          chkShowHiddenChildren.setSelected(false);
  26.117                          chkReverse.setSelected(false);
  26.118                          break;
  26.119 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_TOTAL:
  26.120 +                    case SortingFilter.ORDER_MODE_REVERSE_TOTAL:
  26.121                          radioViewParentsBelowChildren.setSelected(true);
  26.122                          chkShowHiddenChildren.setSelected(true);
  26.123                          chkReverse.setSelected(false);
  26.124                          break;
  26.125 -                    case SortingFilterSetting.ORDER_MODE_REVERSE_PER_LEVEL:
  26.126 +                    case SortingFilter.ORDER_MODE_REVERSE_PER_LEVEL:
  26.127                          radioViewAsHierarchy.setSelected(true);
  26.128                          chkShowHiddenChildren.setSelected(false);
  26.129                          chkReverse.setSelected(false);
  26.130                          break;
  26.131 -                    case 3:
  26.132 +                    default:
  26.133                          radioViewParentsBelowChildren.setSelected(true);
  26.134                          chkShowHiddenChildren.setSelected(true);
  26.135                          chkReverse.setSelected(true);
  26.136 @@ -187,9 +192,8 @@
  26.137                  }
  26.138                  break;
  26.139          }
  26.140 -         *
  26.141 -         */
  26.142 -
  26.143 +         * */
  26.144 +       
  26.145          updatePreview();
  26.146          updateFormula();
  26.147      }
  26.148 @@ -283,8 +287,7 @@
  26.149          jScrollPane1 = new javax.swing.JScrollPane();
  26.150          jTree1 = new javax.swing.JTree();
  26.151          btnSave = new javax.swing.JButton();
  26.152 -        jButton2 = new javax.swing.JButton();
  26.153 -        jButton3 = new javax.swing.JButton();
  26.154 +        btnClose = new javax.swing.JButton();
  26.155          btnSubsetNew = new javax.swing.JButton();
  26.156          btnSubsetDelete = new javax.swing.JButton();
  26.157          btnSubsetEdit = new javax.swing.JButton();
  26.158 @@ -324,7 +327,7 @@
  26.159                  .addContainerGap()
  26.160                  .add(jLabel1)
  26.161                  .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
  26.162 -                .add(subsetList1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 466, Short.MAX_VALUE)
  26.163 +                .add(subsetList1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 442, Short.MAX_VALUE)
  26.164                  .addContainerGap())
  26.165          );
  26.166  
  26.167 @@ -370,9 +373,9 @@
  26.168              .add(jPanel3Layout.createSequentialGroup()
  26.169                  .addContainerGap()
  26.170                  .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.171 -                    .add(cmbDatabase, 0, 168, Short.MAX_VALUE)
  26.172 +                    .add(cmbDatabase, 0, 151, Short.MAX_VALUE)
  26.173                      .add(jLabel3)
  26.174 -                    .add(cmbDimension, 0, 168, Short.MAX_VALUE)
  26.175 +                    .add(cmbDimension, 0, 151, Short.MAX_VALUE)
  26.176                      .add(jLabel4))
  26.177                  .addContainerGap())
  26.178          );
  26.179 @@ -386,7 +389,7 @@
  26.180                  .add(jLabel4)
  26.181                  .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
  26.182                  .add(cmbDimension, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
  26.183 -                .addContainerGap(12, Short.MAX_VALUE))
  26.184 +                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  26.185          );
  26.186  
  26.187          panelGeneral.add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 200, 130));
  26.188 @@ -419,10 +422,10 @@
  26.189              .add(jPanel4Layout.createSequentialGroup()
  26.190                  .addContainerGap()
  26.191                  .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.192 -                    .add(cmbAlias1, 0, 177, Short.MAX_VALUE)
  26.193 +                    .add(cmbAlias1, 0, 139, Short.MAX_VALUE)
  26.194                      .add(jLabel5)
  26.195                      .add(jLabel6)
  26.196 -                    .add(cmbAlias2, 0, 177, Short.MAX_VALUE))
  26.197 +                    .add(cmbAlias2, 0, 139, Short.MAX_VALUE))
  26.198                  .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
  26.199                  .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.200                      .add(jCheckBox4)
  26.201 @@ -439,7 +442,7 @@
  26.202                      .add(jCheckBox3))
  26.203                  .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
  26.204                  .add(jLabel6)
  26.205 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 6, Short.MAX_VALUE)
  26.206 +                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  26.207                  .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
  26.208                      .add(jCheckBox4)
  26.209                      .add(cmbAlias2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
  26.210 @@ -488,7 +491,7 @@
  26.211                      .add(radioViewAsList)
  26.212                      .add(radioViewAsHierarchy)
  26.213                      .add(radioViewParentsBelowChildren))
  26.214 -                .addContainerGap(21, Short.MAX_VALUE))
  26.215 +                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  26.216          );
  26.217          jPanel5Layout.setVerticalGroup(
  26.218              jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.219 @@ -543,7 +546,7 @@
  26.220                      .add(radioHighestLevel1)
  26.221                      .add(radioLowestLevel0)
  26.222                      .add(radioHighestLevel0))
  26.223 -                .addContainerGap(143, Short.MAX_VALUE))
  26.224 +                .addContainerGap(97, Short.MAX_VALUE))
  26.225          );
  26.226          jPanel6Layout.setVerticalGroup(
  26.227              jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.228 @@ -586,7 +589,7 @@
  26.229                  .add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.230                      .add(chkShowHiddenChildren)
  26.231                      .add(chkIncludeDuplicates))
  26.232 -                .addContainerGap(53, Short.MAX_VALUE))
  26.233 +                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  26.234          );
  26.235          jPanel7Layout.setVerticalGroup(
  26.236              jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.237 @@ -631,11 +634,11 @@
  26.238          panelPickList.setLayout(panelPickListLayout);
  26.239          panelPickListLayout.setHorizontalGroup(
  26.240              panelPickListLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.241 -            .add(0, 505, Short.MAX_VALUE)
  26.242 +            .add(0, 489, Short.MAX_VALUE)
  26.243          );
  26.244          panelPickListLayout.setVerticalGroup(
  26.245              panelPickListLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.246 -            .add(0, 462, Short.MAX_VALUE)
  26.247 +            .add(0, 444, Short.MAX_VALUE)
  26.248          );
  26.249  
  26.250          jTabbedPane1.addTab(bundle.getString("PickList"), panelPickList); // NOI18N
  26.251 @@ -646,11 +649,11 @@
  26.252          panelAttribute.setLayout(panelAttributeLayout);
  26.253          panelAttributeLayout.setHorizontalGroup(
  26.254              panelAttributeLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.255 -            .add(0, 505, Short.MAX_VALUE)
  26.256 +            .add(0, 489, Short.MAX_VALUE)
  26.257          );
  26.258          panelAttributeLayout.setVerticalGroup(
  26.259              panelAttributeLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.260 -            .add(0, 462, Short.MAX_VALUE)
  26.261 +            .add(0, 444, Short.MAX_VALUE)
  26.262          );
  26.263  
  26.264          jTabbedPane1.addTab(bundle.getString("Attribute"), panelAttribute); // NOI18N
  26.265 @@ -661,11 +664,11 @@
  26.266          panelData.setLayout(panelDataLayout);
  26.267          panelDataLayout.setHorizontalGroup(
  26.268              panelDataLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.269 -            .add(0, 505, Short.MAX_VALUE)
  26.270 +            .add(0, 489, Short.MAX_VALUE)
  26.271          );
  26.272          panelDataLayout.setVerticalGroup(
  26.273              panelDataLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.274 -            .add(0, 462, Short.MAX_VALUE)
  26.275 +            .add(0, 444, Short.MAX_VALUE)
  26.276          );
  26.277  
  26.278          jTabbedPane1.addTab(bundle.getString("Data"), panelData); // NOI18N
  26.279 @@ -717,15 +720,16 @@
  26.280                  btnSaveActionPerformed(evt);
  26.281              }
  26.282          });
  26.283 -        getContentPane().add(btnSave, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 520, 90, -1));
  26.284 +        getContentPane().add(btnSave, new org.netbeans.lib.awtextra.AbsoluteConstraints(500, 520, 90, -1));
  26.285  
  26.286 -        jButton2.setText(resourceMap.getString("jButton2.text")); // NOI18N
  26.287 -        jButton2.setName("jButton2"); // NOI18N
  26.288 -        getContentPane().add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 520, 90, -1));
  26.289 -
  26.290 -        jButton3.setText(resourceMap.getString("jButton3.text")); // NOI18N
  26.291 -        jButton3.setName("jButton3"); // NOI18N
  26.292 -        getContentPane().add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(590, 520, 90, -1));
  26.293 +        btnClose.setText(resourceMap.getString("btnClose.text")); // NOI18N
  26.294 +        btnClose.setName("btnClose"); // NOI18N
  26.295 +        btnClose.addActionListener(new java.awt.event.ActionListener() {
  26.296 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
  26.297 +                btnCloseActionPerformed(evt);
  26.298 +            }
  26.299 +        });
  26.300 +        getContentPane().add(btnClose, new org.netbeans.lib.awtextra.AbsoluteConstraints(590, 520, 90, -1));
  26.301  
  26.302          btnSubsetNew.setIcon(resourceMap.getIcon("btnSubsetNew.icon")); // NOI18N
  26.303          btnSubsetNew.setText(resourceMap.getString("btnSubsetNew.text")); // NOI18N
  26.304 @@ -862,81 +866,70 @@
  26.305      }//GEN-LAST:event_chkIncludeDuplicatesActionPerformed
  26.306  
  26.307      private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveActionPerformed
  26.308 -        
  26.309 +        setVisible(false);
  26.310 +        dispose();
  26.311 +    }//GEN-LAST:event_btnSaveActionPerformed
  26.312  
  26.313 -
  26.314 -    }//GEN-LAST:event_btnSaveActionPerformed
  26.315 +    private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCloseActionPerformed
  26.316 +        // TODO add your handling code here:
  26.317 +        setVisible(false);
  26.318 +        dispose();
  26.319 +    }//GEN-LAST:event_btnCloseActionPerformed
  26.320  
  26.321      private void setSortOrderAndHierarchy()
  26.322      {
  26.323          /*
  26.324 -        SortingFilterSetting    setting = getSortSettings();
  26.325 +        SortingFilter setting = (SortingFilter)getSelectedSubset().getFilter(SubsetFilter.TYPE_SORTING);
  26.326          if (setting == null)
  26.327              return;
  26.328  
  26.329          if (chkReverse.isSelected()) {
  26.330              if (radioViewAsList.isSelected()) {
  26.331 -                setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_DISABLED);
  26.332 -                setting.setOrderMode(SortingFilterSetting.ORDER_MODE_REVERSE_PER_LEVEL);
  26.333 +                setting.setWhole(SortingFilter.HIERARCHICAL_MODE_DISABLED);
  26.334 +                setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_PER_LEVEL);
  26.335              } else if (radioViewAsHierarchy.isSelected()) {
  26.336                  if (chkShowHiddenChildren.isSelected()) {
  26.337 -                    setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_SHOW_CHILDREN);
  26.338 -                    setting.setOrderMode(SortingFilterSetting.ORDER_MODE_REVERSE_PER_LEVEL);
  26.339 +                    setting.setWhole(SortingFilter.HIERARCHICAL_MODE_SHOW_CHILDREN);
  26.340 +                    setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_PER_LEVEL);
  26.341                  } else {
  26.342 -                    setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_HIDE_CHILDREN);
  26.343 -                    setting.setOrderMode(SortingFilterSetting.ORDER_MODE_REVERSE_PER_LEVEL);
  26.344 +                    setting.setWhole(SortingFilter.HIERARCHICAL_MODE_HIDE_CHILDREN);
  26.345 +                    setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_PER_LEVEL);
  26.346                  }
  26.347              } else {
  26.348                  if (chkShowHiddenChildren.isSelected()) {
  26.349 -                    setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_SHOW_CHILDREN);
  26.350 -                    setting.setOrderMode(3); //ORDER_MODE_REVERSE_HIERARCHY
  26.351 +                    setting.setWhole(SortingFilter.HIERARCHICAL_MODE_SHOW_CHILDREN);
  26.352 +                    setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_HIERARCHY); //ORDER_MODE_REVERSE_HIERARCHY
  26.353                  } else {
  26.354 -                    setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_HIDE_CHILDREN);
  26.355 -                    setting.setOrderMode(3); //ORDER_MODE_REVERSE_HIERARCHY
  26.356 +                    setting.setWhole(SortingFilter.HIERARCHICAL_MODE_HIDE_CHILDREN);
  26.357 +                    setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_HIERARCHY); //ORDER_MODE_REVERSE_HIERARCHY
  26.358                  }
  26.359              }
  26.360          } else {
  26.361              if (radioViewAsList.isSelected()) {
  26.362 -                setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_DISABLED);
  26.363 -                setting.setOrderMode(SortingFilterSetting.ORDER_MODE_REVERSE_DISABLED);
  26.364 +                setting.setWhole(SortingFilter.HIERARCHICAL_MODE_DISABLED);
  26.365 +                setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_DISABLED);
  26.366              } else if (radioViewAsHierarchy.isSelected()) {
  26.367                  if (chkShowHiddenChildren.isSelected()) {
  26.368 -                    setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_SHOW_CHILDREN);
  26.369 -                    setting.setOrderMode(SortingFilterSetting.ORDER_MODE_REVERSE_DISABLED);
  26.370 +                    setting.setWhole(SortingFilter.HIERARCHICAL_MODE_SHOW_CHILDREN);
  26.371 +                    setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_DISABLED);
  26.372                  } else {
  26.373 -                    setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_HIDE_CHILDREN);
  26.374 -                    setting.setOrderMode(SortingFilterSetting.ORDER_MODE_REVERSE_DISABLED);
  26.375 +                    setting.setWhole(SortingFilter.HIERARCHICAL_MODE_HIDE_CHILDREN);
  26.376 +                    setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_DISABLED);
  26.377                  }
  26.378              } else {
  26.379                  if (chkShowHiddenChildren.isSelected()) {
  26.380 -                    setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_SHOW_CHILDREN);
  26.381 -                    setting.setOrderMode(SortingFilterSetting.ORDER_MODE_REVERSE_TOTAL);
  26.382 +                    setting.setWhole(SortingFilter.HIERARCHICAL_MODE_SHOW_CHILDREN);
  26.383 +                    setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_TOTAL);
  26.384                  } else {
  26.385 -                    setting.setHierarchicalMode(SortingFilterSetting.HIERARCHICAL_MODE_HIDE_CHILDREN);
  26.386 -                    setting.setOrderMode(SortingFilterSetting.ORDER_MODE_REVERSE_TOTAL);
  26.387 +                    setting.setWhole(SortingFilter.HIERARCHICAL_MODE_HIDE_CHILDREN);
  26.388 +                    setting.setReverse(SortingFilter.ORDER_MODE_REVERSE_TOTAL);
  26.389                  }
  26.390              }
  26.391          }
  26.392 -         *
  26.393 -         */
  26.394 -
  26.395 +*/
  26.396          modified();
  26.397      }
  26.398  
  26.399 -    /*
  26.400 -
  26.401 -    private SortingFilterSetting getSortSettings() {
  26.402 -        Subset2 sub = getSelectedSubset();
  26.403 -        if (sub == null)
  26.404 -            return null;
  26.405 -        SortingFilter filter = (SortingFilter)sub.getFilter(SubsetFilter.TYPE_SORTING);
  26.406 -        if (filter == null)
  26.407 -            return null;
  26.408 -        
  26.409 -        return filter.getSettings();
  26.410 -    }
  26.411 -     *
  26.412 -     */
  26.413  
  26.414      private Subset2 getSelectedSubset() {
  26.415          Subset2 sub = subsetList1.getSelectedSubset();
  26.416 @@ -962,7 +955,7 @@
  26.417          if (subset == null)
  26.418              return;
  26.419  
  26.420 -        formula += "\"" + connectionHandler.getLastConnectionInfo().getHost() + "/";
  26.421 +        formula += "\"" + getConnectionInfo().getHost() + "/";
  26.422          formula += database.getName() + "\"" + separator + "\"" ;
  26.423          formula += dimension.getName() + "\"";
  26.424          formula += dimension.getName() + "\"" + separator;
  26.425 @@ -971,32 +964,34 @@
  26.426          formula += separator + separator; //....
  26.427  
  26.428          /*
  26.429 -        SortingFilterSetting    setting = getSortSettings();
  26.430 +        SortingFilter setting = (SortingFilter)subset.getFilter(SubsetFilter.TYPE_SORTING);
  26.431          if (setting == null)
  26.432              return;
  26.433  
  26.434          formula += "PALO.SORT(";
  26.435 -        formula += setting.getHierarchicalMode().getValue().toString() + separator;
  26.436 -        formula += setting.getSortCriteria().getValue().toString() + separator; // sort order
  26.437 -        if (setting.getSortAttribute().getValue() != null)
  26.438 -            formula += setting.getSortAttribute().getValue().toString();
  26.439 +        formula += setting.getWhole() + separator;
  26.440 +        formula += setting.getSortingCriteria() + separator; // sort order
  26.441 +        if (setting.getSortAttribute() != -1)
  26.442 +            formula += setting.getSortAttribute();
  26.443          formula += separator;
  26.444 -        formula += setting.getSortTypeMode().getValue().toString() + separator;
  26.445 -        if (setting.getSortLevel().getValue() != -1)
  26.446 -            formula += setting.getSortLevel().getValue().toString();
  26.447 +        formula += setting.getType() + separator;
  26.448 +        if (setting.getSortLevel() != -1)
  26.449 +            formula += setting.getSortLevel();
  26.450          formula += separator;
  26.451 -        formula += setting.getOrderMode().getValue().toString() + separator;
  26.452 -        formula += setting.getShowDuplicates().getValue().toString() + ")";
  26.453 +        formula += setting.getReverse() + separator;
  26.454 +        formula += (setting.isShowDuplicates() ? 0 : 1) + ")";
  26.455  
  26.456          formula += ")";
  26.457  
  26.458          txtFormula.setText(formula);
  26.459           * 
  26.460           */
  26.461 +        
  26.462      }
  26.463  
  26.464  
  26.465      // Variables declaration - do not modify//GEN-BEGIN:variables
  26.466 +    private javax.swing.JButton btnClose;
  26.467      private javax.swing.JButton btnSave;
  26.468      private javax.swing.JButton btnSubsetDelete;
  26.469      private javax.swing.JButton btnSubsetEdit;
  26.470 @@ -1012,8 +1007,6 @@
  26.471      private javax.swing.JComboBox cmbAlias2;
  26.472      private javax.swing.JComboBox cmbDatabase;
  26.473      private javax.swing.JComboBox cmbDimension;
  26.474 -    private javax.swing.JButton jButton2;
  26.475 -    private javax.swing.JButton jButton3;
  26.476      private javax.swing.JCheckBox jCheckBox3;
  26.477      private javax.swing.JCheckBox jCheckBox4;
  26.478      private javax.swing.JLabel jLabel1;
    27.1 --- a/src/org/palooca/dialogs/ViewDialog.java	Fri Aug 08 13:19:03 2014 +0200
    27.2 +++ b/src/org/palooca/dialogs/ViewDialog.java	Tue Sep 30 14:57:50 2014 +0200
    27.3 @@ -21,13 +21,20 @@
    27.4  
    27.5  package org.palooca.dialogs;
    27.6  
    27.7 +import com.jedox.palojlib.interfaces.IAttribute;
    27.8 +import com.jedox.palojlib.interfaces.IConnection;
    27.9  import com.sun.star.uno.XComponentContext;
   27.10  import java.awt.event.ItemEvent;
   27.11  import javax.swing.JComboBox;
   27.12  import com.jedox.palojlib.interfaces.ICube;
   27.13  import com.jedox.palojlib.interfaces.IDatabase;
   27.14  import com.jedox.palojlib.interfaces.IDimension;
   27.15 +import com.jedox.palojlib.interfaces.IElement;
   27.16 +import java.util.Collection;
   27.17 +import java.util.HashSet;
   27.18 +import java.util.Set;
   27.19  import org.palooca.PalOOCaView;
   27.20 +import org.palooca.RunnableWarning;
   27.21  import org.palooca.network.ConnectionInfo;
   27.22  import org.palooca.network.ConnectionState;
   27.23  
   27.24 @@ -76,13 +83,31 @@
   27.25          init(parent);
   27.26  
   27.27          cube = view.getCube();
   27.28 -        database = connectionHandler.getLastDatabase();
   27.29 +        String[] dbStrings = view.getServDB().split("/");
   27.30 +        if (dbStrings.length == 2) {
   27.31 +            IConnection connection = connectionHandler.getConnection(dbStrings[0]);
   27.32 +            if (connection != null) {
   27.33 +                 ConnectionInfo connInfo = connectionHandler.getConnectionInfo(connection);
   27.34 +                 database = connInfo.connect(this).getDatabaseByName(dbStrings[1]);
   27.35 +                 setConnectionInfo(connInfo);
   27.36 +                 selectDatabaseCombo(connInfo, database, jComboBoxDatabase);
   27.37 +            }
   27.38 +            if (connection == null || database == null) {
   27.39 +                 RunnableWarning modalWarning = new RunnableWarning("Could not connect to "+view.getServDB(),connectionHandler.getResourceBundle().getString("Connection_Failed_Caption"));
   27.40 +                 Thread thread = new Thread(modalWarning);
   27.41 +                 thread.start();
   27.42 +                 btnCancelActionPerformed(null);
   27.43 +            }
   27.44 +        } else {
   27.45 +            database = connectionHandler.getLastDatabase();
   27.46 +            setConnectionInfo(connectionHandler.getLastConnectionInfo());
   27.47 +            selectDatabaseCombo(connectionHandler.getLastConnectionInfo(), database, jComboBoxDatabase);
   27.48 +        }
   27.49  
   27.50          setTitle(resourceBundle.getString("Edit_View_Caption"));
   27.51          btnCreate.setText(resourceBundle.getString("Apply"));
   27.52  
   27.53 -        setConnectionInfo(connectionHandler.getLastConnectionInfo());
   27.54 -        selectDatabaseCombo(connectionHandler.getLastConnectionInfo(), database, jComboBoxDatabase);
   27.55 +       
   27.56  
   27.57          cube = view.getCube();                  // is overwritten so assgin again
   27.58          comboBoxCube.setSelectedItem(cube);
   27.59 @@ -570,15 +595,15 @@
   27.60  
   27.61              dimensionSubsetListRow.clearDimensions();
   27.62              if (dimensions.length > 0)
   27.63 -                dimensionSubsetListRow.addDimension(dimensions[0]);
   27.64 +                dimensionSubsetListRow.addDimension(getConnectionInfo(),getDatabase(),dimensions[0]);
   27.65  
   27.66              dimensionSubsetListColumn.clearDimensions();
   27.67              if (dimensions.length > 1)
   27.68 -                dimensionSubsetListColumn.addDimension(dimensions[1]);
   27.69 +                dimensionSubsetListColumn.addDimension(getConnectionInfo(),getDatabase(),dimensions[1]);
   27.70  
   27.71              dimensionSubsetListFilter.clearDimensions();
   27.72              for (int i = 2; i < dimensions.length; i++) {
   27.73 -                dimensionSubsetListFilter.addDimension(dimensions[i]);
   27.74 +                dimensionSubsetListFilter.addDimension(getConnectionInfo(),getDatabase(),dimensions[i]);
   27.75              }
   27.76  
   27.77              dimensionSubsetListFilter.repaint();
   27.78 @@ -615,8 +640,17 @@
   27.79          manager.getOpenDialogs().remove(this);
   27.80      }//GEN-LAST:event_formWindowClosed
   27.81  
   27.82 +    private Set<String> getElementSet(IDimension dimension) {
   27.83 +        Set<String> result = new HashSet<String>();
   27.84 +        for (IElement element : dimension.getElements(true)) {
   27.85 +            result.add(element.getName());
   27.86 +        }
   27.87 +        return result;
   27.88 +    }
   27.89 +
   27.90      private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed
   27.91          Object item = databaseModel.getSelectedItem();
   27.92 +        int index = databaseModel.getIndexOf(item);
   27.93          ConnectionInfo info = null;
   27.94          if (item instanceof ConnectionInfo) {
   27.95              info = (ConnectionInfo)item;
   27.96 @@ -629,19 +663,108 @@
   27.97              if (!info.getState().equals(ConnectionState.Connected)) {
   27.98                  info.connect();
   27.99              } else {
  27.100 -                info.getConnection().close();
  27.101 -                info.connect();
  27.102 +                if (info.getConnection() instanceof com.jedox.palojlib.main.Connection) {
  27.103 +                    com.jedox.palojlib.main.Connection conn = (com.jedox.palojlib.main.Connection)info.getConnection();
  27.104 +                    conn.resetCache();
  27.105 +                    conn.getDatabases();
  27.106 +                } else {
  27.107 +                    info.getConnection().close();
  27.108 +                    info.getConnection().open();
  27.109 +                }
  27.110 +            }
  27.111 +        } else {
  27.112 +            return;
  27.113 +        }
  27.114 +
  27.115 +        if (item instanceof DatabaseInfo) {
  27.116 +            boolean initNew = false;
  27.117 +            Collection<DimensionSubsetListItem> rowDims = dimensionSubsetListRow.getDimensions();
  27.118 +            Collection<DimensionSubsetListItem> colDims = dimensionSubsetListColumn.getDimensions();
  27.119 +            Collection<DimensionSubsetListItem> filterDims = dimensionSubsetListFilter.getDimensions();
  27.120 +            String databaseName = ((DatabaseInfo)item).getDatabase().getName();
  27.121 +            database = info.getConnection().getDatabaseByName(databaseName);
  27.122 +            if (database != null) {
  27.123 +                if (cube != null) cube = database.getCubeByName(cube.getName());
  27.124 +                if (cube != null) {
  27.125 +                    for (DimensionSubsetListItem d : rowDims) {
  27.126 +                        IDimension updatedDimension = cube.getDimensionByName(d.getDimension().getName());
  27.127 +                        if (d.getAttribute() != null) {
  27.128 +                            IAttribute updatedAttribute = updatedDimension.getAttributeByName(d.getAttribute().getName());
  27.129 +                            d.setAttribute(updatedAttribute);
  27.130 +                        }
  27.131 +                        if (updatedDimension == null) {
  27.132 +                            initNew = true;
  27.133 +                            break;
  27.134 +                        }
  27.135 +                        else {
  27.136 +                            d.setDatabase(database);
  27.137 +                            d.setDimension(updatedDimension);
  27.138 +                            d.updateElements(getElementSet(updatedDimension),false,true);
  27.139 +                        }
  27.140 +                    }
  27.141 +                    if (!initNew) for (DimensionSubsetListItem d : colDims) {
  27.142 +                        IDimension updatedDimension = cube.getDimensionByName(d.getDimension().getName());
  27.143 +                        if (d.getAttribute() != null) {
  27.144 +                            IAttribute updatedAttribute = updatedDimension.getAttributeByName(d.getAttribute().getName());
  27.145 +                            d.setAttribute(updatedAttribute);
  27.146 +                        }
  27.147 +                        if (updatedDimension == null) {
  27.148 +                            initNew = true;
  27.149 +                            break;
  27.150 +                        }
  27.151 +                        else {
  27.152 +                            d.setDatabase(database);
  27.153 +                            d.setDimension(updatedDimension);
  27.154 +                            d.updateElements(getElementSet(updatedDimension),false,true);
  27.155 +                        }
  27.156 +                    }
  27.157 +                    if (!initNew) for (DimensionSubsetListItem d : filterDims) {
  27.158 +                       IDimension updatedDimension = cube.getDimensionByName(d.getDimension().getName());
  27.159 +                        if (d.getAttribute() != null) {
  27.160 +                            IAttribute updatedAttribute = updatedDimension.getAttributeByName(d.getAttribute().getName());
  27.161 +                            d.setAttribute(updatedAttribute);
  27.162 +                        }
  27.163 +                        if (updatedDimension == null) {
  27.164 +                            initNew = true;
  27.165 +                            break;
  27.166 +                        }
  27.167 +                        else {
  27.168 +                            d.setDatabase(database);
  27.169 +                            d.setDimension(updatedDimension);
  27.170 +                            d.updateElements(getElementSet(updatedDimension),false,true);
  27.171 +                        }
  27.172 +                    }
  27.173 +                }
  27.174 +            }
  27.175 +            if (initNew) {
  27.176 +                //set connection item for new init
  27.177 +                int i = index;
  27.178 +                item = null;
  27.179 +                while (i > 0) {
  27.180 +                    if (i < databaseModel.getSize()) {
  27.181 +                        if (databaseModel.getElementAt(i) instanceof ConnectionInfo) {
  27.182 +                            item = databaseModel.getElementAt(i);
  27.183 +                            break;
  27.184 +                        }
  27.185 +                    }
  27.186 +                    i--;
  27.187 +                }
  27.188 +                index --;
  27.189              }
  27.190          }
  27.191 -        dimensionSubsetListRow.clearDimensions();
  27.192 -        dimensionSubsetListColumn.clearDimensions();
  27.193 -        dimensionSubsetListFilter.clearDimensions();
  27.194 -        dimensionSubsetListFilter.repaint();
  27.195 -        dimensionSubsetListColumn.repaint();
  27.196 -        dimensionSubsetListRow.repaint();
  27.197 -        resetDatabase();
  27.198 -        buildDatabaseList();
  27.199 -        databaseModel.setSelectedItem(item);
  27.200 +
  27.201 +        if (item instanceof ConnectionInfo) {
  27.202 +            resetDatabase();
  27.203 +            buildDatabaseList();
  27.204 +            if (databaseModel.getSize() > index+1 && databaseModel.getElementAt(index+1) instanceof DatabaseInfo) {
  27.205 +                DatabaseInfo dbInfo = (DatabaseInfo)databaseModel.getElementAt(index+1);
  27.206 +                databaseModel.setSelectedItem(dbInfo);
  27.207 +                setDatabase(info, dbInfo.getDatabase(), comboBoxCube);
  27.208 +                item = dbInfo;
  27.209 +            }
  27.210 +            databaseModel.setSelectedItem(item);
  27.211 +            jComboBoxDatabase.showPopup();
  27.212 +        }
  27.213      }//GEN-LAST:event_refreshButtonActionPerformed
  27.214  
  27.215      @Override
  27.216 @@ -658,6 +781,9 @@
  27.217          dimensionSubsetListRow.clearDimensions();
  27.218          dimensionSubsetListColumn.clearDimensions();
  27.219          dimensionSubsetListFilter.clearDimensions();
  27.220 +        dimensionSubsetListFilter.repaint();
  27.221 +        dimensionSubsetListColumn.repaint();
  27.222 +        dimensionSubsetListRow.repaint();
  27.223      }
  27.224  
  27.225      @Override
    28.1 --- a/src/org/palooca/dialogs/nodes/SubsetTreeNode.java	Fri Aug 08 13:19:03 2014 +0200
    28.2 +++ b/src/org/palooca/dialogs/nodes/SubsetTreeNode.java	Tue Sep 30 14:57:50 2014 +0200
    28.3 @@ -22,8 +22,7 @@
    28.4  package org.palooca.dialogs.nodes;
    28.5  
    28.6  import javax.swing.tree.DefaultMutableTreeNode;
    28.7 -import com.jedox.palojlib.interfaces.*;
    28.8 -import com.jedox.palojlib.exceptions.*;
    28.9 +import org.palooca.subsets.Subset2;
   28.10  
   28.11  /**
   28.12   *
   28.13 @@ -31,252 +30,6 @@
   28.14   */
   28.15  public class SubsetTreeNode  extends DefaultMutableTreeNode {
   28.16  
   28.17 -    public interface SubsetFilter {
   28.18 -
   28.19 -
   28.20 -	/* supported types */
   28.21 -	/** type constant for textual filter */
   28.22 -	public static final int TYPE_TEXT = 1<<0;
   28.23 -	/** type constant for hierarchical filter */
   28.24 -	public static final int TYPE_HIERARCHICAL = 1<<1;
   28.25 -	/** type constant for picklist filter */
   28.26 -	public static final int TYPE_PICKLIST = 1<<2;
   28.27 -	/** type constant for data filter */
   28.28 -	public static final int TYPE_DATA = 1<<3;
   28.29 -	/** type constant for sorting filter */
   28.30 -	public static final int TYPE_SORTING = 1<<4;
   28.31 -	/** type constant for attribute filter */
   28.32 -	public static final int TYPE_ATTRIBUTE = 1<<5;
   28.33 -	/** type constant for alias filter */
   28.34 -	public static final int TYPE_ALIAS = 1<<6;
   28.35 -
   28.36 -
   28.37 -	/**
   28.38 -	 * Returns the filter type which is one of the defined type constants.
   28.39 -	 * @return the filter type
   28.40 -	 */
   28.41 -	public int getType();
   28.42 -
   28.43 -
   28.44 -	/**
   28.45 -	 * Resets this filter, i.e. its internal setting is switched back to its
   28.46 -	 * default. Clears all internal used caches too.
   28.47 -	 */
   28.48 -	void reset();
   28.49 -
   28.50 -	/**
   28.51 -	 * Initializes this filter.
   28.52 -	 */
   28.53 -	public void initialize();
   28.54 -
   28.55 -	/**
   28.56 -	 * Convenient method to access the subset hierarchy.
   28.57 -	 * @return the subset hierarchy
   28.58 -	 */
   28.59 -	public IDimension getDimension();
   28.60 -
   28.61 -	/**
   28.62 -	 * Adds the given <code>EffectiveFilter</code> to the list of all affective
   28.63 -	 * filters which affect this subset filter
   28.64 -	 * @param filter a filter which affects this subset filter.
   28.65 -	 */
   28.66 -	public void add(SubsetFilter filter);
   28.67 -	/**
   28.68 -	 * Removes the given <code>EffectiveFilter</code> from the list of all
   28.69 -	 * affective filters which affect this subset filter
   28.70 -	 * @param filter the affective filter to remove
   28.71 -	 */
   28.72 -	public void remove(SubsetFilter filter);
   28.73 -	/**
   28.74 -	 * Adapts this subset filter from the given one. Both filter must be of
   28.75 -	 * same type!
   28.76 -	 * @param from the subset filter to adapt from
   28.77 -	 */
   28.78 -	public void adapt(SubsetFilter from);
   28.79 -
   28.80 -	/**
   28.81 -	 * Creates a deep copy of this subset filter
   28.82 -	 * @return a copy of this subset filter
   28.83 -	 */
   28.84 -	public SubsetFilter copy();
   28.85 -
   28.86 -	/**
   28.87 -	 * Returns the {@link Subset2} to which this filter belongs or
   28.88 -	 * <code>null</code> if this filter isn't bind to a subset yet.
   28.89 -	 * @return the {@link Subset2} to which this filter belongs or
   28.90 -	 * <code>null</code>
   28.91 -	 */
   28.92 -	public Subset2 getSubset();
   28.93 -
   28.94 -	/**
   28.95 -	 * <p>Binds this filter instance to the given {@link Subset2}</p>
   28.96 -	 * <b>NOTE: PLEASE DON'T USE! INTERNAL METHOD </b>
   28.97 -	 * @param subset
   28.98 -	 */
   28.99 -	public void bind(Subset2 subset);
  28.100 -	/**
  28.101 -	 * <p>Releases this filter instance from a previously binded {@link Subset2}</p>
  28.102 -	 * <b>NOTE: PLEASE DON'T USE! INTERNAL METHOD </b>
  28.103 -	 */
  28.104 -	public void unbind();
  28.105 -
  28.106 -	/**
  28.107 -	 * Checks if the internal subset settings are valid.
  28.108 -	 * @throws PaloIOException if internal subset settings are not valid.
  28.109 -	 */
  28.110 -	public void validateSettings() throws PaloJException;
  28.111 -
  28.112 -    }
  28.113 -
  28.114 -    public interface Subset2 {
  28.115 -
  28.116 -	/**
  28.117 -	 * Subset type local, i.e. the subset access is restricted to certain users
  28.118 -	 */
  28.119 -	public static int TYPE_LOCAL = 0;
  28.120 -	/**
  28.121 -	 * Subset type global, i.e. this subset can be read and modified by each
  28.122 -	 * user who can read and modify all database cubes
  28.123 -	 **/
  28.124 -	public static int TYPE_GLOBAL = 1;
  28.125 -
  28.126 -
  28.127 -	/**
  28.128 -	 * Returns the <code>Dimension</code> to which this subset applies.
  28.129 -	 * @return the subset dimension
  28.130 -	 */
  28.131 -	public IDimension getDimension();
  28.132 -
  28.133 -	/**
  28.134 -	 * Returns the indent of this subset
  28.135 -	 * @return subset indent
  28.136 -	 */
  28.137 -	public int getIndent();
  28.138 -	/**
  28.139 -	 * Sets the subset indent
  28.140 -	 * @param indent the new subset indent
  28.141 -	 */
  28.142 -	public void setIndent(int indent);
  28.143 -
  28.144 -	/**
  28.145 -	 * Resets this subset to its defaults, i.e. all filters and aliases are
  28.146 -	 * removed.
  28.147 -	 */
  28.148 -	public void reset();
  28.149 -
  28.150 -	/**
  28.151 -	 * Adds the given subset filter to the list of all subset filters which
  28.152 -	 * should be applied to this subset. Note that this will replace a former
  28.153 -	 * added filter of same type.
  28.154 -	 * @param the subset filter to apply to this subset
  28.155 -	 */
  28.156 -	public void add(SubsetFilter filter);
  28.157 -	/**
  28.158 -	 * Removes the given subset filter from the list of all subset filters which
  28.159 -	 * should be applied to this subset.
  28.160 -	 * @param the subset filter to remove
  28.161 -	 */
  28.162 -	public void remove(SubsetFilter filter);
  28.163 -
  28.164 -	/**
  28.165 -	 * Returns all subset filters of this subset
  28.166 -	 * @return an array of applied subset filters
  28.167 -	 */
  28.168 -	public SubsetFilter[] getFilters();
  28.169 -
  28.170 -	/**
  28.171 -	 * Returns the subset filter which corresponds to the given type
  28.172 -	 * @param type a valid subset filter type
  28.173 -	 * @return the corresponding <code>ISubsetFilter</code> or <code>null</code>
  28.174 -	 */
  28.175 -	public SubsetFilter getFilter(int type);
  28.176 -
  28.177 -	/**
  28.178 -	 * Checks if the subset filter which corresponds to the given type is
  28.179 -	 * active, i.e. {@link #getFilter(int)} returns not <code>null</code>
  28.180 -	 * @param filterType the type of filter to check
  28.181 -	 * @return <code>true</code> if corresponding filter is active,
  28.182 -	 * <code>false</code> otherwise
  28.183 -	 */
  28.184 -	public boolean isActive(int filterType);
  28.185 -
  28.186 -	/**
  28.187 -	 * Saves this subset
  28.188 -	 */
  28.189 -	public void save();
  28.190 -
  28.191 -	/**
  28.192 -	 * Checks if the given <code>Element</code> is inside this subset or not.
  28.193 -	 * @param element the <code>Element</code> to check
  28.194 -	 * @return <code>true</code> if <code>Element</code> is inside this subset,
  28.195 -	 * <code>false</code> if not.
  28.196 -	 */
  28.197 -	public boolean contains(IElement element);
  28.198 -
  28.199 -	/**
  28.200 -	 * Returns all <code>Elements</code> of this subset.
  28.201 -	 * @return all <code>Elements</code> of this subset
  28.202 -	 */
  28.203 -	public IElement[] getElements();
  28.204 -
  28.205 -	/**
  28.206 -	 * Returns all root nodes of this subset. To retrieve all defined
  28.207 -	 * <code>ElementNodes</code> the root nodes should be traversed.
  28.208 -	 * @return
  28.209 -	 */
  28.210 -	public IElement[] getRootNodes();
  28.211 -
  28.212 -//	/**
  28.213 -//	 * Applies the defined filters to this subset. Call this to reflect the
  28.214 -//	 * actual status of the subset.
  28.215 -//	 */
  28.216 -//	public void applyFilters();
  28.217 -	/**
  28.218 -	 * <p>Marks the subset as being modified. The consequence of this method is
  28.219 -	 * that all registered filters are applied the next time the subset elements
  28.220 -	 * are requested.</p>
  28.221 -	 */
  28.222 -	public void modified();
  28.223 -
  28.224 -	/**
  28.225 -	 * Renames this subset.
  28.226 -	 * @param newName the new subset name
  28.227 -	 */
  28.228 -	public void rename(String newName);
  28.229 -
  28.230 -	/**
  28.231 -	 * Returns the subset type which is one of the predefined type constants.
  28.232 -	 * @return the subset type
  28.233 -	 */
  28.234 -	public int getType();
  28.235 -
  28.236 -        public String getName();
  28.237 -
  28.238 -	/**
  28.239 -	 * Creates a deep copy of this subset.
  28.240 -	 * @return the subset copy
  28.241 -	 */
  28.242 -	public Subset2 copy();
  28.243 -
  28.244 -	/**
  28.245 -	 * Sets an optional description for the subset. Specifying <code>null</code>
  28.246 -	 * deletes the description.
  28.247 -	 * @param description a description of the subset
  28.248 -	 */
  28.249 -	public void setDescription(String description);
  28.250 -	/**
  28.251 -	 * Returns the subset description or <code>null</code> if none was set.
  28.252 -	 * @return the subset description or <code>null</code>
  28.253 -	 */
  28.254 -	public String getDescription();
  28.255 -
  28.256 -	public String getDefinition();
  28.257 -
  28.258 -	public Subset2 setDefinition(String definition);
  28.259 -
  28.260 -	public boolean validate();
  28.261 -    }
  28.262 -
  28.263  
  28.264      private Subset2 subset;
  28.265  
    29.1 --- a/src/org/palooca/dialogs/resources/ConsolidationFactorDialog.properties	Fri Aug 08 13:19:03 2014 +0200
    29.2 +++ b/src/org/palooca/dialogs/resources/ConsolidationFactorDialog.properties	Tue Sep 30 14:57:50 2014 +0200
    29.3 @@ -1,2 +1,1 @@
    29.4 -
    29.5 -edtFactor.text=jTextField1
    29.6 +edtFactor1.text=jTextField1
    30.1 --- a/src/org/palooca/dialogs/resources/SubsetModeller.properties	Fri Aug 08 13:19:03 2014 +0200
    30.2 +++ b/src/org/palooca/dialogs/resources/SubsetModeller.properties	Tue Sep 30 14:57:50 2014 +0200
    30.3 @@ -1,5 +1,3 @@
    30.4 -jButton2.text=jButton2
    30.5 -jButton3.text=jButton3
    30.6  #NOI18N
    30.7  chkActivateHierarchy.font=Tahoma-Bold-11
    30.8  #NOI18N
    30.9 @@ -12,3 +10,4 @@
   30.10  #NOI18N
   30.11  btnSubsetEdit.icon=/images/subsetEdit.PNG
   30.12  txtFormula.text=
   30.13 +btnClose.text=Close
    31.1 --- a/src/org/palooca/network/ConnectionHandler.java	Fri Aug 08 13:19:03 2014 +0200
    31.2 +++ b/src/org/palooca/network/ConnectionHandler.java	Tue Sep 30 14:57:50 2014 +0200
    31.3 @@ -143,7 +143,7 @@
    31.4              
    31.5              if (info != null) {
    31.6                  lastConnectionInfo = info;
    31.7 -                if (info.getState() == ConnectionState.Uninitialized) {
    31.8 +                if (info.getState() != ConnectionState.Connected) {
    31.9                      return info.connect(null);
   31.10                  } else {
   31.11                      return info.getConnection();
    32.1 --- a/src/org/palooca/network/ConnectionInfo.java	Fri Aug 08 13:19:03 2014 +0200
    32.2 +++ b/src/org/palooca/network/ConnectionInfo.java	Tue Sep 30 14:57:50 2014 +0200
    32.3 @@ -36,6 +36,7 @@
    32.4  import com.jedox.palojlib.main.ConnectionConfiguration;
    32.5  import com.jedox.palojlib.main.ConnectionManager;
    32.6  import org.palooca.PalOOCaManager;
    32.7 +import org.palooca.RunnableWarning;
    32.8  import org.palooca.config.XMLHelper;
    32.9  import org.palooca.olap4j.Olap4jConnection;
   32.10  
   32.11 @@ -60,6 +61,8 @@
   32.12      private String password;
   32.13      private int type = TYPE_HTTP;
   32.14      private boolean autoLogin = false;
   32.15 +    private int retryInterval = 1000; //1s
   32.16 +    private long lastTry = 0;
   32.17  
   32.18      public boolean isAutoLogin() {
   32.19          return autoLogin;
   32.20 @@ -287,10 +290,14 @@
   32.21  
   32.22      public IConnection connect(Component comp, int timeout) {
   32.23          if (state != ConnectionState.Connected) {
   32.24 -            if (!connect(timeout)) {
   32.25 -                JOptionPane.showMessageDialog(comp,
   32.26 -                        String.format(owner.getResourceBundle().getString("Connection_Failed_Text"), host, port),
   32.27 -                        owner.getResourceBundle().getString("Connection_Failed_Caption"), JOptionPane.WARNING_MESSAGE);
   32.28 +            ConnectionState oldState = state;
   32.29 +            if (System.currentTimeMillis() - lastTry > retryInterval) {
   32.30 +                lastTry = System.currentTimeMillis();
   32.31 +                if (!connect(timeout) && state != oldState) {
   32.32 +                    RunnableWarning modal = new RunnableWarning(String.format(owner.getResourceBundle().getString("Connection_Failed_Text"), host, port),owner.getResourceBundle().getString("Connection_Failed_Caption"));
   32.33 +                    Thread thread = new Thread(modal);
   32.34 +                    thread.start();
   32.35 +                }
   32.36              }
   32.37          }
   32.38          return connection;
    33.1 --- a/src/org/palooca/olap4j/Olap4jConnection.java	Fri Aug 08 13:19:03 2014 +0200
    33.2 +++ b/src/org/palooca/olap4j/Olap4jConnection.java	Tue Sep 30 14:57:50 2014 +0200
    33.3 @@ -28,7 +28,7 @@
    33.4  
    33.5      @Override
    33.6      public void close(boolean bln) throws PaloException {
    33.7 -        throw new UnsupportedOperationException("Not supported yet.");
    33.8 +        close();
    33.9      }
   33.10  
   33.11      @Override
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/src/org/palooca/subsets/Subset2.java	Tue Sep 30 14:57:50 2014 +0200
    34.3 @@ -0,0 +1,162 @@
    34.4 +/*
    34.5 + * To change this template, choose Tools | Templates
    34.6 + * and open the template in the editor.
    34.7 + */
    34.8 +
    34.9 +package org.palooca.subsets;
   34.10 +
   34.11 +import com.jedox.palojlib.interfaces.IDatabase;
   34.12 +import com.jedox.palojlib.interfaces.IDimension;
   34.13 +import com.jedox.palojlib.interfaces.IElement;
   34.14 +
   34.15 +/**
   34.16 + *
   34.17 + * @author chris
   34.18 + */
   34.19 +public interface Subset2 {
   34.20 +
   34.21 +    /**
   34.22 +	 * Subset type local, i.e. the subset access is restricted to certain users
   34.23 +	 */
   34.24 +	public static int TYPE_LOCAL = 0;
   34.25 +	/**
   34.26 +	 * Subset type global, i.e. this subset can be read and modified by each
   34.27 +	 * user who can read and modify all database cubes
   34.28 +	 **/
   34.29 +	public static int TYPE_GLOBAL = 1;
   34.30 +
   34.31 +        public static String namespace = "http://www.jedox.com/palo/SubsetXML";
   34.32 +
   34.33 +
   34.34 +	/**
   34.35 +	 * Returns the <code>Dimension</code> to which this subset applies.
   34.36 +	 * @return the subset dimension
   34.37 +	 */
   34.38 +	public IDimension getDimension();
   34.39 +
   34.40 +	/**
   34.41 +	 * Returns the indent of this subset
   34.42 +	 * @return subset indent
   34.43 +	 */
   34.44 +	public int getIndent();
   34.45 +	/**
   34.46 +	 * Sets the subset indent
   34.47 +	 * @param indent the new subset indent
   34.48 +	 */
   34.49 +	public void setIndent(int indent);
   34.50 +
   34.51 +	/**
   34.52 +	 * Resets this subset to its defaults, i.e. all filters and aliases are
   34.53 +	 * removed.
   34.54 +	 */
   34.55 +	public void reset();
   34.56 +
   34.57 +	/**
   34.58 +	 * Adds the given subset filter to the list of all subset filters which
   34.59 +	 * should be applied to this subset. Note that this will replace a former
   34.60 +	 * added filter of same type.
   34.61 +	 * @param the subset filter to apply to this subset
   34.62 +	 */
   34.63 +	public void add(SubsetFilter filter);
   34.64 +	/**
   34.65 +	 * Removes the given subset filter from the list of all subset filters which
   34.66 +	 * should be applied to this subset.
   34.67 +	 * @param the subset filter to remove
   34.68 +	 */
   34.69 +	public void remove(SubsetFilter filter);
   34.70 +
   34.71 +	/**
   34.72 +	 * Returns all subset filters of this subset
   34.73 +	 * @return an array of applied subset filters
   34.74 +	 */
   34.75 +	public SubsetFilter[] getFilters();
   34.76 +
   34.77 +	/**
   34.78 +	 * Returns the subset filter which corresponds to the given type
   34.79 +	 * @param type a valid subset filter type
   34.80 +	 * @return the corresponding <code>ISubsetFilter</code> or <code>null</code>
   34.81 +	 */
   34.82 +	public SubsetFilter getFilter(int type);
   34.83 +
   34.84 +	/**
   34.85 +	 * Checks if the subset filter which corresponds to the given type is
   34.86 +	 * active, i.e. {@link #getFilter(int)} returns not <code>null</code>
   34.87 +	 * @param filterType the type of filter to check
   34.88 +	 * @return <code>true</code> if corresponding filter is active,
   34.89 +	 * <code>false</code> otherwise
   34.90 +	 */
   34.91 +	public boolean isActive(int filterType);
   34.92 +
   34.93 +	/**
   34.94 +	 * Saves this subset
   34.95 +	 */
   34.96 +	public void save();
   34.97 +
   34.98 +	/**
   34.99 +	 * Checks if the given <code>Element</code> is inside this subset or not.
  34.100 +	 * @param element the <code>Element</code> to check
  34.101 +	 * @return <code>true</code> if <code>Element</code> is inside this subset,
  34.102 +	 * <code>false</code> if not.
  34.103 +	 */
  34.104 +	public boolean contains(IElement element);
  34.105 +
  34.106 +	/**
  34.107 +	 * Returns all <code>Elements</code> of this subset.
  34.108 +	 * @return all <code>Elements</code> of this subset
  34.109 +	 */
  34.110 +	public IElement[] getElements();
  34.111 +
  34.112 +	/**
  34.113 +	 * Returns all root nodes of this subset. To retrieve all defined
  34.114 +	 * <code>ElementNodes</code> the root nodes should be traversed.
  34.115 +	 * @return
  34.116 +	 */
  34.117 +	public IElement[] getRootNodes();
  34.118 +
  34.119 +//	/**
  34.120 +//	 * Applies the defined filters to this subset. Call this to reflect the
  34.121 +//	 * actual status of the subset.
  34.122 +//	 */
  34.123 +//	public void applyFilters();
  34.124 +	/**
  34.125 +	 * <p>Marks the subset as being modified. The consequence of this method is
  34.126 +	 * that all registered filters are applied the next time the subset elements
  34.127 +	 * are requested.</p>
  34.128 +	 */
  34.129 +	public void modified();
  34.130 +
  34.131 +	/**
  34.132 +	 * Renames this subset.
  34.133 +	 * @param newName the new subset name
  34.134 +	 */
  34.135 +	public void rename(String newName);
  34.136 +
  34.137 +	/**
  34.138 +	 * Returns the subset type which is one of the predefined type constants.
  34.139 +	 * @return the subset type
  34.140 +	 */
  34.141 +	public int getType();
  34.142 +
  34.143 +        public String getName();
  34.144 +
  34.145 +	/**
  34.146 +	 * Creates a deep copy of this subset.
  34.147 +	 * @return the subset copy
  34.148 +	 */
  34.149 +	public Subset2 copy();
  34.150 +
  34.151 +	public String getDefinition();
  34.152 +
  34.153 +	public Subset2 setDefinition(String definition);
  34.154 +
  34.155 +	public boolean validate();
  34.156 +
  34.157 +        public IDatabase getDatabase();
  34.158 +
  34.159 +        public Long getId();
  34.160 +
  34.161 +        public void setId(Long id);
  34.162 +
  34.163 +        public String getUsername();
  34.164 +
  34.165 +}
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/src/org/palooca/subsets/SubsetFilter.java	Tue Sep 30 14:57:50 2014 +0200
    35.3 @@ -0,0 +1,114 @@
    35.4 +/*
    35.5 + * To change this template, choose Tools | Templates
    35.6 + * and open the template in the editor.
    35.7 + */
    35.8 +
    35.9 +package org.palooca.subsets;
   35.10 +
   35.11 +import com.jedox.palojlib.exceptions.PaloJException;
   35.12 +import com.jedox.palojlib.interfaces.IDimension;
   35.13 +import org.jdom2.Element;
   35.14 +
   35.15 +/**
   35.16 + *
   35.17 + * @author chris
   35.18 + */
   35.19 +public interface SubsetFilter {
   35.20 +
   35.21 +    /* supported types */
   35.22 +	/** type constant for textual filter */
   35.23 +	public static final int TYPE_TEXT = 1<<0;
   35.24 +	/** type constant for hierarchical filter */
   35.25 +	public static final int TYPE_HIERARCHICAL = 1<<1;
   35.26 +	/** type constant for picklist filter */
   35.27 +	public static final int TYPE_PICKLIST = 1<<2;
   35.28 +	/** type constant for data filter */
   35.29 +	public static final int TYPE_DATA = 1<<3;
   35.30 +	/** type constant for sorting filter */
   35.31 +	public static final int TYPE_SORTING = 1<<4;
   35.32 +	/** type constant for attribute filter */
   35.33 +	public static final int TYPE_ATTRIBUTE = 1<<5;
   35.34 +	/** type constant for alias filter */
   35.35 +	public static final int TYPE_ALIAS = 1<<6;
   35.36 +
   35.37 +
   35.38 +	/**
   35.39 +	 * Returns the filter type which is one of the defined type constants.
   35.40 +	 * @return the filter type
   35.41 +	 */
   35.42 +	public int getType();
   35.43 +
   35.44 +
   35.45 +	/**
   35.46 +	 * Resets this filter, i.e. its internal setting is switched back to its
   35.47 +	 * default. Clears all internal used caches too.
   35.48 +	 */
   35.49 +	void reset();
   35.50 +
   35.51 +	/**
   35.52 +	 * Initializes this filter.
   35.53 +	 */
   35.54 +	public void initialize();
   35.55 +
   35.56 +	/**
   35.57 +	 * Convenient method to access the subset hierarchy.
   35.58 +	 * @return the subset hierarchy
   35.59 +	 */
   35.60 +	public IDimension getDimension();
   35.61 +
   35.62 +	/**
   35.63 +	 * Adds the given <code>EffectiveFilter</code> to the list of all affective
   35.64 +	 * filters which affect this subset filter
   35.65 +	 * @param filter a filter which affects this subset filter.
   35.66 +	 */
   35.67 +	public void add(SubsetFilter filter);
   35.68 +	/**
   35.69 +	 * Removes the given <code>EffectiveFilter</code> from the list of all
   35.70 +	 * affective filters which affect this subset filter
   35.71 +	 * @param filter the affective filter to remove
   35.72 +	 */
   35.73 +	public void remove(SubsetFilter filter);
   35.74 +	/**
   35.75 +	 * Adapts this subset filter from the given one. Both filter must be of
   35.76 +	 * same type!
   35.77 +	 * @param from the subset filter to adapt from
   35.78 +	 */
   35.79 +	public void adapt(SubsetFilter from);
   35.80 +
   35.81 +	/**
   35.82 +	 * Creates a deep copy of this subset filter
   35.83 +	 * @return a copy of this subset filter
   35.84 +	 */
   35.85 +	public SubsetFilter copy();
   35.86 +
   35.87 +	/**
   35.88 +	 * Returns the {@link Subset2} to which this filter belongs or
   35.89 +	 * <code>null</code> if this filter isn't bind to a subset yet.
   35.90 +	 * @return the {@link Subset2} to which this filter belongs or
   35.91 +	 * <code>null</code>
   35.92 +	 */
   35.93 +	public Subset2 getSubset();
   35.94 +
   35.95 +	/**
   35.96 +	 * <p>Binds this filter instance to the given {@link Subset2}</p>
   35.97 +	 * <b>NOTE: PLEASE DON'T USE! INTERNAL METHOD </b>
   35.98 +	 * @param subset
   35.99 +	 */
  35.100 +	public void bind(Subset2 subset);
  35.101 +	/**
  35.102 +	 * <p>Releases this filter instance from a previously binded {@link Subset2}</p>
  35.103 +	 * <b>NOTE: PLEASE DON'T USE! INTERNAL METHOD </b>
  35.104 +	 */
  35.105 +	public void unbind();
  35.106 +
  35.107 +	/**
  35.108 +	 * Checks if the internal subset settings are valid.
  35.109 +	 * @throws PaloIOException if internal subset settings are not valid.
  35.110 +	 */
  35.111 +	public void validateSettings() throws PaloJException;
  35.112 +
  35.113 +        public Element serializeAsXML();
  35.114 +
  35.115 +      
  35.116 +
  35.117 +}
    36.1 --- a/src/palooca.update.xml	Fri Aug 08 13:19:03 2014 +0200
    36.2 +++ b/src/palooca.update.xml	Tue Sep 30 14:57:50 2014 +0200
    36.3 @@ -1,6 +1,6 @@
    36.4  <description xmlns="http://openoffice.org/extensions/update/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
    36.5  	<identifier value="PaloForOpenOffice"/>
    36.6 -	<version value="5.1.0"/>
    36.7 +	<version value="5.2.0"/>
    36.8  	<update-download>
    36.9  		<src xlink:href="http://ursula.proclos.com/paloo/PalOOCa.oxt"/>
   36.10  	</update-download>