diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b9feb24da4ec2e083f56dcdf04f68aca45397170
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/java_gui/dist/
+/java_gui/build/
\ No newline at end of file
diff --git a/java_gui/README.txt b/java_gui/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..653f6bbe68e87fe05b2903f8e0ed15a1e3fc1ec4
--- /dev/null
+++ b/java_gui/README.txt
@@ -0,0 +1 @@
+Tested with Netbeans 8.0
\ No newline at end of file
diff --git a/java_gui/_COPY_bgslibrary.exe_HERE_ b/java_gui/_COPY_bgslibrary.exe_HERE_
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/java_gui/bgslibrary_gui.jar b/java_gui/bgslibrary_gui.jar
new file mode 100644
index 0000000000000000000000000000000000000000..21d68b036451a8d759cc64cd9ae1a7eb32fb96df
Binary files /dev/null and b/java_gui/bgslibrary_gui.jar differ
diff --git a/java_gui/bgslibrary_gui.properties b/java_gui/bgslibrary_gui.properties
new file mode 100644
index 0000000000000000000000000000000000000000..380fae5e0f7f91cefa75492e6e5cbadfd5c7f624
--- /dev/null
+++ b/java_gui/bgslibrary_gui.properties
@@ -0,0 +1,36 @@
+base.path = ./
+config.path = config/
+
+run.path = _
+run.path = run_video.bat
+run.path = run_camera.bat
+
+bgs.methods = _
+bgs.methods = FrameDifferenceBGS
+bgs.methods = StaticFrameDifferenceBGS
+bgs.methods = WeightedMovingMeanBGS
+bgs.methods = WeightedMovingVarianceBGS
+bgs.methods = MixtureOfGaussianV1BGS
+bgs.methods = MixtureOfGaussianV2BGS
+bgs.methods = AdaptiveBackgroundLearning
+bgs.methods = GMG
+bgs.methods = DPAdaptiveMedianBGS
+bgs.methods = DPGrimsonGMMBGS
+bgs.methods = DPZivkovicAGMMBGS
+bgs.methods = DPMeanBGS
+bgs.methods = DPWrenGABGS
+bgs.methods = DPPratiMediodBGS
+bgs.methods = DPEigenbackgroundBGS
+bgs.methods = T2FGMM_UM
+bgs.methods = T2FGMM_UV
+bgs.methods = T2FMRF_UM
+bgs.methods = T2FMRF_UV
+bgs.methods = FuzzySugenoIntegral
+bgs.methods = FuzzyChoquetIntegral
+bgs.methods = MultiLayerBGS
+bgs.methods = VuMeter
+bgs.methods = LBSimpleGaussian
+bgs.methods = LBFuzzyGaussian
+bgs.methods = LBMixtureOfGaussians
+bgs.methods = LBAdaptiveSOM
+bgs.methods = LBFuzzyAdaptiveSOM
diff --git a/java_gui/build.xml b/java_gui/build.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aa927ea795ac07bf8da6b4cc67a79c3427e1695a
--- /dev/null
+++ b/java_gui/build.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="bgslibrary_gui" default="default" basedir=".">
+    <description>Builds, tests, and runs the project bgslibrary_gui.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar:                  JAR building
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="bgslibrary_gui-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>
diff --git a/java_gui/config/FrameProcessor.xml b/java_gui/config/FrameProcessor.xml
new file mode 100644
index 0000000000000000000000000000000000000000..09e7c8bd1c57104e72b907851b73582da8f4b37c
--- /dev/null
+++ b/java_gui/config/FrameProcessor.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<opencv_storage>
+<tictoc>""</tictoc>
+<enablePreProcessor>1</enablePreProcessor>
+<enableForegroundMaskAnalysis>0</enableForegroundMaskAnalysis>
+<enableFrameDifferenceBGS>1</enableFrameDifferenceBGS>
+<enableStaticFrameDifferenceBGS>0</enableStaticFrameDifferenceBGS>
+<enableWeightedMovingMeanBGS>0</enableWeightedMovingMeanBGS>
+<enableWeightedMovingVarianceBGS>0</enableWeightedMovingVarianceBGS>
+<enableMixtureOfGaussianV1BGS>0</enableMixtureOfGaussianV1BGS>
+<enableMixtureOfGaussianV2BGS>0</enableMixtureOfGaussianV2BGS>
+<enableAdaptiveBackgroundLearning>0</enableAdaptiveBackgroundLearning>
+<enableGMG>0</enableGMG>
+<enableDPAdaptiveMedianBGS>0</enableDPAdaptiveMedianBGS>
+<enableDPGrimsonGMMBGS>0</enableDPGrimsonGMMBGS>
+<enableDPZivkovicAGMMBGS>0</enableDPZivkovicAGMMBGS>
+<enableDPMeanBGS>0</enableDPMeanBGS>
+<enableDPWrenGABGS>0</enableDPWrenGABGS>
+<enableDPPratiMediodBGS>0</enableDPPratiMediodBGS>
+<enableDPEigenbackgroundBGS>0</enableDPEigenbackgroundBGS>
+<enableDPTextureBGS>0</enableDPTextureBGS>
+<enableT2FGMM_UM>0</enableT2FGMM_UM>
+<enableT2FGMM_UV>0</enableT2FGMM_UV>
+<enableT2FMRF_UM>0</enableT2FMRF_UM>
+<enableT2FMRF_UV>0</enableT2FMRF_UV>
+<enableFuzzySugenoIntegral>0</enableFuzzySugenoIntegral>
+<enableFuzzyChoquetIntegral>0</enableFuzzyChoquetIntegral>
+<enableLBSimpleGaussian>0</enableLBSimpleGaussian>
+<enableLBFuzzyGaussian>0</enableLBFuzzyGaussian>
+<enableLBMixtureOfGaussians>0</enableLBMixtureOfGaussians>
+<enableLBAdaptiveSOM>0</enableLBAdaptiveSOM>
+<enableLBFuzzyAdaptiveSOM>0</enableLBFuzzyAdaptiveSOM>
+<enableLbpMrf>0</enableLbpMrf>
+<enableMultiLayerBGS>0</enableMultiLayerBGS>
+<enableVuMeter>0</enableVuMeter>
+<enableKDE>0</enableKDE>
+<enableIMBS>0</enableIMBS>
+<enableMultiCueBGS>0</enableMultiCueBGS>
+<enableSigmaDeltaBGS>0</enableSigmaDeltaBGS>
+</opencv_storage>
diff --git a/java_gui/config/PreProcessor.xml b/java_gui/config/PreProcessor.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e58b3187a702e2b1fc36c4576aff75e7b7f4a9cb
--- /dev/null
+++ b/java_gui/config/PreProcessor.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<opencv_storage>
+<equalizeHist>0</equalizeHist>
+<gaussianBlur>0</gaussianBlur>
+<enableShow>1</enableShow>
+</opencv_storage>
diff --git a/java_gui/config/VideoCapture.xml b/java_gui/config/VideoCapture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..60dd9aa81010d78759f5986f0aa5a2876da25f63
--- /dev/null
+++ b/java_gui/config/VideoCapture.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<opencv_storage>
+<stopAt>0</stopAt>
+<input_resize_percent>100</input_resize_percent>
+<enableFlip>0</enableFlip>
+<use_roi>0</use_roi>
+<roi_defined>0</roi_defined>
+<roi_x0>0</roi_x0>
+<roi_y0>0</roi_y0>
+<roi_x1>0</roi_x1>
+<roi_y1>0</roi_y1>
+<showOutput>1</showOutput>
+</opencv_storage>
diff --git a/java_gui/images/bgslibrary_gui_screen01.png b/java_gui/images/bgslibrary_gui_screen01.png
new file mode 100644
index 0000000000000000000000000000000000000000..34ca07754cda621c06f7f593b4db50b8301e7d3c
Binary files /dev/null and b/java_gui/images/bgslibrary_gui_screen01.png differ
diff --git a/java_gui/images/bgslibrary_gui_screen02.png b/java_gui/images/bgslibrary_gui_screen02.png
new file mode 100644
index 0000000000000000000000000000000000000000..acd112f3557b1ac6dae21f25bb399b1eda440256
Binary files /dev/null and b/java_gui/images/bgslibrary_gui_screen02.png differ
diff --git a/java_gui/images/bgslibrary_gui_screen03.png b/java_gui/images/bgslibrary_gui_screen03.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ef88b5b356e520162a2047e7500cbd26bdca28a
Binary files /dev/null and b/java_gui/images/bgslibrary_gui_screen03.png differ
diff --git a/java_gui/images/bgslibrary_gui_screen04.png b/java_gui/images/bgslibrary_gui_screen04.png
new file mode 100644
index 0000000000000000000000000000000000000000..345b1dfaf4f55a1ed009f4e139f02f60715e7167
Binary files /dev/null and b/java_gui/images/bgslibrary_gui_screen04.png differ
diff --git a/java_gui/images/logo.jpg b/java_gui/images/logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b14cadb7d6a0dedcbdbf535ae7f2f6adcc11cd6d
Binary files /dev/null and b/java_gui/images/logo.jpg differ
diff --git a/java_gui/lib/commons-configuration-1.8.jar b/java_gui/lib/commons-configuration-1.8.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ae9ae9969b634f7be3e04db3d129216d473ad798
Binary files /dev/null and b/java_gui/lib/commons-configuration-1.8.jar differ
diff --git a/java_gui/lib/commons-io-2.3.jar b/java_gui/lib/commons-io-2.3.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d5a07718915c714ca1a8ced57c4a69336d3c02d7
Binary files /dev/null and b/java_gui/lib/commons-io-2.3.jar differ
diff --git a/java_gui/lib/commons-lang-2.6.jar b/java_gui/lib/commons-lang-2.6.jar
new file mode 100644
index 0000000000000000000000000000000000000000..98467d3a653ebad776ffa3542efeb9732fe0b482
Binary files /dev/null and b/java_gui/lib/commons-lang-2.6.jar differ
diff --git a/java_gui/lib/commons-logging-1.1.1.jar b/java_gui/lib/commons-logging-1.1.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..8758a96b70cfba9466bacca19c0d99b87cf53734
Binary files /dev/null and b/java_gui/lib/commons-logging-1.1.1.jar differ
diff --git a/java_gui/lib/swingx-all-1.6.3.jar b/java_gui/lib/swingx-all-1.6.3.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b6f4414d8a7ec344b6fbc3ee4d2ae700262fe95a
Binary files /dev/null and b/java_gui/lib/swingx-all-1.6.3.jar differ
diff --git a/java_gui/lib/swingx-beaninfo-1.6.3.jar b/java_gui/lib/swingx-beaninfo-1.6.3.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0e9db857386c5ff0d9132348de4f63f9ae93814a
Binary files /dev/null and b/java_gui/lib/swingx-beaninfo-1.6.3.jar differ
diff --git a/java_gui/manifest.mf b/java_gui/manifest.mf
new file mode 100644
index 0000000000000000000000000000000000000000..328e8e5bc3b7f1f7bad2bc0751a933e00c801983
--- /dev/null
+++ b/java_gui/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/java_gui/nbproject/build-impl.xml b/java_gui/nbproject/build-impl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fe85de88a6792e577aa6f133d18132b08b42d01d
--- /dev/null
+++ b/java_gui/nbproject/build-impl.xml
@@ -0,0 +1,1396 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - test compilation
+  - test execution
+  - test debugging
+  - applet
+  - cleanup
+
+        -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="bgslibrary_gui-impl">
+    <fail message="Please build using Ant 1.8.0 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.8.0"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+    <!-- 
+                ======================
+                INITIALIZATION SECTION 
+                ======================
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/config.properties"/>
+        <property file="nbproject/private/configs/${config}.properties"/>
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/configs/${config}.properties"/>
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <property name="platform.java" value="${java.home}/bin/java"/>
+        <available file="${manifest.file}" property="manifest.available"/>
+        <condition property="splashscreen.available">
+            <and>
+                <not>
+                    <equals arg1="${application.splash}" arg2="" trim="true"/>
+                </not>
+                <available file="${application.splash}"/>
+            </and>
+        </condition>
+        <condition property="main.class.available">
+            <and>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="profile.available">
+            <and>
+                <isset property="javac.profile"/>
+                <length length="0" string="${javac.profile}" when="greater"/>
+                <matches pattern="1\.[89](\..*)?" string="${javac.source}"/>
+            </and>
+        </condition>
+        <condition property="do.archive">
+            <or>
+                <not>
+                    <istrue value="${jar.archive.disabled}"/>
+                </not>
+                <istrue value="${not.archive.disabled}"/>
+            </or>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="do.archive"/>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available">
+            <and>
+                <isset property="manifest.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+main.class.available">
+            <and>
+                <isset property="main.class.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+splashscreen.available">
+            <and>
+                <isset property="splashscreen.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+profile.available">
+            <and>
+                <isset property="profile.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or/>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <and>
+                <isset property="javadoc.preview"/>
+                <isfalse value="${javadoc.preview}"/>
+            </and>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="run.jvmargs.ide" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+        <property name="application.args" value=""/>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="do.depend" value="false"/>
+        <condition property="do.depend.true">
+            <istrue value="${do.depend}"/>
+        </condition>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <and>
+                <isset property="endorsed.classpath"/>
+                <not>
+                    <equals arg1="${endorsed.classpath}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
+            <isset property="profile.available"/>
+        </condition>
+        <condition else="false" property="jdkBug6558476">
+            <and>
+                <matches pattern="1\.[56]" string="${java.specification.version}"/>
+                <not>
+                    <os family="unix"/>
+                </not>
+            </and>
+        </condition>
+        <property name="javac.fork" value="${jdkBug6558476}"/>
+        <property name="jar.index" value="false"/>
+        <property name="jar.index.metainf" value="${jar.index}"/>
+        <property name="copylibs.rebase" value="true"/>
+        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
+        <condition property="junit.available">
+            <or>
+                <available classname="org.junit.Test" classpath="${run.test.classpath}"/>
+                <available classname="junit.framework.Test" classpath="${run.test.classpath}"/>
+            </or>
+        </condition>
+        <condition property="testng.available">
+            <available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/>
+        </condition>
+        <condition property="junit+testng.available">
+            <and>
+                <istrue value="${junit.available}"/>
+                <istrue value="${testng.available}"/>
+            </and>
+        </condition>
+        <condition else="testng" property="testng.mode" value="mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+        <condition else="" property="testng.debug.mode" value="-mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <mkdir dir="@{apgeneratedsrcdir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <compilerarg value="-processorpath"/>
+                    <compilerarg path="@{processorpath}:${empty.dir}"/>
+                    <compilerarg line="${ap.processors.internal}"/>
+                    <compilerarg line="${annotation.processing.processor.options}"/>
+                    <compilerarg value="-s"/>
+                    <compilerarg path="@{apgeneratedsrcdir}"/>
+                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
+                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
+                <delete>
+                    <files includesfile="${javac.includesfile.binary}"/>
+                </delete>
+                <delete>
+                    <fileset file="${javac.includesfile.binary}"/>
+                </delete>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-init">
+        <condition else="false" property="nb.junit.batch" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <not>
+                    <isset property="test.method"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="false" property="nb.junit.single" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <isset property="test.method"/>
+            </and>
+        </condition>
+    </target>
+    <target name="-init-test-properties">
+        <property name="test.binaryincludes" value="&lt;nothing&gt;"/>
+        <property name="test.binarytestincludes" value=""/>
+        <property name="test.binaryexcludes" value=""/>
+    </target>
+    <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
+    <target if="${testng.available}" name="-init-macrodef-testng">
+        <macrodef name="testng" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}">
+                    <isset property="test.method"/>
+                </condition>
+                <union id="test.set"/>
+                <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
+                <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="bgslibrary_gui" testname="TestNG tests" workingDir="${work.dir}">
+                    <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
+                    <propertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </propertyset>
+                    <customize/>
+                </testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-test-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <echo>No tests executed.</echo>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test">
+        <macrodef name="test" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <sequential>
+                <j2seproject3:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${run.jvmargs}"/>
+                        <jvmarg line="${run.jvmargs.ide}"/>
+                    </customize>
+                </j2seproject3:test-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
+        <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:junit-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${testng.available}" name="-init-macrodef-testng-debug">
+        <macrodef name="testng-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element name="customize2" optional="true"/>
+            <sequential>
+                <condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
+                    <isset property="test.method"/>
+                </condition>
+                <condition else="-suitename bgslibrary_gui -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
+                    <matches pattern=".*\.xml" string="@{testClass}"/>
+                </condition>
+                <delete dir="${build.test.results.dir}" quiet="true"/>
+                <mkdir dir="${build.test.results.dir}"/>
+                <j2seproject3:debug classname="org.testng.TestNG" classpath="${debug.test.classpath}">
+                    <customize>
+                        <customize2/>
+                        <jvmarg value="-ea"/>
+                        <arg line="${testng.debug.mode}"/>
+                        <arg line="-d ${build.test.results.dir}"/>
+                        <arg line="-listener org.testng.reporters.VerboseReporter"/>
+                        <arg line="${testng.cmd.args}"/>
+                    </customize>
+                </j2seproject3:debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl">
+        <macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element implicit="true" name="customize2" optional="true"/>
+            <sequential>
+                <j2seproject3:testng-debug testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2/>
+                </j2seproject3:testng-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <j2seproject3:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${run.jvmargs}"/>
+                        <jvmarg line="${run.jvmargs.ide}"/>
+                    </customize>
+                </j2seproject3:test-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <j2seproject3:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2>
+                        <syspropertyset>
+                            <propertyref prefix="test-sys-prop."/>
+                            <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                        </syspropertyset>
+                    </customize2>
+                </j2seproject3:testng-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/>
+    <!--
+                pre NB7.2 profiling section; consider it deprecated
+            -->
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/>
+    <target if="profiler.info.jvmargs.agent" name="-profile-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-init-macrodef-profile">
+        <macrodef name="resolve">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${env.@{value}}"/>
+            </sequential>
+        </macrodef>
+        <macrodef name="profile">
+            <attribute default="${main.class}" name="classname"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property environment="env"/>
+                <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
+                <java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
+                    <jvmarg line="${profiler.info.jvmargs}"/>
+                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+                    <arg line="${application.args}"/>
+                    <classpath>
+                        <path path="${run.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" if="profiler.info.jvmargs.agent" name="-profile-init-check">
+        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
+        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
+    </target>
+    <!--
+                end of pre NB7.2 profiling section
+            -->
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <attribute default="" name="stopclassname"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
+            <attribute default="jvm" name="jvm"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-copylibs">
+        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${manifest.file}" name="manifest"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+                <pathconvert property="run.classpath.without.build.classes.dir">
+                    <path path="${run.classpath}"/>
+                    <map from="${build.classes.dir.resolved}" to=""/>
+                </pathconvert>
+                <pathconvert pathsep=" " property="jar.classpath">
+                    <path path="${run.classpath.without.build.classes.dir}"/>
+                    <chainedmapper>
+                        <flattenmapper/>
+                        <filtermapper>
+                            <replacestring from=" " to="%20"/>
+                        </filtermapper>
+                        <globmapper from="*" to="lib/*"/>
+                    </chainedmapper>
+                </pathconvert>
+                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+                <copylibs compress="${jar.compress}" 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}">
+                    <fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+                    <manifest>
+                        <attribute name="Class-Path" value="${jar.classpath}"/>
+                        <customize/>
+                    </manifest>
+                </copylibs>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
+                <j2seproject1:fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="-init-ap-cmdline-properties">
+        <property name="annotation.processing.enabled" value="true"/>
+        <property name="annotation.processing.processors.list" value=""/>
+        <property name="annotation.processing.processor.options" value=""/>
+        <property name="annotation.processing.run.all.processors" value="true"/>
+        <property name="javac.processorpath" value="${javac.classpath}"/>
+        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
+        <condition property="ap.supported.internal" value="true">
+            <not>
+                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
+        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
+            <isfalse value="${annotation.processing.run.all.processors}"/>
+        </condition>
+        <condition else="" property="ap.proc.none.internal" value="-proc:none">
+            <isfalse value="${annotation.processing.enabled}"/>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
+        <property name="ap.cmd.line.internal" value=""/>
+    </target>
+    <target depends="-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"/>
+    <!--
+                ===================
+                COMPILATION SECTION
+                ===================
+            -->
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: bgslibrary_gui was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+    <target depends="init" name="-check-automatic-build">
+        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+    </target>
+    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+        <antcall target="clean"/>
+    </target>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-depend">
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${meta.inf.dir}" includes="persistence.xml orm.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <!--
+                ====================
+                JAR BUILDING SECTION
+                ====================
+            -->
+    <target depends="init" name="-pre-pre-jar">
+        <dirname file="${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init" if="do.archive" name="-do-jar-create-manifest" unless="manifest.available">
+        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+        <touch file="${tmp.manifest.file}" verbose="false"/>
+    </target>
+    <target depends="init" if="do.archive+manifest.available" name="-do-jar-copy-manifest">
+        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+        <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
+        <manifest file="${tmp.manifest.file}" mode="update">
+            <attribute name="Main-Class" value="${main.class}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+profile.available" name="-do-jar-set-profile">
+        <manifest file="${tmp.manifest.file}" mode="update">
+            <attribute name="Profile" value="${javac.profile}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-set-splashscreen">
+        <basename file="${application.splash}" property="splashscreen.basename"/>
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
+        <manifest file="${tmp.manifest.file}" mode="update">
+            <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
+        </manifest>
+    </target>
+    <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">
+        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
+        <echo level="info">To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo level="info">java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <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">
+        <j2seproject1:jar manifest="${tmp.manifest.file}"/>
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <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}">
+            <isset property="main.class.available"/>
+        </condition>
+        <condition else="debug" property="jar.usage.level" value="info">
+            <isset property="main.class.available"/>
+        </condition>
+        <echo level="${jar.usage.level}" message="${jar.usage.message}"/>
+    </target>
+    <target depends="-do-jar-copylibs" if="do.archive" name="-do-jar-delete-manifest">
+        <delete>
+            <fileset file="${tmp.manifest.file}"/>
+        </delete>
+    </target>
+    <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"/>
+    <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"/>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-jar,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar" name="-do-jar"/>
+    <target depends="init,compile,-pre-jar,-do-jar,-post-jar" description="Build JAR." name="jar"/>
+    <!--
+                =================
+                EXECUTION SECTION
+                =================
+            -->
+    <target depends="init,compile" description="Run a main class." name="run">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="-do-not-recompile">
+        <property name="javac.includes.binary" value=""/>
+    </target>
+    <target depends="init,compile-single" name="run-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                =================
+                DEBUGGING SECTION
+                =================
+            -->
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init,compile" name="-debug-start-debuggee">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                =================
+                PROFILING SECTION
+                =================
+            -->
+    <!--
+                pre NB7.2 profiler integration
+            -->
+    <target depends="profile-init,compile" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile/>
+    </target>
+    <target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="profiler.info.jvmargs.agent" name="-profile-single-pre72">
+        <fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile classname="${profile.class}"/>
+    </target>
+    <target depends="profile-init,compile-single" if="profiler.info.jvmargs.agent" name="-profile-applet-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </profile>
+    </target>
+    <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
+            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+            <jvmarg value="${profiler.info.jvmargs.agent}"/>
+            <jvmarg line="${profiler.info.jvmargs}"/>
+            <test name="${profile.class}"/>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+            </classpath>
+            <syspropertyset>
+                <propertyref prefix="test-sys-prop."/>
+                <mapper from="test-sys-prop.*" to="*" type="glob"/>
+            </syspropertyset>
+            <formatter type="brief" usefile="false"/>
+            <formatter type="xml"/>
+        </junit>
+    </target>
+    <!--
+                end of pre NB72 profiling section
+            -->
+    <target if="netbeans.home" name="-profile-check">
+        <condition property="profiler.configured">
+            <or>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
+            </or>
+        </condition>
+    </target>
+    <target depends="-profile-check,-profile-pre72" description="Profile a project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent">
+        <startprofiler/>
+        <antcall target="run"/>
+    </target>
+    <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">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <startprofiler/>
+        <antcall target="run-single"/>
+    </target>
+    <target depends="-profile-test-single-pre72" description="Profile a selected test in the IDE." name="profile-test-single"/>
+    <target depends="-profile-check" description="Profile a selected test in the IDE." if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <startprofiler/>
+        <antcall target="test-single"/>
+    </target>
+    <target depends="-profile-check" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <startprofiler/>
+        <antcal target="run-test-with-main"/>
+    </target>
+    <target depends="-profile-check,-profile-applet-pre72" if="profiler.configured" name="profile-applet" unless="profiler.info.jvmargs.agent">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <startprofiler/>
+        <antcall target="run-applet"/>
+    </target>
+    <!--
+                ===============
+                JAVADOC SECTION
+                ===============
+            -->
+    <target depends="init" if="have.sources" name="-javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
+            <and>
+                <isset property="endorsed.classpath.cmd.line.arg"/>
+                <not>
+                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="bug5101868workaround" value="*.java">
+            <matches pattern="1\.[56](\..*)?" string="${java.version}"/>
+        </condition>
+        <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}">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${bug5101868workaround},${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+                <exclude name="*.java"/>
+            </fileset>
+            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
+        </javadoc>
+        <copy todir="${dist.javadoc.dir}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/doc-files/**"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/doc-files/**"/>
+            </fileset>
+        </copy>
+    </target>
+    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                =========================
+                TEST COMPILATION SECTION
+                =========================
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-test-depend">
+        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir=""/>
+    </target>
+    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir=""/>
+        <copy todir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+        <j2seproject3:javac 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="" srcdir=""/>
+        <copy todir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                =======================
+                TEST EXECUTION SECTION
+                =======================
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <j2seproject3:test includes="${includes}" testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
+        <fail unless="test.class">Must select some files in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <j2seproject3:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
+    <!--
+                =======================
+                TEST DEBUGGING SECTION
+                =======================
+            -->
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                =========================
+                APPLET EXECUTION SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" name="run-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+                =========================
+                APPLET DEBUGGING  SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+    <!--
+                ===============
+                CLEANUP SECTION
+                ===============
+            -->
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: bgslibrary_gui was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init" name="-do-clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <and>
+                <not>
+                    <isset property="already.built.${call.subproject}"/>
+                </not>
+                <available file="${call.script}"/>
+            </and>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
+</project>
diff --git a/java_gui/nbproject/genfiles.properties b/java_gui/nbproject/genfiles.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ce2450cf88cde5f081bf391d5e8f9d1014adc68d
--- /dev/null
+++ b/java_gui/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=e183c4b1
+build.xml.script.CRC32=ccbe32ac
+build.xml.stylesheet.CRC32=8064a381@1.74.2.48
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=e183c4b1
+nbproject/build-impl.xml.script.CRC32=fd5e303e
+nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.74.2.48
diff --git a/java_gui/nbproject/private/config.properties b/java_gui/nbproject/private/config.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/java_gui/nbproject/private/private.properties b/java_gui/nbproject/private/private.properties
new file mode 100644
index 0000000000000000000000000000000000000000..47427cdb6fe90f9300173fd1029988d087d8a6b4
--- /dev/null
+++ b/java_gui/nbproject/private/private.properties
@@ -0,0 +1,6 @@
+compile.on.save=true
+do.depend=false
+do.jar=true
+javac.debug=true
+javadoc.preview=true
+user.properties.file=C:\\Users\\asobra01\\AppData\\Roaming\\NetBeans\\8.0\\build.properties
diff --git a/java_gui/nbproject/private/private.xml b/java_gui/nbproject/private/private.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd3e03d7ecf45a3fe87e79332c52ee6475f44638
--- /dev/null
+++ b/java_gui/nbproject/private/private.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
+    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
+        <group/>
+    </open-files>
+</project-private>
diff --git a/java_gui/nbproject/project.properties b/java_gui/nbproject/project.properties
new file mode 100644
index 0000000000000000000000000000000000000000..7be5ebf41f0b0fb89112a6bc8143f89d60baef25
--- /dev/null
+++ b/java_gui/nbproject/project.properties
@@ -0,0 +1,103 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.desc=BGSLibrary - A Background Subtraction Library
+application.homepage=https://github.com/andrewssobral/bgslibrary
+application.splash=E:\\Projetos Mestrado\\bgslibrary\\bgslibrary_gui\\images\\logo.jpg
+application.title=BGSLibrary - Java GUI
+application.vendor=Andrews Sobral
+auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/bgslibrary_gui.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+file.reference.commons-configuration-1.8.jar=lib\\commons-configuration-1.8.jar
+file.reference.commons-io-2.3.jar=lib/commons-io-2.3.jar
+file.reference.commons-lang-2.6.jar=lib\\commons-lang-2.6.jar
+file.reference.commons-logging-1.1.1.jar=lib\\commons-logging-1.1.1.jar
+file.reference.swingx-all-1.6.3.jar=lib/swingx-all-1.6.3.jar
+file.reference.swingx-beaninfo-1.6.3.jar=lib/swingx-beaninfo-1.6.3.jar
+includes=**
+jar.archive.disabled=${jnlp.enabled}
+jar.compress=true
+jar.index=${jnlp.enabled}
+javac.classpath=\
+    ${file.reference.swingx-all-1.6.3.jar}:\
+    ${file.reference.swingx-beaninfo-1.6.3.jar}:\
+    ${file.reference.commons-io-2.3.jar}:\
+    ${file.reference.commons-configuration-1.8.jar}:\
+    ${file.reference.commons-lang-2.6.jar}:\
+    ${file.reference.commons-logging-1.1.1.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.processorpath=\
+    ${javac.classpath}
+javac.source=1.6
+javac.target=1.6
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+javac.test.processorpath=\
+    ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+jnlp.codebase.type=no.codebase
+jnlp.descriptor=application
+jnlp.enabled=false
+jnlp.mixed.code=default
+jnlp.offline-allowed=false
+jnlp.signed=false
+jnlp.signing=
+jnlp.signing.alias=
+jnlp.signing.keystore=
+main.class=br.com.bgslibrary.Main
+# Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed
+manifest.custom.codebase=
+# Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions)
+manifest.custom.permissions=
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+platform.active=default_platform
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
diff --git a/java_gui/nbproject/project.xml b/java_gui/nbproject/project.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4c907b6a474f0534bd5b9c4b76f7fa89bbf801df
--- /dev/null
+++ b/java_gui/nbproject/project.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>bgslibrary_gui</name>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots/>
+        </data>
+    </configuration>
+</project>
diff --git a/java_gui/run_camera.bat b/java_gui/run_camera.bat
new file mode 100644
index 0000000000000000000000000000000000000000..672229f6755ef00727eca7d1b2c183c24612ef13
--- /dev/null
+++ b/java_gui/run_camera.bat
@@ -0,0 +1,2 @@
+@echo off
+bgslibrary.exe --use_cam --camera=0
\ No newline at end of file
diff --git a/java_gui/run_java_gui.bat b/java_gui/run_java_gui.bat
new file mode 100644
index 0000000000000000000000000000000000000000..b3b0b31182ad59513f6130512e1bc917aa4990d3
--- /dev/null
+++ b/java_gui/run_java_gui.bat
@@ -0,0 +1 @@
+@start javaw -jar bgslibrary_gui.jar
diff --git a/java_gui/run_java_gui_with_console.bat b/java_gui/run_java_gui_with_console.bat
new file mode 100644
index 0000000000000000000000000000000000000000..96640572fbe1ff62264bb7d7a67fb514dbb0995f
--- /dev/null
+++ b/java_gui/run_java_gui_with_console.bat
@@ -0,0 +1 @@
+java -jar bgslibrary_gui.jar
diff --git a/java_gui/run_video.bat b/java_gui/run_video.bat
new file mode 100644
index 0000000000000000000000000000000000000000..6193b8823c37560d4dd059f79e4d4e94fe89fd26
--- /dev/null
+++ b/java_gui/run_video.bat
@@ -0,0 +1,2 @@
+@echo off
+bgslibrary.exe -uf -fn=../dataset/video.avi
\ No newline at end of file
diff --git a/java_gui/src/br/com/bgslibrary/Main.java b/java_gui/src/br/com/bgslibrary/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..f986a21bee6833ecc9ece0ccd587bb4cad44543d
--- /dev/null
+++ b/java_gui/src/br/com/bgslibrary/Main.java
@@ -0,0 +1,55 @@
+/*
+This file is part of BGSLibrary.
+
+BGSLibrary is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+BGSLibrary is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
+*/
+package br.com.bgslibrary;
+
+import br.com.bgslibrary.gui.MainFrame;
+
+public class Main
+{
+  public static void main(String args[])
+  {
+    try
+    {
+      if(System.getProperty("os.name").toLowerCase().contains("windows"))
+        javax.swing.UIManager.setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());
+      /*
+      for(javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels())
+      {
+        //System.out.println("LookAndFeel: " + info.getName());
+        if("Nimbus".equals(info.getName()))
+        {
+          javax.swing.UIManager.setLookAndFeel(info.getClassName());
+          break;
+        }
+      }
+      */
+    }
+    catch(Exception ex)
+    {
+      java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+    }
+    
+    java.awt.EventQueue.invokeLater(new Runnable()
+    {
+      @Override
+      public void run()
+      {
+        new MainFrame().setVisible(true);
+      }
+    });
+  }
+}
diff --git a/java_gui/src/br/com/bgslibrary/entity/Command.java b/java_gui/src/br/com/bgslibrary/entity/Command.java
new file mode 100644
index 0000000000000000000000000000000000000000..57abcf4bb9b8aacf6ad5c0a1cebbcf886c06b99b
--- /dev/null
+++ b/java_gui/src/br/com/bgslibrary/entity/Command.java
@@ -0,0 +1,158 @@
+/*
+This file is part of BGSLibrary.
+
+BGSLibrary is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+BGSLibrary is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
+*/
+package br.com.bgslibrary.entity;
+
+public class Command
+{
+  private static String base;
+  private static boolean useCamera;
+  private static int cameraIndex;
+  private static boolean useVideo;
+  private static String inputFile;
+  private static boolean useDataset;
+  private static String datasetFolder;
+  private static String trainFile;
+  private static String testFile;
+  private static boolean useForegroundMaskAnalysis;
+  private static String imageRefFile;
+  private static int compareAt;
+
+  public static void init()
+  {
+    base = "./";
+    useCamera = false;
+    cameraIndex = 0;
+    useVideo = false;
+    inputFile = "";
+    useDataset = false;
+    datasetFolder = "";
+    trainFile = "";
+    testFile = "";
+    useForegroundMaskAnalysis = false;
+    imageRefFile = "";
+    compareAt = 0;
+  }
+  
+  public static void setBase(String aBase)
+  {
+    base = aBase;
+  }
+
+  public static void setUseCamera()
+  {
+    useCamera = true;
+    useVideo = false;
+    useDataset = false;
+  }
+
+  public static void setCameraIndex(int aCameraIndex)
+  {
+    cameraIndex = aCameraIndex;
+  }
+
+  public static void setUseVideo()
+  {
+    useCamera = false;
+    useVideo = true;
+    useDataset = false;
+  }
+
+  public static void setInputFile(String aInputFile)
+  {
+    inputFile = aInputFile;
+  }
+
+  public static void setUseDataset()
+  {
+    useCamera = false;
+    useVideo = false;
+    useDataset = true;
+  }
+
+  public static void setDatasetFolder(String aDatasetFolder)
+  {
+    datasetFolder = aDatasetFolder;
+  }
+
+  public static void setTrainFile(String aTrainFile)
+  {
+    trainFile = aTrainFile;
+  }
+
+  public static void setTestFile(String aTestFile)
+  {
+    testFile = aTestFile;
+  }
+
+  public static void setUseForegroundMaskAnalysis(boolean aUseForegroundMaskAnalysis)
+  {
+    useForegroundMaskAnalysis = aUseForegroundMaskAnalysis;
+  }
+
+  public static void setImageRefFile(String aImageRefFile)
+  {
+    imageRefFile = aImageRefFile;
+  }
+
+  public static void setCompareAt(int aCompareAt)
+  {
+    compareAt = aCompareAt;
+  }
+  
+  public static boolean validade()
+  {
+    boolean ok = true;
+    
+    if(useCamera == false && useVideo == false && useDataset == false)
+      ok = false;
+    
+    if(useVideo == true && inputFile.isEmpty())
+      ok = false;
+    
+    if(useDataset == true && (datasetFolder.isEmpty() || trainFile.isEmpty() || testFile.isEmpty()))
+      ok = false;
+    
+    if(useForegroundMaskAnalysis == true && imageRefFile.isEmpty())
+      ok = false;
+    
+    return ok;
+  }
+  
+  public static String getString()
+  {
+    StringBuilder sb = new StringBuilder();
+    
+    //if(validade())
+    {
+      sb.append(base).append("bgslibrary.exe ");
+      
+      if(useCamera)
+        sb.append("--use_cam=true --camera=").append(cameraIndex).append(" ");
+      
+      if(useVideo)
+        sb.append("--use_file=true --filename=").append(inputFile).append(" ");
+      
+      if(useDataset)
+        sb.append("--use_dset=true --dset_dir=").append(datasetFolder).append(" --train=").append(trainFile).append(" --test=").append(testFile).append(" ");
+      
+      if(useForegroundMaskAnalysis)
+        sb.append("--use_comp=true --stopAt=").append(compareAt).append(" --imgref=").append(imageRefFile).append(" ");
+    }
+    
+    return sb.toString();
+  }
+}
diff --git a/java_gui/src/br/com/bgslibrary/entity/Configuration.java b/java_gui/src/br/com/bgslibrary/entity/Configuration.java
new file mode 100644
index 0000000000000000000000000000000000000000..5c69f342816440de21e6612d16197f52febec9cb
--- /dev/null
+++ b/java_gui/src/br/com/bgslibrary/entity/Configuration.java
@@ -0,0 +1,61 @@
+/*
+This file is part of BGSLibrary.
+
+BGSLibrary is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+BGSLibrary is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
+*/
+package br.com.bgslibrary.entity;
+
+public interface Configuration
+{
+  final String FrameProcessor = "FrameProcessor.xml";
+  final String VideoCapture = "VideoCapture.xml";
+  final String PreProcessor = "PreProcessor.xml";
+  final String ForegroundMaskAnalysis = "ForegroundMaskAnalysis.xml";
+  
+  final String FrameDifferenceBGS = "FrameDifferenceBGS.xml";
+  final String StaticFrameDifferenceBGS = "StaticFrameDifferenceBGS.xml";
+  final String WeightedMovingMeanBGS = "WeightedMovingMeanBGS.xml";
+  final String WeightedMovingVarianceBGS = "WeightedMovingVarianceBGS.xml";
+  final String AdaptiveBackgroundLearning = "AdaptiveBackgroundLearning.xml";
+  final String MixtureOfGaussianV1BGS = "MixtureOfGaussianV1BGS.xml";
+  final String MixtureOfGaussianV2BGS = "MixtureOfGaussianV2BGS.xml";
+  final String GMG = "GMG.xml";
+  
+  final String DPAdaptiveMedianBGS = "DPAdaptiveMedianBGS.xml";
+  final String DPEigenbackgroundBGS = "DPEigenbackgroundBGS.xml";
+  final String DPGrimsonGMMBGS = "DPGrimsonGMMBGS.xml";
+  final String DPMeanBGS = "DPMeanBGS.xml";
+  final String DPPratiMediodBGS = "DPPratiMediodBGS.xml";
+  final String DPWrenGABGS = "DPWrenGABGS.xml";
+  final String DPZivkovicAGMMBGS = "DPZivkovicAGMMBGS.xml";
+  
+  final String LBAdaptiveSOM = "LBAdaptiveSOM.xml";
+  final String LBFuzzyAdaptiveSOM = "LBFuzzyAdaptiveSOM.xml";
+  final String LBFuzzyGaussian = "LBFuzzyGaussian.xml";
+  final String LBMixtureOfGaussians = "LBMixtureOfGaussians.xml";
+  final String LBSimpleGaussian = "LBSimpleGaussian.xml";
+  
+  final String MultiLayerBGS = "MultiLayerBGS.xml";
+  
+  //final String PBAS = "PixelBasedAdaptiveSegmenter.xml";
+  
+  final String VuMeter = "VuMeter.xml";
+  
+  final String T2FGMM_UM = "T2FGMM_UM.xml";
+  final String T2FGMM_UV = "T2FGMM_UV.xml";
+  final String T2FMRF_UM = "T2FMRF_UM.xml";
+  final String T2FMRF_UV = "T2FMRF_UV.xml";
+  final String FuzzySugenoIntegral = "FuzzySugenoIntegral.xml";
+  final String FuzzyChoquetIntegral = "FuzzyChoquetIntegral.xml";
+}
diff --git a/java_gui/src/br/com/bgslibrary/gui/AboutDialog.form b/java_gui/src/br/com/bgslibrary/gui/AboutDialog.form
new file mode 100644
index 0000000000000000000000000000000000000000..fd87cce1598fa105d7d95bde33b009ed0d37a0c4
--- /dev/null
+++ b/java_gui/src/br/com/bgslibrary/gui/AboutDialog.form
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <NonVisualComponents>
+    <Component class="javax.swing.JLabel" name="jLabel2">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="jLabel2"/>
+      </Properties>
+    </Component>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                      <Component id="jLabel1" alignment="0" max="32767" attributes="0"/>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jLabel8" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jLabel7" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <Component id="jSeparator1" alignment="0" max="32767" attributes="0"/>
+                  </Group>
+                  <Group type="102" alignment="0" attributes="0">
+                      <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                      <Component id="jLabel6" min="-2" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+              <EmptySpace max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jSeparator1" min="-2" pref="10" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+          <Image iconType="3" name="/br/com/bgslibrary/resources/logo.jpg"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel3">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Author:"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel5">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Version:"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JSeparator" name="jSeparator1">
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel4">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Web:"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel6">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="https://github.com/andrewssobral/bgslibrary"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel7">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="1.0.4"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel8">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Andrews Sobral - andrewssobral@gmail.com"/>
+      </Properties>
+    </Component>
+  </SubComponents>
+</Form>
diff --git a/java_gui/src/br/com/bgslibrary/gui/AboutDialog.java b/java_gui/src/br/com/bgslibrary/gui/AboutDialog.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c8afc01d03d3402081a07657535b3f7ee872c61
--- /dev/null
+++ b/java_gui/src/br/com/bgslibrary/gui/AboutDialog.java
@@ -0,0 +1,124 @@
+/*
+This file is part of BGSLibrary.
+
+BGSLibrary is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+BGSLibrary is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
+*/
+package br.com.bgslibrary.gui;
+
+public class AboutDialog extends javax.swing.JDialog
+{
+  public AboutDialog(java.awt.Frame parent, boolean modal)
+  {
+    super(parent, modal);
+    initComponents();
+    this.setLocationRelativeTo(getRootPane());
+  }
+
+  /**
+   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
+   * content of this method is always regenerated by the Form Editor.
+   */
+  @SuppressWarnings("unchecked")
+  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+  private void initComponents()
+  {
+
+    jLabel2 = new javax.swing.JLabel();
+    jLabel1 = new javax.swing.JLabel();
+    jLabel3 = new javax.swing.JLabel();
+    jLabel5 = new javax.swing.JLabel();
+    jSeparator1 = new javax.swing.JSeparator();
+    jLabel4 = new javax.swing.JLabel();
+    jLabel6 = new javax.swing.JLabel();
+    jLabel7 = new javax.swing.JLabel();
+    jLabel8 = new javax.swing.JLabel();
+
+    jLabel2.setText("jLabel2");
+
+    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+
+    jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/bgslibrary/resources/logo.jpg"))); // NOI18N
+
+    jLabel3.setText("Author:");
+
+    jLabel5.setText("Version:");
+
+    jLabel4.setText("Web:");
+
+    jLabel6.setText("https://github.com/andrewssobral/bgslibrary");
+
+    jLabel7.setText("1.0.4");
+
+    jLabel8.setText("Andrews Sobral - andrewssobral@gmail.com");
+
+    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+    getContentPane().setLayout(layout);
+    layout.setHorizontalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+            .addGroup(layout.createSequentialGroup()
+              .addComponent(jLabel3)
+              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+              .addComponent(jLabel8))
+            .addGroup(layout.createSequentialGroup()
+              .addComponent(jLabel5)
+              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+              .addComponent(jLabel7))
+            .addComponent(jSeparator1))
+          .addGroup(layout.createSequentialGroup()
+            .addComponent(jLabel4)
+            .addGap(18, 18, 18)
+            .addComponent(jLabel6)))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+    layout.setVerticalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(jLabel1)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel3)
+          .addComponent(jLabel8))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel5)
+          .addComponent(jLabel7))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel4)
+          .addComponent(jLabel6))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+
+    pack();
+  }// </editor-fold>//GEN-END:initComponents
+  // Variables declaration - do not modify//GEN-BEGIN:variables
+  private javax.swing.JLabel jLabel1;
+  private javax.swing.JLabel jLabel2;
+  private javax.swing.JLabel jLabel3;
+  private javax.swing.JLabel jLabel4;
+  private javax.swing.JLabel jLabel5;
+  private javax.swing.JLabel jLabel6;
+  private javax.swing.JLabel jLabel7;
+  private javax.swing.JLabel jLabel8;
+  private javax.swing.JSeparator jSeparator1;
+  // End of variables declaration//GEN-END:variables
+}
diff --git a/java_gui/src/br/com/bgslibrary/gui/MainFrame.form b/java_gui/src/br/com/bgslibrary/gui/MainFrame.form
new file mode 100644
index 0000000000000000000000000000000000000000..1cc7c3bed15fc833549eac4df8d2d5467ea763b5
--- /dev/null
+++ b/java_gui/src/br/com/bgslibrary/gui/MainFrame.form
@@ -0,0 +1,2243 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Container class="javax.swing.JMenuBar" name="jMenuBar1">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="jMenu1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+          </Properties>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="jMenu2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Edit"/>
+          </Properties>
+        </Menu>
+      </SubComponents>
+    </Container>
+    <Menu class="javax.swing.JMenuBar" name="jMenuBar2">
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="jMenu3">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="App"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="jMenuItem1">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Exit"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem1ActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="jMenu4">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Help"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="jMenuItem2">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="About"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem2ActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="title" type="java.lang.String" value="BGSLibrary GUI"/>
+    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+      <Color blue="ff" green="ff" red="ff" type="rgb"/>
+    </Property>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar2"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="appTabbedPane" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="appTabbedPane" max="32767" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JTabbedPane" name="appTabbedPane">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+            <EtchetBorder/>
+          </Border>
+        </Property>
+      </Properties>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/>
+      <SubComponents>
+        <Container class="javax.swing.JPanel" name="jPanel1">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
+              <JTabbedPaneConstraints tabName="Main">
+                <Property name="tabTitle" type="java.lang.String" value="Main"/>
+              </JTabbedPaneConstraints>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="jPanel4" alignment="0" max="32767" attributes="0"/>
+                          <Group type="102" alignment="0" attributes="0">
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                      <Component id="jPanel6" alignment="0" max="32767" attributes="0"/>
+                                      <Component id="jPanel3" alignment="0" max="32767" attributes="0"/>
+                                  </Group>
+                                  <Component id="jPanel7" alignment="0" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace pref="148" max="32767" attributes="0"/>
+                              <Component id="runButton" min="-2" pref="80" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="jPanel4" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" attributes="0">
+                              <Component id="jPanel7" min="-2" pref="65" max="-2" attributes="0"/>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="jPanel3" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="jPanel6" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <Component id="runButton" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace pref="245" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Container class="javax.swing.JPanel" name="jPanel3">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title="Input"/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" attributes="0">
+                                  <Group type="103" groupAlignment="0" attributes="0">
+                                      <Component id="useCameraRadioButton" alignment="0" min="-2" pref="100" max="-2" attributes="0"/>
+                                      <Component id="useVideoRadioButton" alignment="0" min="-2" pref="100" max="-2" attributes="0"/>
+                                  </Group>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Group type="103" groupAlignment="0" attributes="0">
+                                      <Group type="102" attributes="0">
+                                          <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+                                          <EmptySpace max="-2" attributes="0"/>
+                                          <Component id="cameraIndexTextField" min="-2" pref="25" max="-2" attributes="0"/>
+                                      </Group>
+                                      <Component id="setInputFileButton" alignment="0" min="-2" pref="120" max="-2" attributes="0"/>
+                                  </Group>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="useDatasetRadioButton" min="-2" pref="100" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="setDatasetFolderButton" min="-2" pref="140" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="setTrainFileButton" min="-2" pref="120" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="setTestFileButton" min="-2" pref="120" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="useCameraRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="cameraIndexTextField" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="useVideoRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="setInputFileButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="useDatasetRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="setDatasetFolderButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="setTrainFileButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="setTestFileButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JRadioButton" name="useCameraRadioButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Use camera"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useCameraRadioButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JRadioButton" name="useVideoRadioButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Use video file"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useVideoRadioButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JRadioButton" name="useDatasetRadioButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Use dataset"/>
+                    <Property name="enabled" type="boolean" value="false"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useDatasetRadioButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JTextField" name="cameraIndexTextField">
+                  <Properties>
+                    <Property name="horizontalAlignment" type="int" value="0"/>
+                    <Property name="text" type="java.lang.String" value="0"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JButton" name="setInputFileButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Set input file"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="setInputFileButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JButton" name="setDatasetFolderButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Set dataset folder"/>
+                    <Property name="enabled" type="boolean" value="false"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="setDatasetFolderButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JButton" name="setTrainFileButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Set train file"/>
+                    <Property name="enabled" type="boolean" value="false"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="setTrainFileButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JButton" name="setTestFileButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Set test file"/>
+                    <Property name="enabled" type="boolean" value="false"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="setTestFileButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="jLabel2">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Camera index:"/>
+                  </Properties>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Container class="javax.swing.JPanel" name="jPanel4">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title="Command Line"/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="cmdTextField" max="32767" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="cmdTextField" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JTextField" name="cmdTextField">
+                </Component>
+              </SubComponents>
+            </Container>
+            <Container class="javax.swing.JPanel" name="jPanel6">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title="Options"/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="useForegroundMaskAnalysisCheckBox" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="setImageRefButton" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="compareAtTextField" min="-2" pref="50" max="-2" attributes="0"/>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="useForegroundMaskAnalysisCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="setImageRefButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="compareAtTextField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JCheckBox" name="useForegroundMaskAnalysisCheckBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Use Foreground Mask Analysis"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useForegroundMaskAnalysisCheckBoxActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JButton" name="setImageRefButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Set Image Ref"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="setImageRefButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="jLabel1">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Compare at frame:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="compareAtTextField">
+                  <Properties>
+                    <Property name="horizontalAlignment" type="int" value="0"/>
+                    <Property name="text" type="java.lang.String" value="0"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="compareAtTextFieldFocusLost"/>
+                  </Events>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Container class="javax.swing.JPanel" name="jPanel7">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title="Saves"/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="loadConfigComboBox" pref="205" max="32767" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="editButton" min="-2" pref="60" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="loadConfigComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="editButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JLabel" name="jLabel3">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Load:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JComboBox" name="loadConfigComboBox">
+                  <Properties>
+                    <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+                      <StringArray count="0"/>
+                    </Property>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="loadConfigComboBoxItemStateChanged"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JButton" name="editButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Edit"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="editButtonActionPerformed"/>
+                  </Events>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Component class="javax.swing.JButton" name="runButton">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Run"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="runButtonActionPerformed"/>
+              </Events>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="jPanel2">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
+              <JTabbedPaneConstraints tabName="Config">
+                <Property name="tabTitle" type="java.lang.String" value="Config"/>
+              </JTabbedPaneConstraints>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="0" attributes="0">
+                              <Component id="jPanel11" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                          </Group>
+                          <Group type="102" alignment="0" attributes="0">
+                              <Component id="jPanel9" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="jPanel10" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace max="32767" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="reloadButton" alignment="1" min="-2" pref="80" max="-2" attributes="0"/>
+                                  <Component id="runButton2" alignment="1" min="-2" pref="80" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" attributes="0">
+                              <Component id="reloadButton" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="runButton2" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                              <Component id="jPanel10" max="32767" attributes="0"/>
+                              <Component id="jPanel9" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="jPanel11" max="32767" attributes="0"/>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Container class="javax.swing.JPanel" name="jPanel9">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title="Video Capture Module"/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" attributes="0">
+                                  <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="resizeFrameTextField" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="jLabel6" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="stopVideoAtTextField" min="-2" pref="50" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="verticalFlipCheckBox" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                                  <Component id="showOutputCheckBox" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="resizeFrameTextField" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="stopVideoAtTextField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="verticalFlipCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="showOutputCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace pref="14" max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JLabel" name="jLabel4">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Resize frame:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="resizeFrameTextField">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="100"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="resizeFrameTextFieldFocusLost"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="jLabel5">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="%"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="verticalFlipCheckBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Vertical Flip"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="verticalFlipCheckBoxActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="jLabel6">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Stop video at frame:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="stopVideoAtTextField">
+                  <Properties>
+                    <Property name="horizontalAlignment" type="int" value="0"/>
+                    <Property name="text" type="java.lang.String" value="0"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="stopVideoAtTextFieldFocusLost"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="showOutputCheckBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Show output"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="showOutputCheckBoxActionPerformed"/>
+                  </Events>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Component class="javax.swing.JButton" name="reloadButton">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Reload"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="reloadButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Container class="javax.swing.JPanel" name="jPanel10">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title="Region of Interest (ROI)"/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="useROICheckBox" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                                  <Component id="ROIdefinedCheckBox" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="jLabel7" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="x0ROITextField" min="-2" pref="50" max="-2" attributes="0"/>
+                                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                                  <Component id="jLabel9" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="x1ROITextField" min="-2" pref="50" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="jLabel8" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="y0ROITextField" min="-2" pref="50" max="-2" attributes="0"/>
+                                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                                  <Component id="jLabel10" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="y1ROITextField" min="-2" pref="50" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="useROICheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="ROIdefinedCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="x0ROITextField" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel9" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="x1ROITextField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="y0ROITextField" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel10" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="y1ROITextField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JCheckBox" name="useROICheckBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Use ROI"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useROICheckBoxActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="ROIdefinedCheckBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="ROI defined"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="ROIdefinedCheckBoxActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="jLabel7">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="X0:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="x0ROITextField">
+                  <Properties>
+                    <Property name="horizontalAlignment" type="int" value="0"/>
+                    <Property name="text" type="java.lang.String" value="0"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="x0ROITextFieldFocusLost"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="jLabel8">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Y0:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="y0ROITextField">
+                  <Properties>
+                    <Property name="horizontalAlignment" type="int" value="0"/>
+                    <Property name="text" type="java.lang.String" value="0"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="y0ROITextFieldFocusLost"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="jLabel9">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="X1:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="x1ROITextField">
+                  <Properties>
+                    <Property name="horizontalAlignment" type="int" value="0"/>
+                    <Property name="text" type="java.lang.String" value="0"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="x1ROITextFieldFocusLost"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="jLabel10">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Y1:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="y1ROITextField">
+                  <Properties>
+                    <Property name="horizontalAlignment" type="int" value="0"/>
+                    <Property name="text" type="java.lang.String" value="0"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="y1ROITextFieldFocusLost"/>
+                  </Events>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Container class="javax.swing.JPanel" name="jPanel11">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title="Frame Processor Module"/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="jLabel11" max="32767" attributes="0"/>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Group type="103" groupAlignment="1" attributes="0">
+                                      <Component id="jPanel13" alignment="0" min="-2" max="-2" attributes="0"/>
+                                      <Component id="jPanel12" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jLabel11" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jPanel12" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jPanel13" max="32767" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JLabel" name="jLabel11">
+                  <Properties>
+                    <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+                      <Font name="Tahoma" size="12" style="1"/>
+                    </Property>
+                    <Property name="horizontalAlignment" type="int" value="0"/>
+                    <Property name="text" type="java.lang.String" value="Modules"/>
+                  </Properties>
+                </Component>
+                <Container class="javax.swing.JPanel" name="jPanel12">
+                  <Properties>
+                    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                      <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                        <TitledBorder title="Processors"/>
+                      </Border>
+                    </Property>
+                  </Properties>
+
+                  <Layout>
+                    <DimensionLayout dim="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" attributes="0">
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Component id="preProcessorLabel" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Group type="102" alignment="0" attributes="0">
+                                              <EmptySpace min="21" pref="21" max="-2" attributes="0"/>
+                                              <Component id="jLabel34" min="-2" pref="72" max="-2" attributes="0"/>
+                                              <EmptySpace min="-2" pref="22" max="-2" attributes="0"/>
+                                              <Component id="tictocComboBox" pref="143" max="32767" attributes="0"/>
+                                          </Group>
+                                          <Component id="preProcessorCheckBox" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                  </Group>
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Component id="foregroundMaskAnalysisLabel" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Component id="foregroundMaskAnalysisCheckBox" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                                  </Group>
+                              </Group>
+                              <EmptySpace max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                    <DimensionLayout dim="1">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="0" attributes="0">
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="3" attributes="0">
+                                  <Component id="preProcessorCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                  <Component id="preProcessorLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="3" attributes="0">
+                                  <Component id="foregroundMaskAnalysisCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                  <Component id="foregroundMaskAnalysisLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace min="-2" pref="1" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="3" attributes="0">
+                                  <Component id="tictocComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel34" alignment="3" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace pref="14" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                  </Layout>
+                  <SubComponents>
+                    <Component class="javax.swing.JCheckBox" name="preProcessorCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="PreProcessor"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="preProcessorCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JComboBox" name="tictocComboBox">
+                      <Events>
+                        <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="tictocComboBoxItemStateChanged"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="preProcessorLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="preProcessorLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="jLabel34">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Performance"/>
+                      </Properties>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="foregroundMaskAnalysisLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="foregroundMaskAnalysisLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="foregroundMaskAnalysisCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Foreground Mask Analysis"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="foregroundMaskAnalysisCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                  </SubComponents>
+                </Container>
+                <Container class="javax.swing.JPanel" name="jPanel13">
+                  <Properties>
+                    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                      <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                        <TitledBorder title="Background Subtraction Methods"/>
+                      </Border>
+                    </Property>
+                  </Properties>
+
+                  <Layout>
+                    <DimensionLayout dim="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" attributes="0">
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Group type="102" attributes="0">
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="frameDifferenceLabel" alignment="1" min="-2" max="-2" attributes="0"/>
+                                          <Component id="staticFrameDifferenceLabel" alignment="1" min="-2" max="-2" attributes="0"/>
+                                          <Component id="weightedMovingMeanLabel" alignment="1" min="-2" max="-2" attributes="0"/>
+                                          <Component id="weightedMovingVarianceLabel" alignment="1" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveBackgroundLearningLabel" alignment="1" min="-2" max="-2" attributes="0"/>
+                                          <Component id="openCVMoGV1Label" alignment="1" min="-2" max="-2" attributes="0"/>
+                                          <Component id="openCVMoGV2Label" alignment="1" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="staticFrameDifferenceCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="weightedMovingMeanCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="weightedMovingVarianceCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveBackgroundLearningCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="frameDifferenceCheckBox" min="-2" max="-2" attributes="0"/>
+                                          <Component id="openCVMoGV1CheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="openCVMoGV2CheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="grimsonGMMLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="zivkovicGMMLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="temporalMeanLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="gaussianAverageLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="eigenbackgroundLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="temporalMedianLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveMedianLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="grimsonGMMCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="gaussianAverageCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="eigenbackgroundCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="temporalMedianCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="zivkovicGMMCheckBox" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveMedianCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="temporalMeanCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="fuzzyGaussianLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="simpleGaussianLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FGMMUVLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="mixtureOfGaussiansLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveSOMLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="fuzzyAdaptiveSOMLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FGMMUMLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="T2FGMMUVCheckBox" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FGMMUMCheckBox" min="-2" max="-2" attributes="0"/>
+                                          <Component id="fuzzyAdaptiveSOMCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="simpleGaussianCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="mixtureOfGaussiansCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="fuzzyGaussianCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveSOMCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Group type="102" alignment="0" attributes="0">
+                                              <Component id="fuzzySugenoIntegralLabel" min="-2" max="-2" attributes="0"/>
+                                              <EmptySpace max="-2" attributes="0"/>
+                                              <Component id="fuzzySugenoIntegralCheckBox" min="-2" max="-2" attributes="0"/>
+                                          </Group>
+                                          <Group type="102" alignment="0" attributes="0">
+                                              <Component id="fuzzyChoquetIntegralLabel" min="-2" max="-2" attributes="0"/>
+                                              <EmptySpace max="-2" attributes="0"/>
+                                              <Component id="fuzzyChoquetIntegralCheckBox" min="-2" max="-2" attributes="0"/>
+                                          </Group>
+                                          <Group type="102" alignment="0" attributes="0">
+                                              <Component id="multiLayerBGSLabel" min="-2" max="-2" attributes="0"/>
+                                              <EmptySpace max="-2" attributes="0"/>
+                                              <Component id="multiLayerBGSCheckBox" min="-2" max="-2" attributes="0"/>
+                                          </Group>
+                                          <Group type="102" attributes="0">
+                                              <Group type="103" groupAlignment="0" attributes="0">
+                                                  <Component id="T2FMRFUVLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                                  <Component id="T2FMRFUMLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                                              </Group>
+                                              <EmptySpace max="-2" attributes="0"/>
+                                              <Group type="103" groupAlignment="0" attributes="0">
+                                                  <Component id="T2FMRFUVCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                                  <Component id="T2FMRFUMCheckBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                              </Group>
+                                          </Group>
+                                          <Group type="102" attributes="0">
+                                              <Component id="GMGLabel" min="-2" max="-2" attributes="0"/>
+                                              <EmptySpace max="-2" attributes="0"/>
+                                              <Component id="GMGCheckBox" min="-2" max="-2" attributes="0"/>
+                                          </Group>
+                                          <Group type="102" alignment="0" attributes="0">
+                                              <Component id="VuMeterLabel" min="-2" max="-2" attributes="0"/>
+                                              <EmptySpace max="-2" attributes="0"/>
+                                              <Component id="VuMeterCheckBox" min="-2" max="-2" attributes="0"/>
+                                          </Group>
+                                      </Group>
+                                      <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                                  </Group>
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Component id="checkAllButton" min="-2" pref="100" max="-2" attributes="0"/>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Component id="uncheckAllButton" min="-2" pref="100" max="-2" attributes="0"/>
+                                      <EmptySpace max="32767" attributes="0"/>
+                                      <Component id="openConfigButton" min="-2" pref="100" max="-2" attributes="0"/>
+                                  </Group>
+                              </Group>
+                              <EmptySpace max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                    <DimensionLayout dim="1">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="0" attributes="0">
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="frameDifferenceCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="temporalMeanCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="simpleGaussianCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="frameDifferenceLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="temporalMeanLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="simpleGaussianLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="staticFrameDifferenceCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveMedianCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="fuzzyGaussianCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="staticFrameDifferenceLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveMedianLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="fuzzyGaussianLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="weightedMovingMeanCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="temporalMedianCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="mixtureOfGaussiansCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="weightedMovingMeanLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="temporalMedianLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="mixtureOfGaussiansLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="weightedMovingVarianceCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="eigenbackgroundCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveSOMCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="weightedMovingVarianceLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="eigenbackgroundLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveSOMLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="adaptiveBackgroundLearningCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="gaussianAverageCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="fuzzyAdaptiveSOMCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="adaptiveBackgroundLearningLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="gaussianAverageLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="fuzzyAdaptiveSOMLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="openCVMoGV1CheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="grimsonGMMCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FGMMUMCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="openCVMoGV1Label" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="grimsonGMMLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FGMMUMLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="openCVMoGV2CheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="zivkovicGMMCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FGMMUVCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="openCVMoGV2Label" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="zivkovicGMMLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FGMMUVLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                  </Group>
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="T2FMRFUMCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FMRFUMLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="T2FMRFUVCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="T2FMRFUVLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Group type="102" alignment="0" attributes="0">
+                                              <EmptySpace min="24" pref="24" max="-2" attributes="0"/>
+                                              <Group type="103" groupAlignment="3" attributes="0">
+                                                  <Component id="fuzzyChoquetIntegralCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                                  <Component id="fuzzyChoquetIntegralLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                              </Group>
+                                              <EmptySpace max="-2" attributes="0"/>
+                                              <Group type="103" groupAlignment="3" attributes="0">
+                                                  <Component id="multiLayerBGSCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                                  <Component id="multiLayerBGSLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                              </Group>
+                                          </Group>
+                                          <Group type="103" alignment="0" groupAlignment="3" attributes="0">
+                                              <Component id="fuzzySugenoIntegralCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                              <Component id="fuzzySugenoIntegralLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          </Group>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="GMGCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="GMGLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <EmptySpace max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="3" attributes="0">
+                                          <Component id="VuMeterCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                                          <Component id="VuMeterLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                  </Group>
+                              </Group>
+                              <EmptySpace pref="30" max="32767" attributes="0"/>
+                              <Group type="103" groupAlignment="3" attributes="0">
+                                  <Component id="checkAllButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                                  <Component id="uncheckAllButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                                  <Component id="openConfigButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                  </Layout>
+                  <SubComponents>
+                    <Component class="javax.swing.JCheckBox" name="frameDifferenceCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Frame Difference"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="frameDifferenceCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="staticFrameDifferenceCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Static Frame Difference"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="staticFrameDifferenceCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="weightedMovingMeanCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Weighted Moving Mean"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="weightedMovingMeanCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="weightedMovingVarianceCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Weighted Moving Variance"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="weightedMovingVarianceCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="openCVMoGV1CheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="OpenCV MoG V1"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openCVMoGV1CheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="openCVMoGV2CheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="OpenCV MoG V2"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openCVMoGV2CheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="adaptiveBackgroundLearningCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Adaptive Background Learning"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="adaptiveBackgroundLearningCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="gaussianAverageCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Gaussian Average"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="gaussianAverageCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="eigenbackgroundCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="SL-PCA / Eigenbackground"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="eigenbackgroundCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="temporalMedianCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Temporal Median"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="temporalMedianCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="adaptiveMedianCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Adaptive Median"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="adaptiveMedianCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="temporalMeanCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Temporal Mean"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="temporalMeanCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="grimsonGMMCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Grimson GMM"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="grimsonGMMCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="zivkovicGMMCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Zivkovic GMM"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="zivkovicGMMCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="adaptiveSOMCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Adaptive SOM"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="adaptiveSOMCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="mixtureOfGaussiansCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Mixture of Gaussians"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mixtureOfGaussiansCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="fuzzyGaussianCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Fuzzy Gaussian"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fuzzyGaussianCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="simpleGaussianCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Simple Gaussian"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="simpleGaussianCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="fuzzyAdaptiveSOMCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Fuzzy Adaptive SOM"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fuzzyAdaptiveSOMCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="T2FGMMUMCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="T2F GMM - UM"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="T2FGMMUMCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="T2FGMMUVCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="T2F GMM - UV"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="T2FGMMUVCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="frameDifferenceLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="frameDifferenceLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="staticFrameDifferenceLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="staticFrameDifferenceLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="weightedMovingMeanLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="weightedMovingMeanLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="weightedMovingVarianceLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="weightedMovingVarianceLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="adaptiveBackgroundLearningLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="adaptiveBackgroundLearningLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="openCVMoGV1Label">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="openCVMoGV1LabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="openCVMoGV2Label">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="openCVMoGV2LabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="zivkovicGMMLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="zivkovicGMMLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="grimsonGMMLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="grimsonGMMLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="gaussianAverageLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="gaussianAverageLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="eigenbackgroundLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="eigenbackgroundLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="temporalMedianLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="temporalMedianLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="adaptiveMedianLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="adaptiveMedianLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="temporalMeanLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="temporalMeanLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="simpleGaussianLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="simpleGaussianLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="fuzzyGaussianLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="fuzzyGaussianLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="mixtureOfGaussiansLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="mixtureOfGaussiansLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="adaptiveSOMLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="adaptiveSOMLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="fuzzyAdaptiveSOMLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="fuzzyAdaptiveSOMLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="T2FGMMUMLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="T2FGMMUMLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="T2FGMMUVLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="T2FGMMUVLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="multiLayerBGSLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="multiLayerBGSLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="multiLayerBGSCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Multi Layer BGS"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multiLayerBGSCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JButton" name="checkAllButton">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Check All"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="checkAllButtonActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JButton" name="uncheckAllButton">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Uncheck All"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="uncheckAllButtonActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JButton" name="openConfigButton">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Open"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openConfigButtonActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="fuzzySugenoIntegralLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="fuzzySugenoIntegralLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="fuzzySugenoIntegralCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Fuzzy Sugeno Integral"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fuzzySugenoIntegralCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="fuzzyChoquetIntegralLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="fuzzyChoquetIntegralLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="fuzzyChoquetIntegralCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Fuzzy Choquet Integral"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fuzzyChoquetIntegralCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="T2FMRFUMLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="T2FMRFUMLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="T2FMRFUMCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="T2F MRF - UM"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="T2FMRFUMCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="T2FMRFUVLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="T2FMRFUVLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="T2FMRFUVCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="T2F MRF - UV"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="T2FMRFUVCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="GMGCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="GMG"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="GMGCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="GMGLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="GMGLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JLabel" name="VuMeterLabel">
+                      <Properties>
+                        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="ff" green="0" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="text" type="java.lang.String" value="C"/>
+                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+                            <EtchetBorder/>
+                          </Border>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="VuMeterLabelMouseClicked"/>
+                      </Events>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="VuMeterCheckBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="VuMeter"/>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="VuMeterCheckBoxActionPerformed"/>
+                      </Events>
+                    </Component>
+                  </SubComponents>
+                </Container>
+              </SubComponents>
+            </Container>
+            <Component class="javax.swing.JButton" name="runButton2">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Run"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="runButton2ActionPerformed"/>
+              </Events>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="jPanel16">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
+              <JTabbedPaneConstraints tabName="Editor">
+                <Property name="tabTitle" type="java.lang.String" value="Editor"/>
+              </JTabbedPaneConstraints>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" attributes="0">
+                              <Component id="jToolBar1" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                          </Group>
+                          <Component id="jPanel17" max="32767" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="jToolBar1" min="-2" pref="25" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="jPanel17" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Container class="javax.swing.JToolBar" name="jToolBar1">
+              <Properties>
+                <Property name="floatable" type="boolean" value="false"/>
+              </Properties>
+
+              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/>
+              <SubComponents>
+                <Component class="javax.swing.JButton" name="saveButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Save"/>
+                    <Property name="focusable" type="boolean" value="false"/>
+                    <Property name="horizontalTextPosition" type="int" value="0"/>
+                    <Property name="verticalTextPosition" type="int" value="3"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JToolBar$Separator" name="jSeparator1">
+                </Component>
+                <Component class="javax.swing.JButton" name="returnButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Return"/>
+                    <Property name="focusable" type="boolean" value="false"/>
+                    <Property name="horizontalTextPosition" type="int" value="0"/>
+                    <Property name="verticalTextPosition" type="int" value="3"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="returnButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JToolBar$Separator" name="jSeparator3">
+                </Component>
+                <Component class="javax.swing.JButton" name="runButton3">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Run"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="runButton3ActionPerformed"/>
+                  </Events>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Container class="javax.swing.JPanel" name="jPanel17">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title="File Content"/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" attributes="0">
+                                  <Component id="jLabel12" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="fileNameLabel" min="-2" pref="200" max="-2" attributes="0"/>
+                              </Group>
+                              <Component id="jScrollPane1" min="-2" pref="710" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace pref="18" max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jScrollPane1" pref="487" max="32767" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="jLabel12" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="fileNameLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+                  <Properties>
+                    <Property name="autoscrolls" type="boolean" value="true"/>
+                    <Property name="doubleBuffered" type="boolean" value="true"/>
+                  </Properties>
+                  <AuxValues>
+                    <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+                  </AuxValues>
+
+                  <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+                  <SubComponents>
+                    <Component class="javax.swing.JTextPane" name="fileContentTextPane">
+                      <Properties>
+                        <Property name="doubleBuffered" type="boolean" value="true"/>
+                      </Properties>
+                    </Component>
+                  </SubComponents>
+                </Container>
+                <Component class="javax.swing.JLabel" name="jLabel12">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="File name:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JLabel" name="fileNameLabel">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="_"/>
+                  </Properties>
+                </Component>
+              </SubComponents>
+            </Container>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="jPanel18">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
+              <JTabbedPaneConstraints tabName="Log">
+                <Property name="tabTitle" type="java.lang.String" value="Log"/>
+              </JTabbedPaneConstraints>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="logTextScrollPane" min="-2" pref="741" max="-2" attributes="0"/>
+                          <Component id="jToolBar2" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace pref="19" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="1" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="jToolBar2" min="-2" pref="25" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="logTextScrollPane" pref="552" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Container class="javax.swing.JScrollPane" name="logTextScrollPane">
+              <Properties>
+                <Property name="doubleBuffered" type="boolean" value="true"/>
+              </Properties>
+              <AuxValues>
+                <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+              </AuxValues>
+
+              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+              <SubComponents>
+                <Component class="javax.swing.JTextPane" name="logTextPane">
+                  <Properties>
+                    <Property name="editable" type="boolean" value="false"/>
+                    <Property name="doubleBuffered" type="boolean" value="true"/>
+                  </Properties>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Container class="javax.swing.JToolBar" name="jToolBar2">
+              <Properties>
+                <Property name="floatable" type="boolean" value="false"/>
+              </Properties>
+
+              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/>
+              <SubComponents>
+                <Component class="javax.swing.JButton" name="clearButton">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Clear"/>
+                    <Property name="focusable" type="boolean" value="false"/>
+                    <Property name="horizontalTextPosition" type="int" value="0"/>
+                    <Property name="verticalTextPosition" type="int" value="3"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="clearButtonActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JToolBar$Separator" name="jSeparator4">
+                </Component>
+                <Component class="javax.swing.JButton" name="runButton4">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Run"/>
+                    <Property name="focusable" type="boolean" value="false"/>
+                    <Property name="horizontalTextPosition" type="int" value="0"/>
+                    <Property name="verticalTextPosition" type="int" value="3"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="runButton4ActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JToolBar$Separator" name="jSeparator2">
+                </Component>
+                <Component class="javax.swing.JButton" name="returnButton2">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Return"/>
+                    <Property name="focusable" type="boolean" value="false"/>
+                    <Property name="horizontalTextPosition" type="int" value="0"/>
+                    <Property name="verticalTextPosition" type="int" value="3"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="returnButton2ActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JToolBar$Separator" name="jSeparator5">
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="autoscrollCheckBox">
+                  <Properties>
+                    <Property name="focusable" type="boolean" value="false"/>
+                    <Property name="horizontalTextPosition" type="int" value="0"/>
+                    <Property name="verticalTextPosition" type="int" value="3"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="autoscrollCheckBoxActionPerformed"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JLabel" name="autoscrollLabel">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value=" Autoscroll"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="autoscrollLabelMouseClicked"/>
+                  </Events>
+                </Component>
+                <Component class="javax.swing.JToolBar$Separator" name="jSeparator6">
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="autoclearCheckBox">
+                  <Properties>
+                    <Property name="focusable" type="boolean" value="false"/>
+                    <Property name="horizontalTextPosition" type="int" value="0"/>
+                    <Property name="verticalTextPosition" type="int" value="3"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JLabel" name="autoclearLabel">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value=" Autoclear"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="autoclearLabelMouseClicked"/>
+                  </Events>
+                </Component>
+              </SubComponents>
+            </Container>
+          </SubComponents>
+        </Container>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/java_gui/src/br/com/bgslibrary/gui/MainFrame.java b/java_gui/src/br/com/bgslibrary/gui/MainFrame.java
new file mode 100644
index 0000000000000000000000000000000000000000..8dcdd07dbd5e8fed979428d5ffde8b9b6839ea24
--- /dev/null
+++ b/java_gui/src/br/com/bgslibrary/gui/MainFrame.java
@@ -0,0 +1,3232 @@
+/*
+This file is part of BGSLibrary.
+
+BGSLibrary is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+BGSLibrary is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
+*/
+package br.com.bgslibrary.gui;
+
+import br.com.bgslibrary.entity.Command;
+import br.com.bgslibrary.entity.Configuration;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
+import java.io.DataInputStream;
+import java.io.File;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.commons.io.FileUtils;
+
+public class MainFrame extends javax.swing.JFrame
+{
+  private String basePath = "./";
+  private String configPath = basePath + "config/";
+  private int appTabbedPaneSelectedIndex = 0;
+  
+  public MainFrame()
+  {
+    initComponents();
+    init();
+  }
+
+  private void init()
+  {
+    this.setLocationRelativeTo(getRootPane());
+    appTabbedPane.setSelectedIndex(0);
+    load();
+    
+    Command.init();
+    Command.setBase(basePath);
+    /*
+    String architectureOS = System.getProperty("os.arch");
+    //System.out.println("architectureOS: " + architectureOS);
+
+    if(architectureOS.equals("amd64"))
+      win64RadioButtonActionPerformed(null);
+    else
+      win32RadioButtonActionPerformed(null);
+    */
+    useCameraRadioButtonActionPerformed(null);
+    autoscrollLabelMouseClicked(null);
+    autoclearCheckBox.setSelected(true);
+
+    fileNameLabel.setText("");
+
+    update();
+    reload();
+  }
+  
+  private void load()
+  {
+    try
+    {
+      PropertiesConfiguration pc = new PropertiesConfiguration();
+      pc.load("bgslibrary_gui.properties");
+      
+      basePath = pc.getString("base.path");
+      configPath = basePath + pc.getString("config.path");
+      
+      String paths[] = pc.getStringArray("run.path");
+      loadConfigComboBox.setModel(new DefaultComboBoxModel(paths));
+      
+      String methods[] = pc.getStringArray("bgs.methods");
+      tictocComboBox.setModel(new DefaultComboBoxModel(methods));
+    }
+    catch(Exception ex)
+    {
+      ex.printStackTrace();
+    }
+  }
+
+  private void update()
+  {
+    if(loadConfigComboBox.getSelectedIndex() > 0)
+      cmdTextField.setText(loadConfigComboBox.getSelectedItem().toString());
+    else
+      cmdTextField.setText(Command.getString());
+  }
+  private ExternalProcess ep = null;
+  private Thread externalProcessThread = null;
+  private boolean epRunning = false;
+
+  private void execute()
+  {
+    if(autoclearCheckBox.isSelected())
+      logTextPane.setText("");
+    
+    stop();
+    
+    if(Command.validade())
+      try
+      {
+        if(epRunning == false)
+        {
+          ep = new ExternalProcess();
+          externalProcessThread = new Thread(ep);
+          externalProcessThread.start();
+          epRunning = true;
+          appTabbedPane.setSelectedIndex(3);
+        }
+      }
+      catch(Exception ex)
+      {
+        ex.printStackTrace();
+      }
+    else
+      JOptionPane.showMessageDialog(this, "Check parameters!", "Alert", JOptionPane.ERROR_MESSAGE);
+  }
+
+  private void stop()
+  {
+    if(epRunning == true)
+    {
+      ep.stop();
+
+      try
+      {
+        Thread.currentThread().sleep(10);
+        externalProcessThread.interrupt();
+      }
+      catch(Exception ex)
+      {
+      }
+
+      ep = null;
+      externalProcessThread = null;
+      epRunning = false;
+    }
+  }
+
+  public void addLog(String msg)
+  {
+    if(msg.trim().isEmpty())
+      return;
+
+    String txt = logTextPane.getText() + msg + "\r\n";
+    logTextPane.setText(txt);
+  }
+
+  class ExternalProcess implements Runnable
+  {
+    private boolean stop = false;
+
+    @Override
+    public void run()
+    {
+      Process p = null;
+      String str = "";
+
+      try
+      {
+        //Process p = Runtime.getRuntime().exec(CommandLine.getString());
+        //Runtime.getRuntime().exec("cmd /c start /B " + CommandLine.getString());
+        //Runtime.getRuntime().exec("cmd /c start /B ../run_video.bat");
+        //Runtime.getRuntime().exec("cmd /C " + loadConfigComboBox.getSelectedItem().toString());
+
+        if(loadConfigComboBox.getSelectedIndex() > 0)
+          p = Runtime.getRuntime().exec(loadConfigComboBox.getSelectedItem().toString());
+        else
+          p = Runtime.getRuntime().exec(Command.getString());
+
+        if(p == null)
+          return;
+
+        System.out.println("Process created");
+        DataInputStream in = new DataInputStream(p.getInputStream());
+
+        while(true)
+        {
+          if(in.available() > 1)
+          {
+            str = in.readLine();
+            addLog(str);
+            System.out.println(str);
+          }
+
+          if(stop == true)
+            break;
+          
+          Thread.currentThread().sleep(10);
+        }
+      }
+      catch(Exception ex)
+      {
+        addLog(ex.getMessage());
+        ex.printStackTrace();
+      }
+      finally
+      {
+        p.destroy();
+        p = null;
+        System.out.println("Process destroyed");
+      }
+    }
+
+    public void stop()
+    {
+      stop = true;
+    }
+  }
+
+  private void reload()
+  {
+    reloadParam("input_resize_percent", resizeFrameTextField, Configuration.VideoCapture);
+    reloadParam("stopAt", stopVideoAtTextField, Configuration.VideoCapture);
+    reloadParam("enableFlip", verticalFlipCheckBox, Configuration.VideoCapture);
+    reloadParam("showOutput", showOutputCheckBox, Configuration.VideoCapture);
+    reloadParam("use_roi", useROICheckBox, Configuration.VideoCapture);
+    reloadParam("roi_defined", ROIdefinedCheckBox, Configuration.VideoCapture);
+    reloadParam("roi_x0", x0ROITextField, Configuration.VideoCapture);
+    reloadParam("roi_x1", x1ROITextField, Configuration.VideoCapture);
+    reloadParam("roi_y0", y0ROITextField, Configuration.VideoCapture);
+    reloadParam("roi_y1", y1ROITextField, Configuration.VideoCapture);
+
+    ///////////////////////////////////////////////////////////////////////////
+
+    reloadParam("enablePreProcessor", preProcessorCheckBox, Configuration.FrameProcessor);
+    reloadParam("tictoc", tictocComboBox, Configuration.FrameProcessor);
+
+    ///////////////////////////////////////////////////////////////////////////
+
+    reloadParam("enableFrameDifferenceBGS", frameDifferenceCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableStaticFrameDifferenceBGS", staticFrameDifferenceCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableWeightedMovingMeanBGS", weightedMovingMeanCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableWeightedMovingVarianceBGS", weightedMovingVarianceCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableAdaptiveBackgroundLearning", adaptiveBackgroundLearningCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableMixtureOfGaussianV1BGS", openCVMoGV1CheckBox, Configuration.FrameProcessor);
+    reloadParam("enableMixtureOfGaussianV2BGS", openCVMoGV2CheckBox, Configuration.FrameProcessor);
+    reloadParam("enableGMG", GMGCheckBox, Configuration.FrameProcessor);
+
+    ///////////////////////////////////////////////////////////////////////////
+
+    reloadParam("enableDPMeanBGS", temporalMeanCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableDPAdaptiveMedianBGS", adaptiveMedianCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableDPPratiMediodBGS", temporalMedianCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableDPEigenbackgroundBGS", eigenbackgroundCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableDPWrenGABGS", gaussianAverageCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableDPGrimsonGMMBGS", grimsonGMMCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableDPZivkovicAGMMBGS", zivkovicGMMCheckBox, Configuration.FrameProcessor);
+
+    ///////////////////////////////////////////////////////////////////////////
+
+    reloadParam("enableLBSimpleGaussian", simpleGaussianCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableLBFuzzyGaussian", fuzzyGaussianCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableLBMixtureOfGaussians", mixtureOfGaussiansCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableLBAdaptiveSOM", adaptiveSOMCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableLBFuzzyAdaptiveSOM", fuzzyAdaptiveSOMCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableT2FGMM_UM", T2FGMMUMCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableT2FGMM_UV", T2FGMMUVCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableT2FMRF_UM", T2FMRFUMCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableT2FMRF_UV", T2FMRFUVCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableFuzzySugenoIntegral", fuzzySugenoIntegralCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableFuzzyChoquetIntegral", fuzzyChoquetIntegralCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableMultiLayerBGS", multiLayerBGSCheckBox, Configuration.FrameProcessor);
+    //reloadParam("enablePBAS", PBASCheckBox, Configuration.FrameProcessor);
+    reloadParam("enableVuMeter", VuMeterCheckBox, Configuration.FrameProcessor);
+
+    ///////////////////////////////////////////////////////////////////////////
+
+    reloadParam("enableForegroundMaskAnalysis", foregroundMaskAnalysisCheckBox, Configuration.FrameProcessor);
+  }
+
+  private void reloadParam(String pname, javax.swing.JTextField textField, String filePath)
+  {
+    String p = getParam(pname, filePath);
+    textField.setText(p);
+  }
+
+  private void reloadParam(String pname, javax.swing.JCheckBox checkBox, String filePath)
+  {
+    String p = getParam(pname, filePath);
+    if(Integer.parseInt(p) == 1)
+      checkBox.setSelected(true);
+    else
+      checkBox.setSelected(false);
+  }
+
+  private void reloadParam(String pname, javax.swing.JComboBox comboBox, String filePath)
+  {
+    String p = getParam(pname, filePath);
+    if(p.length() > 2)
+      comboBox.setSelectedItem(p);
+  }
+
+  private String getParam(String paramName, String filePath)
+  {
+    //System.out.println("changing " + filePath + ", param name:"+paramName+", value:"+paramValue);
+    String content = getFileContent(filePath);
+    int i1 = content.indexOf("<" + paramName + ">") + ("<" + paramName + ">").length();
+    int i2 = content.indexOf("</" + paramName + ">");
+    //System.out.println("i1:"+i1+",i2:"+i2);
+    String cvalue = content.substring(i1, i2);
+    //System.out.println("cvalue:"+cvalue);
+    return cvalue;
+  }
+
+  private void changeParam(String pname, javax.swing.JCheckBox checkBox, String filePath)
+  {
+    String nvalue = (checkBox.isSelected() ? 1 : 0) + "";
+    changeParam(pname, nvalue, filePath);
+  }
+
+  private void changeParam(String pname, javax.swing.JComboBox comboBox, String filePath)
+  {
+    if(comboBox.getSelectedIndex() > 0)
+    {
+      String value = comboBox.getSelectedItem().toString();
+      changeParam(pname, value, filePath);
+    }
+    else
+      changeParam(pname, "\"\"", filePath);
+  }
+
+  private void changeParam(String pname, String nvalue, String filePath)
+  {
+    String startParam = "<" + pname + ">";
+    String endParam = "</" + pname + ">";
+
+    System.out.println("changing " + filePath + ", param name:" + pname + ", value:" + nvalue);
+
+    String content = getFileContent(filePath);
+    if(content.isEmpty())
+      return;
+
+    int i1 = content.indexOf(startParam) + (startParam).length();
+    int i2 = content.indexOf(endParam);
+    String cvalue = content.substring(i1, i2);
+
+    //System.out.println("i1:"+i1+",i2:"+i2);
+    //System.out.println("cvalue:"+cvalue);
+
+    String cparam = startParam + cvalue + endParam;
+    String nparam = startParam + nvalue + endParam;
+
+    String ncontent = content.replace(cparam, nparam);
+    //System.out.println("ncontent:"+ncontent);
+
+    try
+    {
+      File file = new File(configPath + filePath);
+      FileUtils.write(file, ncontent);
+    }
+    catch(Exception ex)
+    {
+      ex.printStackTrace();
+    }
+  }
+
+  private String getFilePath(boolean onlyDir)
+  {
+    final JFileChooser fc = new JFileChooser(basePath);
+
+    if(onlyDir)
+      fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+
+    int returnVal = fc.showOpenDialog(this);
+
+    String relative = "";
+
+    if(returnVal == JFileChooser.APPROVE_OPTION)
+    {
+      File file = fc.getSelectedFile();
+
+      String path = file.getAbsolutePath();
+      String base = basePath;
+      relative = new File(base).toURI().relativize(new File(path).toURI()).getPath();
+
+      System.out.println("Opening: " + relative);
+    }
+    else
+      System.out.println("Open command cancelled by user");
+
+    return relative;
+  }
+
+  private String getFileContent(String filePath)
+  {
+    if(isConfigFile(filePath))
+      filePath = configPath + filePath;
+
+    File file = new File(filePath);
+
+    try
+    {
+      return FileUtils.readFileToString(file);
+    }
+    catch(java.io.FileNotFoundException ex)
+    {
+      JOptionPane.showMessageDialog(this, "Configuration file not found.\nFirst enable module and click to run!", "Error", JOptionPane.ERROR_MESSAGE);
+    }
+    catch(Exception ex)
+    {
+      ex.printStackTrace();
+    }
+
+    return "";
+  }
+
+  private void openFileContent(String filePath)
+  {
+    fileNameLabel.setText("");
+
+    String content = getFileContent(filePath);
+
+    if(!content.isEmpty())
+    {
+      fileContentTextPane.setText(content);
+      appTabbedPane.setSelectedIndex(2);
+      fileNameLabel.setText(filePath);
+    }
+  }
+
+  private void save()
+  {
+    String filePath = fileNameLabel.getText();
+    String fileContent = fileContentTextPane.getText();
+
+    if(!filePath.isEmpty())
+    {
+      if(isConfigFile(filePath))
+        filePath = configPath + filePath;
+
+      File file = new File(filePath);
+
+      try
+      {
+        FileUtils.writeStringToFile(file, fileContent);
+        //returnButtonActionPerformed(null);
+      }
+      catch(Exception ex)
+      {
+        ex.printStackTrace();
+      }
+    }
+  }
+
+  private void retur(boolean clear)
+  {
+    int index = appTabbedPaneSelectedIndex;
+    
+    if(clear)
+    {
+      fileNameLabel.setText("");
+      fileContentTextPane.setText("");
+      index = 1;
+    }
+
+    appTabbedPane.setSelectedIndex(index);
+  }
+
+  private boolean isConfigFile(String filename)
+  {
+    if(filename.endsWith(".xml"))
+      return true;
+    else
+      return false;
+  }
+  
+  AdjustmentListener adjustmentListener = null;
+  
+  private void autoscroll()
+  {
+    if(autoscrollCheckBox.isSelected())
+    {
+      adjustmentListener = new AdjustmentListener()
+      {
+        @Override
+        public void adjustmentValueChanged(AdjustmentEvent e)
+        {
+          e.getAdjustable().setValue(e.getAdjustable().getMaximum());
+        }
+      };
+      
+      logTextScrollPane.getVerticalScrollBar().addAdjustmentListener(adjustmentListener);
+    }
+    else
+      logTextScrollPane.getVerticalScrollBar().removeAdjustmentListener(adjustmentListener);
+  }
+  
+  private void enableAllBGS()
+  {
+    changeParam("enableFrameDifferenceBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableStaticFrameDifferenceBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableWeightedMovingMeanBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableWeightedMovingVarianceBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableAdaptiveBackgroundLearning", "1", Configuration.FrameProcessor);
+    changeParam("enableMixtureOfGaussianV1BGS", "1", Configuration.FrameProcessor);
+    changeParam("enableMixtureOfGaussianV2BGS", "1", Configuration.FrameProcessor);
+    changeParam("enableGMG", "1", Configuration.FrameProcessor);
+    changeParam("enableDPMeanBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableDPAdaptiveMedianBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableDPPratiMediodBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableDPEigenbackgroundBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableDPWrenGABGS", "1", Configuration.FrameProcessor);
+    changeParam("enableDPGrimsonGMMBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableDPZivkovicAGMMBGS", "1", Configuration.FrameProcessor);
+    changeParam("enableLBSimpleGaussian", "1", Configuration.FrameProcessor);
+    changeParam("enableLBFuzzyGaussian", "1", Configuration.FrameProcessor);
+    changeParam("enableLBMixtureOfGaussians", "1", Configuration.FrameProcessor);
+    changeParam("enableLBAdaptiveSOM", "1", Configuration.FrameProcessor);
+    changeParam("enableLBFuzzyAdaptiveSOM", "1", Configuration.FrameProcessor);
+    changeParam("enableT2FGMM_UM", "1", Configuration.FrameProcessor);
+    changeParam("enableT2FGMM_UV", "1", Configuration.FrameProcessor);
+    changeParam("enableT2FMRF_UM", "1", Configuration.FrameProcessor);
+    changeParam("enableT2FMRF_UV", "1", Configuration.FrameProcessor);
+    changeParam("enableFuzzySugenoIntegral", "1", Configuration.FrameProcessor);
+    changeParam("enableFuzzyChoquetIntegral", "1", Configuration.FrameProcessor);
+    changeParam("enableMultiLayerBGS", "1", Configuration.FrameProcessor);
+    //changeParam("enablePBAS", "1", Configuration.FrameProcessor);
+    changeParam("enableVuMeter", "1", Configuration.FrameProcessor);
+    
+    frameDifferenceCheckBox.setSelected(true);
+    staticFrameDifferenceCheckBox.setSelected(true);
+    weightedMovingMeanCheckBox.setSelected(true);
+    weightedMovingVarianceCheckBox.setSelected(true);
+    adaptiveBackgroundLearningCheckBox.setSelected(true);
+    openCVMoGV1CheckBox.setSelected(true);
+    openCVMoGV2CheckBox.setSelected(true);
+    GMGCheckBox.setSelected(true);
+    temporalMeanCheckBox.setSelected(true);
+    adaptiveMedianCheckBox.setSelected(true);
+    temporalMedianCheckBox.setSelected(true);
+    eigenbackgroundCheckBox.setSelected(true);
+    gaussianAverageCheckBox.setSelected(true);
+    grimsonGMMCheckBox.setSelected(true);
+    zivkovicGMMCheckBox.setSelected(true);
+    simpleGaussianCheckBox.setSelected(true);
+    fuzzyGaussianCheckBox.setSelected(true);
+    mixtureOfGaussiansCheckBox.setSelected(true);
+    adaptiveSOMCheckBox.setSelected(true);
+    fuzzyAdaptiveSOMCheckBox.setSelected(true);
+    T2FGMMUMCheckBox.setSelected(true);
+    T2FGMMUVCheckBox.setSelected(true);
+    T2FMRFUMCheckBox.setSelected(true);
+    T2FMRFUVCheckBox.setSelected(true);
+    fuzzySugenoIntegralCheckBox.setSelected(true);
+    fuzzyChoquetIntegralCheckBox.setSelected(true);
+    multiLayerBGSCheckBox.setSelected(true);
+    //PBASCheckBox.setSelected(true);
+    VuMeterCheckBox.setSelected(true);
+    
+    reload();
+  }
+  
+  private void disableAllBGS()
+  {
+    changeParam("enableFrameDifferenceBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableStaticFrameDifferenceBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableWeightedMovingMeanBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableWeightedMovingVarianceBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableAdaptiveBackgroundLearning", "0", Configuration.FrameProcessor);
+    changeParam("enableMixtureOfGaussianV1BGS", "0", Configuration.FrameProcessor);
+    changeParam("enableMixtureOfGaussianV2BGS", "0", Configuration.FrameProcessor);
+    changeParam("enableGMG", "0", Configuration.FrameProcessor);
+    changeParam("enableDPMeanBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableDPAdaptiveMedianBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableDPPratiMediodBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableDPEigenbackgroundBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableDPWrenGABGS", "0", Configuration.FrameProcessor);
+    changeParam("enableDPGrimsonGMMBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableDPZivkovicAGMMBGS", "0", Configuration.FrameProcessor);
+    changeParam("enableLBSimpleGaussian", "0", Configuration.FrameProcessor);
+    changeParam("enableLBFuzzyGaussian", "0", Configuration.FrameProcessor);
+    changeParam("enableLBMixtureOfGaussians", "0", Configuration.FrameProcessor);
+    changeParam("enableLBAdaptiveSOM", "0", Configuration.FrameProcessor);
+    changeParam("enableLBFuzzyAdaptiveSOM", "0", Configuration.FrameProcessor);
+    changeParam("enableT2FGMM_UM", "0", Configuration.FrameProcessor);
+    changeParam("enableT2FGMM_UV", "0", Configuration.FrameProcessor);
+    changeParam("enableT2FMRF_UM", "0", Configuration.FrameProcessor);
+    changeParam("enableT2FMRF_UV", "0", Configuration.FrameProcessor);
+    changeParam("enableFuzzySugenoIntegral", "0", Configuration.FrameProcessor);
+    changeParam("enableFuzzyChoquetIntegral", "0", Configuration.FrameProcessor);
+    changeParam("enableMultiLayerBGS", "0", Configuration.FrameProcessor);
+    //changeParam("enablePBAS", "0", Configuration.FrameProcessor);
+    changeParam("enableVuMeter", "0", Configuration.FrameProcessor);
+    
+    frameDifferenceCheckBox.setSelected(false);
+    staticFrameDifferenceCheckBox.setSelected(false);
+    weightedMovingMeanCheckBox.setSelected(false);
+    weightedMovingVarianceCheckBox.setSelected(false);
+    adaptiveBackgroundLearningCheckBox.setSelected(false);
+    GMGCheckBox.setSelected(false);
+    openCVMoGV1CheckBox.setSelected(false);
+    openCVMoGV2CheckBox.setSelected(false);
+    temporalMeanCheckBox.setSelected(false);
+    adaptiveMedianCheckBox.setSelected(false);
+    temporalMedianCheckBox.setSelected(false);
+    eigenbackgroundCheckBox.setSelected(false);
+    gaussianAverageCheckBox.setSelected(false);
+    grimsonGMMCheckBox.setSelected(false);
+    zivkovicGMMCheckBox.setSelected(false);
+    simpleGaussianCheckBox.setSelected(false);
+    fuzzyGaussianCheckBox.setSelected(false);
+    mixtureOfGaussiansCheckBox.setSelected(false);
+    adaptiveSOMCheckBox.setSelected(false);
+    fuzzyAdaptiveSOMCheckBox.setSelected(false);
+    T2FGMMUMCheckBox.setSelected(false);
+    T2FGMMUVCheckBox.setSelected(false);
+    T2FMRFUMCheckBox.setSelected(false);
+    T2FMRFUVCheckBox.setSelected(false);
+    fuzzySugenoIntegralCheckBox.setSelected(false);
+    fuzzyChoquetIntegralCheckBox.setSelected(false);
+    multiLayerBGSCheckBox.setSelected(false);
+    //PBASCheckBox.setSelected(false);
+    VuMeterCheckBox.setSelected(false);
+    
+    reload();
+  }
+
+  /**
+   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
+   * content of this method is always regenerated by the Form Editor.
+   */
+  @SuppressWarnings("unchecked")
+  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+  private void initComponents()
+  {
+
+    jMenuBar1 = new javax.swing.JMenuBar();
+    jMenu1 = new javax.swing.JMenu();
+    jMenu2 = new javax.swing.JMenu();
+    appTabbedPane = new javax.swing.JTabbedPane();
+    jPanel1 = new javax.swing.JPanel();
+    jPanel3 = new javax.swing.JPanel();
+    useCameraRadioButton = new javax.swing.JRadioButton();
+    useVideoRadioButton = new javax.swing.JRadioButton();
+    useDatasetRadioButton = new javax.swing.JRadioButton();
+    cameraIndexTextField = new javax.swing.JTextField();
+    setInputFileButton = new javax.swing.JButton();
+    setDatasetFolderButton = new javax.swing.JButton();
+    setTrainFileButton = new javax.swing.JButton();
+    setTestFileButton = new javax.swing.JButton();
+    jLabel2 = new javax.swing.JLabel();
+    jPanel4 = new javax.swing.JPanel();
+    cmdTextField = new javax.swing.JTextField();
+    jPanel6 = new javax.swing.JPanel();
+    useForegroundMaskAnalysisCheckBox = new javax.swing.JCheckBox();
+    setImageRefButton = new javax.swing.JButton();
+    jLabel1 = new javax.swing.JLabel();
+    compareAtTextField = new javax.swing.JTextField();
+    jPanel7 = new javax.swing.JPanel();
+    jLabel3 = new javax.swing.JLabel();
+    loadConfigComboBox = new javax.swing.JComboBox();
+    editButton = new javax.swing.JButton();
+    runButton = new javax.swing.JButton();
+    jPanel2 = new javax.swing.JPanel();
+    jPanel9 = new javax.swing.JPanel();
+    jLabel4 = new javax.swing.JLabel();
+    resizeFrameTextField = new javax.swing.JTextField();
+    jLabel5 = new javax.swing.JLabel();
+    verticalFlipCheckBox = new javax.swing.JCheckBox();
+    jLabel6 = new javax.swing.JLabel();
+    stopVideoAtTextField = new javax.swing.JTextField();
+    showOutputCheckBox = new javax.swing.JCheckBox();
+    reloadButton = new javax.swing.JButton();
+    jPanel10 = new javax.swing.JPanel();
+    useROICheckBox = new javax.swing.JCheckBox();
+    ROIdefinedCheckBox = new javax.swing.JCheckBox();
+    jLabel7 = new javax.swing.JLabel();
+    x0ROITextField = new javax.swing.JTextField();
+    jLabel8 = new javax.swing.JLabel();
+    y0ROITextField = new javax.swing.JTextField();
+    jLabel9 = new javax.swing.JLabel();
+    x1ROITextField = new javax.swing.JTextField();
+    jLabel10 = new javax.swing.JLabel();
+    y1ROITextField = new javax.swing.JTextField();
+    jPanel11 = new javax.swing.JPanel();
+    jLabel11 = new javax.swing.JLabel();
+    jPanel12 = new javax.swing.JPanel();
+    preProcessorCheckBox = new javax.swing.JCheckBox();
+    tictocComboBox = new javax.swing.JComboBox();
+    preProcessorLabel = new javax.swing.JLabel();
+    jLabel34 = new javax.swing.JLabel();
+    foregroundMaskAnalysisLabel = new javax.swing.JLabel();
+    foregroundMaskAnalysisCheckBox = new javax.swing.JCheckBox();
+    jPanel13 = new javax.swing.JPanel();
+    frameDifferenceCheckBox = new javax.swing.JCheckBox();
+    staticFrameDifferenceCheckBox = new javax.swing.JCheckBox();
+    weightedMovingMeanCheckBox = new javax.swing.JCheckBox();
+    weightedMovingVarianceCheckBox = new javax.swing.JCheckBox();
+    openCVMoGV1CheckBox = new javax.swing.JCheckBox();
+    openCVMoGV2CheckBox = new javax.swing.JCheckBox();
+    adaptiveBackgroundLearningCheckBox = new javax.swing.JCheckBox();
+    gaussianAverageCheckBox = new javax.swing.JCheckBox();
+    eigenbackgroundCheckBox = new javax.swing.JCheckBox();
+    temporalMedianCheckBox = new javax.swing.JCheckBox();
+    adaptiveMedianCheckBox = new javax.swing.JCheckBox();
+    temporalMeanCheckBox = new javax.swing.JCheckBox();
+    grimsonGMMCheckBox = new javax.swing.JCheckBox();
+    zivkovicGMMCheckBox = new javax.swing.JCheckBox();
+    adaptiveSOMCheckBox = new javax.swing.JCheckBox();
+    mixtureOfGaussiansCheckBox = new javax.swing.JCheckBox();
+    fuzzyGaussianCheckBox = new javax.swing.JCheckBox();
+    simpleGaussianCheckBox = new javax.swing.JCheckBox();
+    fuzzyAdaptiveSOMCheckBox = new javax.swing.JCheckBox();
+    T2FGMMUMCheckBox = new javax.swing.JCheckBox();
+    T2FGMMUVCheckBox = new javax.swing.JCheckBox();
+    frameDifferenceLabel = new javax.swing.JLabel();
+    staticFrameDifferenceLabel = new javax.swing.JLabel();
+    weightedMovingMeanLabel = new javax.swing.JLabel();
+    weightedMovingVarianceLabel = new javax.swing.JLabel();
+    adaptiveBackgroundLearningLabel = new javax.swing.JLabel();
+    openCVMoGV1Label = new javax.swing.JLabel();
+    openCVMoGV2Label = new javax.swing.JLabel();
+    zivkovicGMMLabel = new javax.swing.JLabel();
+    grimsonGMMLabel = new javax.swing.JLabel();
+    gaussianAverageLabel = new javax.swing.JLabel();
+    eigenbackgroundLabel = new javax.swing.JLabel();
+    temporalMedianLabel = new javax.swing.JLabel();
+    adaptiveMedianLabel = new javax.swing.JLabel();
+    temporalMeanLabel = new javax.swing.JLabel();
+    simpleGaussianLabel = new javax.swing.JLabel();
+    fuzzyGaussianLabel = new javax.swing.JLabel();
+    mixtureOfGaussiansLabel = new javax.swing.JLabel();
+    adaptiveSOMLabel = new javax.swing.JLabel();
+    fuzzyAdaptiveSOMLabel = new javax.swing.JLabel();
+    T2FGMMUMLabel = new javax.swing.JLabel();
+    T2FGMMUVLabel = new javax.swing.JLabel();
+    multiLayerBGSLabel = new javax.swing.JLabel();
+    multiLayerBGSCheckBox = new javax.swing.JCheckBox();
+    checkAllButton = new javax.swing.JButton();
+    uncheckAllButton = new javax.swing.JButton();
+    openConfigButton = new javax.swing.JButton();
+    fuzzySugenoIntegralLabel = new javax.swing.JLabel();
+    fuzzySugenoIntegralCheckBox = new javax.swing.JCheckBox();
+    fuzzyChoquetIntegralLabel = new javax.swing.JLabel();
+    fuzzyChoquetIntegralCheckBox = new javax.swing.JCheckBox();
+    T2FMRFUMLabel = new javax.swing.JLabel();
+    T2FMRFUMCheckBox = new javax.swing.JCheckBox();
+    T2FMRFUVLabel = new javax.swing.JLabel();
+    T2FMRFUVCheckBox = new javax.swing.JCheckBox();
+    GMGCheckBox = new javax.swing.JCheckBox();
+    GMGLabel = new javax.swing.JLabel();
+    VuMeterLabel = new javax.swing.JLabel();
+    VuMeterCheckBox = new javax.swing.JCheckBox();
+    runButton2 = new javax.swing.JButton();
+    jPanel16 = new javax.swing.JPanel();
+    jToolBar1 = new javax.swing.JToolBar();
+    saveButton = new javax.swing.JButton();
+    jSeparator1 = new javax.swing.JToolBar.Separator();
+    returnButton = new javax.swing.JButton();
+    jSeparator3 = new javax.swing.JToolBar.Separator();
+    runButton3 = new javax.swing.JButton();
+    jPanel17 = new javax.swing.JPanel();
+    jScrollPane1 = new javax.swing.JScrollPane();
+    fileContentTextPane = new javax.swing.JTextPane();
+    jLabel12 = new javax.swing.JLabel();
+    fileNameLabel = new javax.swing.JLabel();
+    jPanel18 = new javax.swing.JPanel();
+    logTextScrollPane = new javax.swing.JScrollPane();
+    logTextPane = new javax.swing.JTextPane();
+    jToolBar2 = new javax.swing.JToolBar();
+    clearButton = new javax.swing.JButton();
+    jSeparator4 = new javax.swing.JToolBar.Separator();
+    runButton4 = new javax.swing.JButton();
+    jSeparator2 = new javax.swing.JToolBar.Separator();
+    returnButton2 = new javax.swing.JButton();
+    jSeparator5 = new javax.swing.JToolBar.Separator();
+    autoscrollCheckBox = new javax.swing.JCheckBox();
+    autoscrollLabel = new javax.swing.JLabel();
+    jSeparator6 = new javax.swing.JToolBar.Separator();
+    autoclearCheckBox = new javax.swing.JCheckBox();
+    autoclearLabel = new javax.swing.JLabel();
+    jMenuBar2 = new javax.swing.JMenuBar();
+    jMenu3 = new javax.swing.JMenu();
+    jMenuItem1 = new javax.swing.JMenuItem();
+    jMenu4 = new javax.swing.JMenu();
+    jMenuItem2 = new javax.swing.JMenuItem();
+
+    jMenu1.setText("File");
+    jMenuBar1.add(jMenu1);
+
+    jMenu2.setText("Edit");
+    jMenuBar1.add(jMenu2);
+
+    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+    setTitle("BGSLibrary GUI");
+    setBackground(new java.awt.Color(255, 255, 255));
+
+    appTabbedPane.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+
+    jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Input"));
+
+    useCameraRadioButton.setText("Use camera");
+    useCameraRadioButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        useCameraRadioButtonActionPerformed(evt);
+      }
+    });
+
+    useVideoRadioButton.setText("Use video file");
+    useVideoRadioButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        useVideoRadioButtonActionPerformed(evt);
+      }
+    });
+
+    useDatasetRadioButton.setText("Use dataset");
+    useDatasetRadioButton.setEnabled(false);
+    useDatasetRadioButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        useDatasetRadioButtonActionPerformed(evt);
+      }
+    });
+
+    cameraIndexTextField.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+    cameraIndexTextField.setText("0");
+
+    setInputFileButton.setText("Set input file");
+    setInputFileButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        setInputFileButtonActionPerformed(evt);
+      }
+    });
+
+    setDatasetFolderButton.setText("Set dataset folder");
+    setDatasetFolderButton.setEnabled(false);
+    setDatasetFolderButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        setDatasetFolderButtonActionPerformed(evt);
+      }
+    });
+
+    setTrainFileButton.setText("Set train file");
+    setTrainFileButton.setEnabled(false);
+    setTrainFileButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        setTrainFileButtonActionPerformed(evt);
+      }
+    });
+
+    setTestFileButton.setText("Set test file");
+    setTestFileButton.setEnabled(false);
+    setTestFileButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        setTestFileButtonActionPerformed(evt);
+      }
+    });
+
+    jLabel2.setText("Camera index:");
+
+    javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+    jPanel3.setLayout(jPanel3Layout);
+    jPanel3Layout.setHorizontalGroup(
+      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel3Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel3Layout.createSequentialGroup()
+            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addComponent(useCameraRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
+              .addComponent(useVideoRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addGroup(jPanel3Layout.createSequentialGroup()
+                .addComponent(jLabel2)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(cameraIndexTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+              .addComponent(setInputFileButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)))
+          .addGroup(jPanel3Layout.createSequentialGroup()
+            .addComponent(useDatasetRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(setDatasetFolderButton, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(setTrainFileButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(setTestFileButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+    jPanel3Layout.setVerticalGroup(
+      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel3Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(useCameraRadioButton)
+          .addComponent(cameraIndexTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+          .addComponent(jLabel2))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(useVideoRadioButton)
+          .addComponent(setInputFileButton))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(useDatasetRadioButton)
+          .addComponent(setDatasetFolderButton)
+          .addComponent(setTrainFileButton)
+          .addComponent(setTestFileButton))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+
+    jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Command Line"));
+
+    javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
+    jPanel4.setLayout(jPanel4Layout);
+    jPanel4Layout.setHorizontalGroup(
+      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel4Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(cmdTextField)
+        .addContainerGap())
+    );
+    jPanel4Layout.setVerticalGroup(
+      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel4Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(cmdTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+
+    jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Options"));
+
+    useForegroundMaskAnalysisCheckBox.setText("Use Foreground Mask Analysis");
+    useForegroundMaskAnalysisCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        useForegroundMaskAnalysisCheckBoxActionPerformed(evt);
+      }
+    });
+
+    setImageRefButton.setText("Set Image Ref");
+    setImageRefButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        setImageRefButtonActionPerformed(evt);
+      }
+    });
+
+    jLabel1.setText("Compare at frame:");
+
+    compareAtTextField.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+    compareAtTextField.setText("0");
+    compareAtTextField.addFocusListener(new java.awt.event.FocusAdapter()
+    {
+      public void focusLost(java.awt.event.FocusEvent evt)
+      {
+        compareAtTextFieldFocusLost(evt);
+      }
+    });
+
+    javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
+    jPanel6.setLayout(jPanel6Layout);
+    jPanel6Layout.setHorizontalGroup(
+      jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel6Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(useForegroundMaskAnalysisCheckBox)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(setImageRefButton)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(jLabel1)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(compareAtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+    jPanel6Layout.setVerticalGroup(
+      jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel6Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(useForegroundMaskAnalysisCheckBox)
+          .addComponent(setImageRefButton)
+          .addComponent(jLabel1)
+          .addComponent(compareAtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+
+    jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("Saves"));
+
+    jLabel3.setText("Load:");
+
+    loadConfigComboBox.addItemListener(new java.awt.event.ItemListener()
+    {
+      public void itemStateChanged(java.awt.event.ItemEvent evt)
+      {
+        loadConfigComboBoxItemStateChanged(evt);
+      }
+    });
+
+    editButton.setText("Edit");
+    editButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        editButtonActionPerformed(evt);
+      }
+    });
+
+    javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
+    jPanel7.setLayout(jPanel7Layout);
+    jPanel7Layout.setHorizontalGroup(
+      jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel7Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(jLabel3)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(loadConfigComboBox, 0, 205, Short.MAX_VALUE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(editButton, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addContainerGap())
+    );
+    jPanel7Layout.setVerticalGroup(
+      jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel7Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel3)
+          .addComponent(loadConfigComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+          .addComponent(editButton))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+
+    runButton.setText("Run");
+    runButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        runButtonActionPerformed(evt);
+      }
+    });
+
+    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+    jPanel1.setLayout(jPanel1Layout);
+    jPanel1Layout.setHorizontalGroup(
+      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel1Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+          .addGroup(jPanel1Layout.createSequentialGroup()
+            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+              .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 148, Short.MAX_VALUE)
+            .addComponent(runButton, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)))
+        .addContainerGap())
+    );
+    jPanel1Layout.setVerticalGroup(
+      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel1Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel1Layout.createSequentialGroup()
+            .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+          .addComponent(runButton))
+        .addContainerGap(245, Short.MAX_VALUE))
+    );
+
+    appTabbedPane.addTab("Main", jPanel1);
+
+    jPanel9.setBorder(javax.swing.BorderFactory.createTitledBorder("Video Capture Module"));
+
+    jLabel4.setText("Resize frame:");
+
+    resizeFrameTextField.setText("100");
+    resizeFrameTextField.addFocusListener(new java.awt.event.FocusAdapter()
+    {
+      public void focusLost(java.awt.event.FocusEvent evt)
+      {
+        resizeFrameTextFieldFocusLost(evt);
+      }
+    });
+
+    jLabel5.setText("%");
+
+    verticalFlipCheckBox.setText("Vertical Flip");
+    verticalFlipCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        verticalFlipCheckBoxActionPerformed(evt);
+      }
+    });
+
+    jLabel6.setText("Stop video at frame:");
+
+    stopVideoAtTextField.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+    stopVideoAtTextField.setText("0");
+    stopVideoAtTextField.addFocusListener(new java.awt.event.FocusAdapter()
+    {
+      public void focusLost(java.awt.event.FocusEvent evt)
+      {
+        stopVideoAtTextFieldFocusLost(evt);
+      }
+    });
+
+    showOutputCheckBox.setText("Show output");
+    showOutputCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        showOutputCheckBoxActionPerformed(evt);
+      }
+    });
+
+    javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
+    jPanel9.setLayout(jPanel9Layout);
+    jPanel9Layout.setHorizontalGroup(
+      jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel9Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel9Layout.createSequentialGroup()
+            .addComponent(jLabel4)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(resizeFrameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(jLabel5))
+          .addGroup(jPanel9Layout.createSequentialGroup()
+            .addComponent(jLabel6)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(stopVideoAtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
+          .addGroup(jPanel9Layout.createSequentialGroup()
+            .addComponent(verticalFlipCheckBox)
+            .addGap(18, 18, 18)
+            .addComponent(showOutputCheckBox)))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+    jPanel9Layout.setVerticalGroup(
+      jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel9Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel4)
+          .addComponent(resizeFrameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+          .addComponent(jLabel5))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+        .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel6)
+          .addComponent(stopVideoAtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+        .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(verticalFlipCheckBox)
+          .addComponent(showOutputCheckBox))
+        .addContainerGap(14, Short.MAX_VALUE))
+    );
+
+    reloadButton.setText("Reload");
+    reloadButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        reloadButtonActionPerformed(evt);
+      }
+    });
+
+    jPanel10.setBorder(javax.swing.BorderFactory.createTitledBorder("Region of Interest (ROI)"));
+
+    useROICheckBox.setText("Use ROI");
+    useROICheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        useROICheckBoxActionPerformed(evt);
+      }
+    });
+
+    ROIdefinedCheckBox.setText("ROI defined");
+    ROIdefinedCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        ROIdefinedCheckBoxActionPerformed(evt);
+      }
+    });
+
+    jLabel7.setText("X0:");
+
+    x0ROITextField.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+    x0ROITextField.setText("0");
+    x0ROITextField.addFocusListener(new java.awt.event.FocusAdapter()
+    {
+      public void focusLost(java.awt.event.FocusEvent evt)
+      {
+        x0ROITextFieldFocusLost(evt);
+      }
+    });
+
+    jLabel8.setText("Y0:");
+
+    y0ROITextField.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+    y0ROITextField.setText("0");
+    y0ROITextField.addFocusListener(new java.awt.event.FocusAdapter()
+    {
+      public void focusLost(java.awt.event.FocusEvent evt)
+      {
+        y0ROITextFieldFocusLost(evt);
+      }
+    });
+
+    jLabel9.setText("X1:");
+
+    x1ROITextField.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+    x1ROITextField.setText("0");
+    x1ROITextField.addFocusListener(new java.awt.event.FocusAdapter()
+    {
+      public void focusLost(java.awt.event.FocusEvent evt)
+      {
+        x1ROITextFieldFocusLost(evt);
+      }
+    });
+
+    jLabel10.setText("Y1:");
+
+    y1ROITextField.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+    y1ROITextField.setText("0");
+    y1ROITextField.addFocusListener(new java.awt.event.FocusAdapter()
+    {
+      public void focusLost(java.awt.event.FocusEvent evt)
+      {
+        y1ROITextFieldFocusLost(evt);
+      }
+    });
+
+    javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10);
+    jPanel10.setLayout(jPanel10Layout);
+    jPanel10Layout.setHorizontalGroup(
+      jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel10Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel10Layout.createSequentialGroup()
+            .addComponent(useROICheckBox)
+            .addGap(18, 18, 18)
+            .addComponent(ROIdefinedCheckBox))
+          .addGroup(jPanel10Layout.createSequentialGroup()
+            .addComponent(jLabel7)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(x0ROITextField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addGap(18, 18, 18)
+            .addComponent(jLabel9)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(x1ROITextField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
+          .addGroup(jPanel10Layout.createSequentialGroup()
+            .addComponent(jLabel8)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(y0ROITextField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addGap(18, 18, 18)
+            .addComponent(jLabel10)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(y1ROITextField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+    jPanel10Layout.setVerticalGroup(
+      jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel10Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(useROICheckBox)
+          .addComponent(ROIdefinedCheckBox))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+        .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel7)
+          .addComponent(x0ROITextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+          .addComponent(jLabel9)
+          .addComponent(x1ROITextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+        .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel8)
+          .addComponent(y0ROITextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+          .addComponent(jLabel10)
+          .addComponent(y1ROITextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+
+    jPanel11.setBorder(javax.swing.BorderFactory.createTitledBorder("Frame Processor Module"));
+
+    jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
+    jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+    jLabel11.setText("Modules");
+
+    jPanel12.setBorder(javax.swing.BorderFactory.createTitledBorder("Processors"));
+
+    preProcessorCheckBox.setText("PreProcessor");
+    preProcessorCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        preProcessorCheckBoxActionPerformed(evt);
+      }
+    });
+
+    tictocComboBox.addItemListener(new java.awt.event.ItemListener()
+    {
+      public void itemStateChanged(java.awt.event.ItemEvent evt)
+      {
+        tictocComboBoxItemStateChanged(evt);
+      }
+    });
+
+    preProcessorLabel.setForeground(new java.awt.Color(0, 0, 255));
+    preProcessorLabel.setText("C");
+    preProcessorLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    preProcessorLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        preProcessorLabelMouseClicked(evt);
+      }
+    });
+
+    jLabel34.setText("Performance");
+
+    foregroundMaskAnalysisLabel.setForeground(new java.awt.Color(0, 0, 255));
+    foregroundMaskAnalysisLabel.setText("C");
+    foregroundMaskAnalysisLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    foregroundMaskAnalysisLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        foregroundMaskAnalysisLabelMouseClicked(evt);
+      }
+    });
+
+    foregroundMaskAnalysisCheckBox.setText("Foreground Mask Analysis");
+    foregroundMaskAnalysisCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        foregroundMaskAnalysisCheckBoxActionPerformed(evt);
+      }
+    });
+
+    javax.swing.GroupLayout jPanel12Layout = new javax.swing.GroupLayout(jPanel12);
+    jPanel12.setLayout(jPanel12Layout);
+    jPanel12Layout.setHorizontalGroup(
+      jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel12Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel12Layout.createSequentialGroup()
+            .addComponent(preProcessorLabel)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addGroup(jPanel12Layout.createSequentialGroup()
+                .addGap(21, 21, 21)
+                .addComponent(jLabel34, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(22, 22, 22)
+                .addComponent(tictocComboBox, 0, 143, Short.MAX_VALUE))
+              .addComponent(preProcessorCheckBox)))
+          .addGroup(jPanel12Layout.createSequentialGroup()
+            .addComponent(foregroundMaskAnalysisLabel)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(foregroundMaskAnalysisCheckBox)
+            .addGap(0, 0, Short.MAX_VALUE)))
+        .addContainerGap())
+    );
+    jPanel12Layout.setVerticalGroup(
+      jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel12Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(preProcessorCheckBox)
+          .addComponent(preProcessorLabel))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(foregroundMaskAnalysisCheckBox)
+          .addComponent(foregroundMaskAnalysisLabel))
+        .addGap(1, 1, 1)
+        .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(tictocComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+          .addComponent(jLabel34))
+        .addContainerGap(14, Short.MAX_VALUE))
+    );
+
+    jPanel13.setBorder(javax.swing.BorderFactory.createTitledBorder("Background Subtraction Methods"));
+
+    frameDifferenceCheckBox.setText("Frame Difference");
+    frameDifferenceCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        frameDifferenceCheckBoxActionPerformed(evt);
+      }
+    });
+
+    staticFrameDifferenceCheckBox.setText("Static Frame Difference");
+    staticFrameDifferenceCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        staticFrameDifferenceCheckBoxActionPerformed(evt);
+      }
+    });
+
+    weightedMovingMeanCheckBox.setText("Weighted Moving Mean");
+    weightedMovingMeanCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        weightedMovingMeanCheckBoxActionPerformed(evt);
+      }
+    });
+
+    weightedMovingVarianceCheckBox.setText("Weighted Moving Variance");
+    weightedMovingVarianceCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        weightedMovingVarianceCheckBoxActionPerformed(evt);
+      }
+    });
+
+    openCVMoGV1CheckBox.setText("OpenCV MoG V1");
+    openCVMoGV1CheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        openCVMoGV1CheckBoxActionPerformed(evt);
+      }
+    });
+
+    openCVMoGV2CheckBox.setText("OpenCV MoG V2");
+    openCVMoGV2CheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        openCVMoGV2CheckBoxActionPerformed(evt);
+      }
+    });
+
+    adaptiveBackgroundLearningCheckBox.setText("Adaptive Background Learning");
+    adaptiveBackgroundLearningCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        adaptiveBackgroundLearningCheckBoxActionPerformed(evt);
+      }
+    });
+
+    gaussianAverageCheckBox.setText("Gaussian Average");
+    gaussianAverageCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        gaussianAverageCheckBoxActionPerformed(evt);
+      }
+    });
+
+    eigenbackgroundCheckBox.setText("SL-PCA / Eigenbackground");
+    eigenbackgroundCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        eigenbackgroundCheckBoxActionPerformed(evt);
+      }
+    });
+
+    temporalMedianCheckBox.setText("Temporal Median");
+    temporalMedianCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        temporalMedianCheckBoxActionPerformed(evt);
+      }
+    });
+
+    adaptiveMedianCheckBox.setText("Adaptive Median");
+    adaptiveMedianCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        adaptiveMedianCheckBoxActionPerformed(evt);
+      }
+    });
+
+    temporalMeanCheckBox.setText("Temporal Mean");
+    temporalMeanCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        temporalMeanCheckBoxActionPerformed(evt);
+      }
+    });
+
+    grimsonGMMCheckBox.setText("Grimson GMM");
+    grimsonGMMCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        grimsonGMMCheckBoxActionPerformed(evt);
+      }
+    });
+
+    zivkovicGMMCheckBox.setText("Zivkovic GMM");
+    zivkovicGMMCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        zivkovicGMMCheckBoxActionPerformed(evt);
+      }
+    });
+
+    adaptiveSOMCheckBox.setText("Adaptive SOM");
+    adaptiveSOMCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        adaptiveSOMCheckBoxActionPerformed(evt);
+      }
+    });
+
+    mixtureOfGaussiansCheckBox.setText("Mixture of Gaussians");
+    mixtureOfGaussiansCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        mixtureOfGaussiansCheckBoxActionPerformed(evt);
+      }
+    });
+
+    fuzzyGaussianCheckBox.setText("Fuzzy Gaussian");
+    fuzzyGaussianCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        fuzzyGaussianCheckBoxActionPerformed(evt);
+      }
+    });
+
+    simpleGaussianCheckBox.setText("Simple Gaussian");
+    simpleGaussianCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        simpleGaussianCheckBoxActionPerformed(evt);
+      }
+    });
+
+    fuzzyAdaptiveSOMCheckBox.setText("Fuzzy Adaptive SOM");
+    fuzzyAdaptiveSOMCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        fuzzyAdaptiveSOMCheckBoxActionPerformed(evt);
+      }
+    });
+
+    T2FGMMUMCheckBox.setText("T2F GMM - UM");
+    T2FGMMUMCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        T2FGMMUMCheckBoxActionPerformed(evt);
+      }
+    });
+
+    T2FGMMUVCheckBox.setText("T2F GMM - UV");
+    T2FGMMUVCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        T2FGMMUVCheckBoxActionPerformed(evt);
+      }
+    });
+
+    frameDifferenceLabel.setForeground(new java.awt.Color(0, 0, 255));
+    frameDifferenceLabel.setText("C");
+    frameDifferenceLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    frameDifferenceLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        frameDifferenceLabelMouseClicked(evt);
+      }
+    });
+
+    staticFrameDifferenceLabel.setForeground(new java.awt.Color(0, 0, 255));
+    staticFrameDifferenceLabel.setText("C");
+    staticFrameDifferenceLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    staticFrameDifferenceLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        staticFrameDifferenceLabelMouseClicked(evt);
+      }
+    });
+
+    weightedMovingMeanLabel.setForeground(new java.awt.Color(0, 0, 255));
+    weightedMovingMeanLabel.setText("C");
+    weightedMovingMeanLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    weightedMovingMeanLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        weightedMovingMeanLabelMouseClicked(evt);
+      }
+    });
+
+    weightedMovingVarianceLabel.setForeground(new java.awt.Color(0, 0, 255));
+    weightedMovingVarianceLabel.setText("C");
+    weightedMovingVarianceLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    weightedMovingVarianceLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        weightedMovingVarianceLabelMouseClicked(evt);
+      }
+    });
+
+    adaptiveBackgroundLearningLabel.setForeground(new java.awt.Color(0, 0, 255));
+    adaptiveBackgroundLearningLabel.setText("C");
+    adaptiveBackgroundLearningLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    adaptiveBackgroundLearningLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        adaptiveBackgroundLearningLabelMouseClicked(evt);
+      }
+    });
+
+    openCVMoGV1Label.setForeground(new java.awt.Color(0, 0, 255));
+    openCVMoGV1Label.setText("C");
+    openCVMoGV1Label.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    openCVMoGV1Label.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        openCVMoGV1LabelMouseClicked(evt);
+      }
+    });
+
+    openCVMoGV2Label.setForeground(new java.awt.Color(0, 0, 255));
+    openCVMoGV2Label.setText("C");
+    openCVMoGV2Label.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    openCVMoGV2Label.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        openCVMoGV2LabelMouseClicked(evt);
+      }
+    });
+
+    zivkovicGMMLabel.setForeground(new java.awt.Color(0, 0, 255));
+    zivkovicGMMLabel.setText("C");
+    zivkovicGMMLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    zivkovicGMMLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        zivkovicGMMLabelMouseClicked(evt);
+      }
+    });
+
+    grimsonGMMLabel.setForeground(new java.awt.Color(0, 0, 255));
+    grimsonGMMLabel.setText("C");
+    grimsonGMMLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    grimsonGMMLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        grimsonGMMLabelMouseClicked(evt);
+      }
+    });
+
+    gaussianAverageLabel.setForeground(new java.awt.Color(0, 0, 255));
+    gaussianAverageLabel.setText("C");
+    gaussianAverageLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    gaussianAverageLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        gaussianAverageLabelMouseClicked(evt);
+      }
+    });
+
+    eigenbackgroundLabel.setForeground(new java.awt.Color(0, 0, 255));
+    eigenbackgroundLabel.setText("C");
+    eigenbackgroundLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    eigenbackgroundLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        eigenbackgroundLabelMouseClicked(evt);
+      }
+    });
+
+    temporalMedianLabel.setForeground(new java.awt.Color(0, 0, 255));
+    temporalMedianLabel.setText("C");
+    temporalMedianLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    temporalMedianLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        temporalMedianLabelMouseClicked(evt);
+      }
+    });
+
+    adaptiveMedianLabel.setForeground(new java.awt.Color(0, 0, 255));
+    adaptiveMedianLabel.setText("C");
+    adaptiveMedianLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    adaptiveMedianLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        adaptiveMedianLabelMouseClicked(evt);
+      }
+    });
+
+    temporalMeanLabel.setForeground(new java.awt.Color(0, 0, 255));
+    temporalMeanLabel.setText("C");
+    temporalMeanLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    temporalMeanLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        temporalMeanLabelMouseClicked(evt);
+      }
+    });
+
+    simpleGaussianLabel.setForeground(new java.awt.Color(0, 0, 255));
+    simpleGaussianLabel.setText("C");
+    simpleGaussianLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    simpleGaussianLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        simpleGaussianLabelMouseClicked(evt);
+      }
+    });
+
+    fuzzyGaussianLabel.setForeground(new java.awt.Color(0, 0, 255));
+    fuzzyGaussianLabel.setText("C");
+    fuzzyGaussianLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    fuzzyGaussianLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        fuzzyGaussianLabelMouseClicked(evt);
+      }
+    });
+
+    mixtureOfGaussiansLabel.setForeground(new java.awt.Color(0, 0, 255));
+    mixtureOfGaussiansLabel.setText("C");
+    mixtureOfGaussiansLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    mixtureOfGaussiansLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        mixtureOfGaussiansLabelMouseClicked(evt);
+      }
+    });
+
+    adaptiveSOMLabel.setForeground(new java.awt.Color(0, 0, 255));
+    adaptiveSOMLabel.setText("C");
+    adaptiveSOMLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    adaptiveSOMLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        adaptiveSOMLabelMouseClicked(evt);
+      }
+    });
+
+    fuzzyAdaptiveSOMLabel.setForeground(new java.awt.Color(0, 0, 255));
+    fuzzyAdaptiveSOMLabel.setText("C");
+    fuzzyAdaptiveSOMLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    fuzzyAdaptiveSOMLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        fuzzyAdaptiveSOMLabelMouseClicked(evt);
+      }
+    });
+
+    T2FGMMUMLabel.setForeground(new java.awt.Color(0, 0, 255));
+    T2FGMMUMLabel.setText("C");
+    T2FGMMUMLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    T2FGMMUMLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        T2FGMMUMLabelMouseClicked(evt);
+      }
+    });
+
+    T2FGMMUVLabel.setForeground(new java.awt.Color(0, 0, 255));
+    T2FGMMUVLabel.setText("C");
+    T2FGMMUVLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    T2FGMMUVLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        T2FGMMUVLabelMouseClicked(evt);
+      }
+    });
+
+    multiLayerBGSLabel.setForeground(new java.awt.Color(0, 0, 255));
+    multiLayerBGSLabel.setText("C");
+    multiLayerBGSLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    multiLayerBGSLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        multiLayerBGSLabelMouseClicked(evt);
+      }
+    });
+
+    multiLayerBGSCheckBox.setText("Multi Layer BGS");
+    multiLayerBGSCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        multiLayerBGSCheckBoxActionPerformed(evt);
+      }
+    });
+
+    checkAllButton.setText("Check All");
+    checkAllButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        checkAllButtonActionPerformed(evt);
+      }
+    });
+
+    uncheckAllButton.setText("Uncheck All");
+    uncheckAllButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        uncheckAllButtonActionPerformed(evt);
+      }
+    });
+
+    openConfigButton.setText("Open");
+    openConfigButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        openConfigButtonActionPerformed(evt);
+      }
+    });
+
+    fuzzySugenoIntegralLabel.setForeground(new java.awt.Color(0, 0, 255));
+    fuzzySugenoIntegralLabel.setText("C");
+    fuzzySugenoIntegralLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    fuzzySugenoIntegralLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        fuzzySugenoIntegralLabelMouseClicked(evt);
+      }
+    });
+
+    fuzzySugenoIntegralCheckBox.setText("Fuzzy Sugeno Integral");
+    fuzzySugenoIntegralCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        fuzzySugenoIntegralCheckBoxActionPerformed(evt);
+      }
+    });
+
+    fuzzyChoquetIntegralLabel.setForeground(new java.awt.Color(0, 0, 255));
+    fuzzyChoquetIntegralLabel.setText("C");
+    fuzzyChoquetIntegralLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    fuzzyChoquetIntegralLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        fuzzyChoquetIntegralLabelMouseClicked(evt);
+      }
+    });
+
+    fuzzyChoquetIntegralCheckBox.setText("Fuzzy Choquet Integral");
+    fuzzyChoquetIntegralCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        fuzzyChoquetIntegralCheckBoxActionPerformed(evt);
+      }
+    });
+
+    T2FMRFUMLabel.setForeground(new java.awt.Color(0, 0, 255));
+    T2FMRFUMLabel.setText("C");
+    T2FMRFUMLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    T2FMRFUMLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        T2FMRFUMLabelMouseClicked(evt);
+      }
+    });
+
+    T2FMRFUMCheckBox.setText("T2F MRF - UM");
+    T2FMRFUMCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        T2FMRFUMCheckBoxActionPerformed(evt);
+      }
+    });
+
+    T2FMRFUVLabel.setForeground(new java.awt.Color(0, 0, 255));
+    T2FMRFUVLabel.setText("C");
+    T2FMRFUVLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    T2FMRFUVLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        T2FMRFUVLabelMouseClicked(evt);
+      }
+    });
+
+    T2FMRFUVCheckBox.setText("T2F MRF - UV");
+    T2FMRFUVCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        T2FMRFUVCheckBoxActionPerformed(evt);
+      }
+    });
+
+    GMGCheckBox.setText("GMG");
+    GMGCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        GMGCheckBoxActionPerformed(evt);
+      }
+    });
+
+    GMGLabel.setForeground(new java.awt.Color(0, 0, 255));
+    GMGLabel.setText("C");
+    GMGLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    GMGLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        GMGLabelMouseClicked(evt);
+      }
+    });
+
+    VuMeterLabel.setForeground(new java.awt.Color(0, 0, 255));
+    VuMeterLabel.setText("C");
+    VuMeterLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+    VuMeterLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        VuMeterLabelMouseClicked(evt);
+      }
+    });
+
+    VuMeterCheckBox.setText("VuMeter");
+    VuMeterCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        VuMeterCheckBoxActionPerformed(evt);
+      }
+    });
+
+    javax.swing.GroupLayout jPanel13Layout = new javax.swing.GroupLayout(jPanel13);
+    jPanel13.setLayout(jPanel13Layout);
+    jPanel13Layout.setHorizontalGroup(
+      jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel13Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel13Layout.createSequentialGroup()
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addComponent(frameDifferenceLabel, javax.swing.GroupLayout.Alignment.TRAILING)
+              .addComponent(staticFrameDifferenceLabel, javax.swing.GroupLayout.Alignment.TRAILING)
+              .addComponent(weightedMovingMeanLabel, javax.swing.GroupLayout.Alignment.TRAILING)
+              .addComponent(weightedMovingVarianceLabel, javax.swing.GroupLayout.Alignment.TRAILING)
+              .addComponent(adaptiveBackgroundLearningLabel, javax.swing.GroupLayout.Alignment.TRAILING)
+              .addComponent(openCVMoGV1Label, javax.swing.GroupLayout.Alignment.TRAILING)
+              .addComponent(openCVMoGV2Label, javax.swing.GroupLayout.Alignment.TRAILING))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addComponent(staticFrameDifferenceCheckBox)
+              .addComponent(weightedMovingMeanCheckBox)
+              .addComponent(weightedMovingVarianceCheckBox)
+              .addComponent(adaptiveBackgroundLearningCheckBox)
+              .addComponent(frameDifferenceCheckBox)
+              .addComponent(openCVMoGV1CheckBox)
+              .addComponent(openCVMoGV2CheckBox))
+            .addGap(18, 18, 18)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addComponent(grimsonGMMLabel)
+              .addComponent(zivkovicGMMLabel)
+              .addComponent(temporalMeanLabel)
+              .addComponent(gaussianAverageLabel)
+              .addComponent(eigenbackgroundLabel)
+              .addComponent(temporalMedianLabel)
+              .addComponent(adaptiveMedianLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addComponent(grimsonGMMCheckBox)
+              .addComponent(gaussianAverageCheckBox)
+              .addComponent(eigenbackgroundCheckBox)
+              .addComponent(temporalMedianCheckBox)
+              .addComponent(zivkovicGMMCheckBox)
+              .addComponent(adaptiveMedianCheckBox)
+              .addComponent(temporalMeanCheckBox))
+            .addGap(18, 18, 18)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addComponent(fuzzyGaussianLabel)
+              .addComponent(simpleGaussianLabel)
+              .addComponent(T2FGMMUVLabel)
+              .addComponent(mixtureOfGaussiansLabel)
+              .addComponent(adaptiveSOMLabel)
+              .addComponent(fuzzyAdaptiveSOMLabel)
+              .addComponent(T2FGMMUMLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addComponent(T2FGMMUVCheckBox)
+              .addComponent(T2FGMMUMCheckBox)
+              .addComponent(fuzzyAdaptiveSOMCheckBox)
+              .addComponent(simpleGaussianCheckBox)
+              .addComponent(mixtureOfGaussiansCheckBox)
+              .addComponent(fuzzyGaussianCheckBox)
+              .addComponent(adaptiveSOMCheckBox))
+            .addGap(18, 18, 18)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addGroup(jPanel13Layout.createSequentialGroup()
+                .addComponent(fuzzySugenoIntegralLabel)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(fuzzySugenoIntegralCheckBox))
+              .addGroup(jPanel13Layout.createSequentialGroup()
+                .addComponent(fuzzyChoquetIntegralLabel)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(fuzzyChoquetIntegralCheckBox))
+              .addGroup(jPanel13Layout.createSequentialGroup()
+                .addComponent(multiLayerBGSLabel)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(multiLayerBGSCheckBox))
+              .addGroup(jPanel13Layout.createSequentialGroup()
+                .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                  .addComponent(T2FMRFUVLabel)
+                  .addComponent(T2FMRFUMLabel))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                  .addComponent(T2FMRFUVCheckBox)
+                  .addComponent(T2FMRFUMCheckBox)))
+              .addGroup(jPanel13Layout.createSequentialGroup()
+                .addComponent(GMGLabel)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(GMGCheckBox))
+              .addGroup(jPanel13Layout.createSequentialGroup()
+                .addComponent(VuMeterLabel)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(VuMeterCheckBox)))
+            .addGap(0, 0, Short.MAX_VALUE))
+          .addGroup(jPanel13Layout.createSequentialGroup()
+            .addComponent(checkAllButton, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(uncheckAllButton, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+            .addComponent(openConfigButton, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)))
+        .addContainerGap())
+    );
+    jPanel13Layout.setVerticalGroup(
+      jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel13Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel13Layout.createSequentialGroup()
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(frameDifferenceCheckBox)
+              .addComponent(temporalMeanCheckBox)
+              .addComponent(simpleGaussianCheckBox)
+              .addComponent(frameDifferenceLabel)
+              .addComponent(temporalMeanLabel)
+              .addComponent(simpleGaussianLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(staticFrameDifferenceCheckBox)
+              .addComponent(adaptiveMedianCheckBox)
+              .addComponent(fuzzyGaussianCheckBox)
+              .addComponent(staticFrameDifferenceLabel)
+              .addComponent(adaptiveMedianLabel)
+              .addComponent(fuzzyGaussianLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(weightedMovingMeanCheckBox)
+              .addComponent(temporalMedianCheckBox)
+              .addComponent(mixtureOfGaussiansCheckBox)
+              .addComponent(weightedMovingMeanLabel)
+              .addComponent(temporalMedianLabel)
+              .addComponent(mixtureOfGaussiansLabel))
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(weightedMovingVarianceCheckBox)
+              .addComponent(eigenbackgroundCheckBox)
+              .addComponent(adaptiveSOMCheckBox)
+              .addComponent(weightedMovingVarianceLabel)
+              .addComponent(eigenbackgroundLabel)
+              .addComponent(adaptiveSOMLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(adaptiveBackgroundLearningCheckBox)
+              .addComponent(gaussianAverageCheckBox)
+              .addComponent(fuzzyAdaptiveSOMCheckBox)
+              .addComponent(adaptiveBackgroundLearningLabel)
+              .addComponent(gaussianAverageLabel)
+              .addComponent(fuzzyAdaptiveSOMLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(openCVMoGV1CheckBox)
+              .addComponent(grimsonGMMCheckBox)
+              .addComponent(T2FGMMUMCheckBox)
+              .addComponent(openCVMoGV1Label)
+              .addComponent(grimsonGMMLabel)
+              .addComponent(T2FGMMUMLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(openCVMoGV2CheckBox)
+              .addComponent(zivkovicGMMCheckBox)
+              .addComponent(T2FGMMUVCheckBox)
+              .addComponent(openCVMoGV2Label)
+              .addComponent(zivkovicGMMLabel)
+              .addComponent(T2FGMMUVLabel)))
+          .addGroup(jPanel13Layout.createSequentialGroup()
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(T2FMRFUMCheckBox)
+              .addComponent(T2FMRFUMLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(T2FMRFUVCheckBox)
+              .addComponent(T2FMRFUVLabel))
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addGroup(jPanel13Layout.createSequentialGroup()
+                .addGap(24, 24, 24)
+                .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                  .addComponent(fuzzyChoquetIntegralCheckBox)
+                  .addComponent(fuzzyChoquetIntegralLabel))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                  .addComponent(multiLayerBGSCheckBox)
+                  .addComponent(multiLayerBGSLabel)))
+              .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                .addComponent(fuzzySugenoIntegralCheckBox)
+                .addComponent(fuzzySugenoIntegralLabel)))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(GMGCheckBox)
+              .addComponent(GMGLabel))
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+              .addComponent(VuMeterCheckBox)
+              .addComponent(VuMeterLabel))))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE)
+        .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(checkAllButton)
+          .addComponent(uncheckAllButton)
+          .addComponent(openConfigButton))
+        .addContainerGap())
+    );
+
+    javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11);
+    jPanel11.setLayout(jPanel11Layout);
+    jPanel11Layout.setHorizontalGroup(
+      jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel11Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+          .addGroup(jPanel11Layout.createSequentialGroup()
+            .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+              .addComponent(jPanel13, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+              .addComponent(jPanel12, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+            .addGap(0, 0, Short.MAX_VALUE)))
+        .addContainerGap())
+    );
+    jPanel11Layout.setVerticalGroup(
+      jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel11Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(jLabel11)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(jPanel13, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+        .addContainerGap())
+    );
+
+    runButton2.setText("Run");
+    runButton2.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        runButton2ActionPerformed(evt);
+      }
+    });
+
+    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
+    jPanel2.setLayout(jPanel2Layout);
+    jPanel2Layout.setHorizontalGroup(
+      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel2Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel2Layout.createSequentialGroup()
+            .addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addGap(0, 0, Short.MAX_VALUE))
+          .addGroup(jPanel2Layout.createSequentialGroup()
+            .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+              .addComponent(reloadButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
+              .addComponent(runButton2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE))))
+        .addContainerGap())
+    );
+    jPanel2Layout.setVerticalGroup(
+      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel2Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel2Layout.createSequentialGroup()
+            .addComponent(reloadButton)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(runButton2))
+          .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+            .addComponent(jPanel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+            .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+        .addContainerGap())
+    );
+
+    appTabbedPane.addTab("Config", jPanel2);
+
+    jToolBar1.setFloatable(false);
+
+    saveButton.setText("Save");
+    saveButton.setFocusable(false);
+    saveButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+    saveButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+    saveButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        saveButtonActionPerformed(evt);
+      }
+    });
+    jToolBar1.add(saveButton);
+    jToolBar1.add(jSeparator1);
+
+    returnButton.setText("Return");
+    returnButton.setFocusable(false);
+    returnButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+    returnButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+    returnButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        returnButtonActionPerformed(evt);
+      }
+    });
+    jToolBar1.add(returnButton);
+    jToolBar1.add(jSeparator3);
+
+    runButton3.setText("Run");
+    runButton3.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        runButton3ActionPerformed(evt);
+      }
+    });
+    jToolBar1.add(runButton3);
+
+    jPanel17.setBorder(javax.swing.BorderFactory.createTitledBorder("File Content"));
+
+    jScrollPane1.setAutoscrolls(true);
+    jScrollPane1.setDoubleBuffered(true);
+
+    fileContentTextPane.setDoubleBuffered(true);
+    jScrollPane1.setViewportView(fileContentTextPane);
+
+    jLabel12.setText("File name:");
+
+    fileNameLabel.setText("_");
+
+    javax.swing.GroupLayout jPanel17Layout = new javax.swing.GroupLayout(jPanel17);
+    jPanel17.setLayout(jPanel17Layout);
+    jPanel17Layout.setHorizontalGroup(
+      jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel17Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel17Layout.createSequentialGroup()
+            .addComponent(jLabel12)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+            .addComponent(fileNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+          .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 710, javax.swing.GroupLayout.PREFERRED_SIZE))
+        .addContainerGap(18, Short.MAX_VALUE))
+    );
+    jPanel17Layout.setVerticalGroup(
+      jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel17Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 487, Short.MAX_VALUE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addGroup(jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel12)
+          .addComponent(fileNameLabel))
+        .addContainerGap())
+    );
+
+    javax.swing.GroupLayout jPanel16Layout = new javax.swing.GroupLayout(jPanel16);
+    jPanel16.setLayout(jPanel16Layout);
+    jPanel16Layout.setHorizontalGroup(
+      jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel16Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addGroup(jPanel16Layout.createSequentialGroup()
+            .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+            .addGap(0, 0, Short.MAX_VALUE))
+          .addComponent(jPanel17, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        .addContainerGap())
+    );
+    jPanel16Layout.setVerticalGroup(
+      jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel16Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(jPanel17, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+        .addContainerGap())
+    );
+
+    appTabbedPane.addTab("Editor", jPanel16);
+
+    logTextScrollPane.setDoubleBuffered(true);
+
+    logTextPane.setEditable(false);
+    logTextPane.setDoubleBuffered(true);
+    logTextScrollPane.setViewportView(logTextPane);
+
+    jToolBar2.setFloatable(false);
+
+    clearButton.setText("Clear");
+    clearButton.setFocusable(false);
+    clearButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+    clearButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+    clearButton.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        clearButtonActionPerformed(evt);
+      }
+    });
+    jToolBar2.add(clearButton);
+    jToolBar2.add(jSeparator4);
+
+    runButton4.setText("Run");
+    runButton4.setFocusable(false);
+    runButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+    runButton4.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+    runButton4.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        runButton4ActionPerformed(evt);
+      }
+    });
+    jToolBar2.add(runButton4);
+    jToolBar2.add(jSeparator2);
+
+    returnButton2.setText("Return");
+    returnButton2.setFocusable(false);
+    returnButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+    returnButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+    returnButton2.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        returnButton2ActionPerformed(evt);
+      }
+    });
+    jToolBar2.add(returnButton2);
+    jToolBar2.add(jSeparator5);
+
+    autoscrollCheckBox.setFocusable(false);
+    autoscrollCheckBox.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+    autoscrollCheckBox.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+    autoscrollCheckBox.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        autoscrollCheckBoxActionPerformed(evt);
+      }
+    });
+    jToolBar2.add(autoscrollCheckBox);
+
+    autoscrollLabel.setText(" Autoscroll");
+    autoscrollLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        autoscrollLabelMouseClicked(evt);
+      }
+    });
+    jToolBar2.add(autoscrollLabel);
+    jToolBar2.add(jSeparator6);
+
+    autoclearCheckBox.setFocusable(false);
+    autoclearCheckBox.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+    autoclearCheckBox.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+    jToolBar2.add(autoclearCheckBox);
+
+    autoclearLabel.setText(" Autoclear");
+    autoclearLabel.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mouseClicked(java.awt.event.MouseEvent evt)
+      {
+        autoclearLabelMouseClicked(evt);
+      }
+    });
+    jToolBar2.add(autoclearLabel);
+
+    javax.swing.GroupLayout jPanel18Layout = new javax.swing.GroupLayout(jPanel18);
+    jPanel18.setLayout(jPanel18Layout);
+    jPanel18Layout.setHorizontalGroup(
+      jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(jPanel18Layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+          .addComponent(logTextScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 741, javax.swing.GroupLayout.PREFERRED_SIZE)
+          .addComponent(jToolBar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+        .addContainerGap(19, Short.MAX_VALUE))
+    );
+    jPanel18Layout.setVerticalGroup(
+      jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel18Layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(jToolBar2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(logTextScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 552, Short.MAX_VALUE)
+        .addContainerGap())
+    );
+
+    appTabbedPane.addTab("Log", jPanel18);
+
+    jMenu3.setText("App");
+
+    jMenuItem1.setText("Exit");
+    jMenuItem1.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        jMenuItem1ActionPerformed(evt);
+      }
+    });
+    jMenu3.add(jMenuItem1);
+
+    jMenuBar2.add(jMenu3);
+
+    jMenu4.setText("Help");
+
+    jMenuItem2.setText("About");
+    jMenuItem2.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(java.awt.event.ActionEvent evt)
+      {
+        jMenuItem2ActionPerformed(evt);
+      }
+    });
+    jMenu4.add(jMenuItem2);
+
+    jMenuBar2.add(jMenu4);
+
+    setJMenuBar(jMenuBar2);
+
+    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+    getContentPane().setLayout(layout);
+    layout.setHorizontalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(appTabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+    );
+    layout.setVerticalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(layout.createSequentialGroup()
+        .addContainerGap()
+        .addComponent(appTabbedPane)
+        .addContainerGap())
+    );
+
+    pack();
+  }// </editor-fold>//GEN-END:initComponents
+
+  private AboutDialog dialog = null;
+  
+  private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jMenuItem2ActionPerformed
+  {//GEN-HEADEREND:event_jMenuItem2ActionPerformed
+    java.awt.EventQueue.invokeLater(new Runnable()
+    {
+      @Override
+      public void run()
+      {
+        dialog = new AboutDialog(new javax.swing.JFrame(), true);
+        dialog.addWindowListener(new java.awt.event.WindowAdapter()
+        {
+          @Override
+          public void windowClosing(java.awt.event.WindowEvent e)
+          {
+            //System.exit(0);
+          }
+        });
+        dialog.setVisible(true);
+      }
+    });
+  }//GEN-LAST:event_jMenuItem2ActionPerformed
+
+  private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jMenuItem1ActionPerformed
+  {//GEN-HEADEREND:event_jMenuItem1ActionPerformed
+    System.exit(0);
+  }//GEN-LAST:event_jMenuItem1ActionPerformed
+
+  private void returnButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_returnButtonActionPerformed
+  {//GEN-HEADEREND:event_returnButtonActionPerformed
+    retur(true);
+  }//GEN-LAST:event_returnButtonActionPerformed
+
+  private void useCameraRadioButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_useCameraRadioButtonActionPerformed
+  {//GEN-HEADEREND:event_useCameraRadioButtonActionPerformed
+    useCameraRadioButton.setSelected(true);
+    useVideoRadioButton.setSelected(false);
+    useDatasetRadioButton.setSelected(false);
+    Command.setUseCamera();
+    update();
+  }//GEN-LAST:event_useCameraRadioButtonActionPerformed
+
+  private void useVideoRadioButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_useVideoRadioButtonActionPerformed
+  {//GEN-HEADEREND:event_useVideoRadioButtonActionPerformed
+    useCameraRadioButton.setSelected(false);
+    useVideoRadioButton.setSelected(true);
+    useDatasetRadioButton.setSelected(false);
+    Command.setUseVideo();
+    update();
+  }//GEN-LAST:event_useVideoRadioButtonActionPerformed
+
+  private void useDatasetRadioButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_useDatasetRadioButtonActionPerformed
+  {//GEN-HEADEREND:event_useDatasetRadioButtonActionPerformed
+    useCameraRadioButton.setSelected(false);
+    useVideoRadioButton.setSelected(false);
+    useDatasetRadioButton.setSelected(true);
+    Command.setUseDataset();
+    update();
+  }//GEN-LAST:event_useDatasetRadioButtonActionPerformed
+
+  private void setInputFileButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_setInputFileButtonActionPerformed
+  {//GEN-HEADEREND:event_setInputFileButtonActionPerformed
+    useVideoRadioButtonActionPerformed(null);
+    Command.setInputFile(getFilePath(false));
+    update();
+  }//GEN-LAST:event_setInputFileButtonActionPerformed
+
+  private void setDatasetFolderButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_setDatasetFolderButtonActionPerformed
+  {//GEN-HEADEREND:event_setDatasetFolderButtonActionPerformed
+    useDatasetRadioButtonActionPerformed(null);
+    Command.setDatasetFolder(getFilePath(true));
+    update();
+  }//GEN-LAST:event_setDatasetFolderButtonActionPerformed
+
+  private void setTrainFileButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_setTrainFileButtonActionPerformed
+  {//GEN-HEADEREND:event_setTrainFileButtonActionPerformed
+    useDatasetRadioButtonActionPerformed(null);
+    Command.setTrainFile(getFilePath(false));
+    update();
+  }//GEN-LAST:event_setTrainFileButtonActionPerformed
+
+  private void setTestFileButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_setTestFileButtonActionPerformed
+  {//GEN-HEADEREND:event_setTestFileButtonActionPerformed
+    useDatasetRadioButtonActionPerformed(null);
+    Command.setTestFile(getFilePath(false));
+    update();
+  }//GEN-LAST:event_setTestFileButtonActionPerformed
+
+  private void useForegroundMaskAnalysisCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_useForegroundMaskAnalysisCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_useForegroundMaskAnalysisCheckBoxActionPerformed
+    Command.setUseForegroundMaskAnalysis(useForegroundMaskAnalysisCheckBox.isSelected());
+    Command.setCompareAt(Integer.parseInt(compareAtTextField.getText()));
+    update();
+  }//GEN-LAST:event_useForegroundMaskAnalysisCheckBoxActionPerformed
+
+  private void setImageRefButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_setImageRefButtonActionPerformed
+  {//GEN-HEADEREND:event_setImageRefButtonActionPerformed
+    Command.setImageRefFile(getFilePath(false));
+    Command.setCompareAt(Integer.parseInt(compareAtTextField.getText()));
+    update();
+  }//GEN-LAST:event_setImageRefButtonActionPerformed
+
+  private void compareAtTextFieldFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_compareAtTextFieldFocusLost
+  {//GEN-HEADEREND:event_compareAtTextFieldFocusLost
+    Command.setCompareAt(Integer.parseInt(compareAtTextField.getText()));
+    update();
+  }//GEN-LAST:event_compareAtTextFieldFocusLost
+
+  private void saveButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_saveButtonActionPerformed
+  {//GEN-HEADEREND:event_saveButtonActionPerformed
+    save();
+  }//GEN-LAST:event_saveButtonActionPerformed
+
+  private void reloadButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_reloadButtonActionPerformed
+  {//GEN-HEADEREND:event_reloadButtonActionPerformed
+    reload();
+  }//GEN-LAST:event_reloadButtonActionPerformed
+
+  private void preProcessorLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_preProcessorLabelMouseClicked
+  {//GEN-HEADEREND:event_preProcessorLabelMouseClicked
+    openFileContent(Configuration.PreProcessor);
+  }//GEN-LAST:event_preProcessorLabelMouseClicked
+
+  private void resizeFrameTextFieldFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_resizeFrameTextFieldFocusLost
+  {//GEN-HEADEREND:event_resizeFrameTextFieldFocusLost
+    changeParam("input_resize_percent", resizeFrameTextField.getText(), Configuration.VideoCapture);
+  }//GEN-LAST:event_resizeFrameTextFieldFocusLost
+
+  private void stopVideoAtTextFieldFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_stopVideoAtTextFieldFocusLost
+  {//GEN-HEADEREND:event_stopVideoAtTextFieldFocusLost
+    changeParam("stopAt", stopVideoAtTextField.getText(), Configuration.VideoCapture);
+  }//GEN-LAST:event_stopVideoAtTextFieldFocusLost
+
+  private void verticalFlipCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_verticalFlipCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_verticalFlipCheckBoxActionPerformed
+    changeParam("enableFlip", verticalFlipCheckBox, Configuration.VideoCapture);
+  }//GEN-LAST:event_verticalFlipCheckBoxActionPerformed
+
+  private void showOutputCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_showOutputCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_showOutputCheckBoxActionPerformed
+    changeParam("showOutput", showOutputCheckBox, Configuration.VideoCapture);
+  }//GEN-LAST:event_showOutputCheckBoxActionPerformed
+
+  private void useROICheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_useROICheckBoxActionPerformed
+  {//GEN-HEADEREND:event_useROICheckBoxActionPerformed
+    changeParam("use_roi", useROICheckBox, Configuration.VideoCapture);
+  }//GEN-LAST:event_useROICheckBoxActionPerformed
+
+  private void ROIdefinedCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_ROIdefinedCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_ROIdefinedCheckBoxActionPerformed
+    changeParam("roi_defined", ROIdefinedCheckBox, Configuration.VideoCapture);
+  }//GEN-LAST:event_ROIdefinedCheckBoxActionPerformed
+
+  private void x0ROITextFieldFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_x0ROITextFieldFocusLost
+  {//GEN-HEADEREND:event_x0ROITextFieldFocusLost
+    changeParam("roi_x0", x0ROITextField.getText(), Configuration.VideoCapture);
+  }//GEN-LAST:event_x0ROITextFieldFocusLost
+
+  private void x1ROITextFieldFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_x1ROITextFieldFocusLost
+  {//GEN-HEADEREND:event_x1ROITextFieldFocusLost
+    changeParam("roi_x1", x1ROITextField.getText(), Configuration.VideoCapture);
+  }//GEN-LAST:event_x1ROITextFieldFocusLost
+
+  private void y0ROITextFieldFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_y0ROITextFieldFocusLost
+  {//GEN-HEADEREND:event_y0ROITextFieldFocusLost
+    changeParam("roi_y0", y0ROITextField.getText(), Configuration.VideoCapture);
+  }//GEN-LAST:event_y0ROITextFieldFocusLost
+
+  private void y1ROITextFieldFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_y1ROITextFieldFocusLost
+  {//GEN-HEADEREND:event_y1ROITextFieldFocusLost
+    changeParam("roi_y1", y1ROITextField.getText(), Configuration.VideoCapture);
+  }//GEN-LAST:event_y1ROITextFieldFocusLost
+
+  private void preProcessorCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_preProcessorCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_preProcessorCheckBoxActionPerformed
+    changeParam("enablePreProcessor", preProcessorCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_preProcessorCheckBoxActionPerformed
+
+  private void tictocComboBoxItemStateChanged(java.awt.event.ItemEvent evt)//GEN-FIRST:event_tictocComboBoxItemStateChanged
+  {//GEN-HEADEREND:event_tictocComboBoxItemStateChanged
+    changeParam("tictoc", tictocComboBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_tictocComboBoxItemStateChanged
+
+  private void frameDifferenceCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_frameDifferenceCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_frameDifferenceCheckBoxActionPerformed
+    changeParam("enableFrameDifferenceBGS", frameDifferenceCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_frameDifferenceCheckBoxActionPerformed
+
+  private void staticFrameDifferenceCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_staticFrameDifferenceCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_staticFrameDifferenceCheckBoxActionPerformed
+    changeParam("enableStaticFrameDifferenceBGS", staticFrameDifferenceCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_staticFrameDifferenceCheckBoxActionPerformed
+
+  private void weightedMovingMeanCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_weightedMovingMeanCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_weightedMovingMeanCheckBoxActionPerformed
+    changeParam("enableWeightedMovingMeanBGS", weightedMovingMeanCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_weightedMovingMeanCheckBoxActionPerformed
+
+  private void weightedMovingVarianceCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_weightedMovingVarianceCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_weightedMovingVarianceCheckBoxActionPerformed
+    changeParam("enableWeightedMovingVarianceBGS", weightedMovingVarianceCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_weightedMovingVarianceCheckBoxActionPerformed
+
+  private void adaptiveBackgroundLearningCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_adaptiveBackgroundLearningCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_adaptiveBackgroundLearningCheckBoxActionPerformed
+    changeParam("enableAdaptiveBackgroundLearning", adaptiveBackgroundLearningCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_adaptiveBackgroundLearningCheckBoxActionPerformed
+
+  private void openCVMoGV1CheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_openCVMoGV1CheckBoxActionPerformed
+  {//GEN-HEADEREND:event_openCVMoGV1CheckBoxActionPerformed
+    changeParam("enableMixtureOfGaussianV1BGS", openCVMoGV1CheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_openCVMoGV1CheckBoxActionPerformed
+
+  private void openCVMoGV2CheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_openCVMoGV2CheckBoxActionPerformed
+  {//GEN-HEADEREND:event_openCVMoGV2CheckBoxActionPerformed
+    changeParam("enableMixtureOfGaussianV2BGS", openCVMoGV2CheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_openCVMoGV2CheckBoxActionPerformed
+
+  private void temporalMeanCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_temporalMeanCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_temporalMeanCheckBoxActionPerformed
+    changeParam("enableDPMeanBGS", temporalMeanCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_temporalMeanCheckBoxActionPerformed
+
+  private void adaptiveMedianCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_adaptiveMedianCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_adaptiveMedianCheckBoxActionPerformed
+    changeParam("enableDPAdaptiveMedianBGS", adaptiveMedianCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_adaptiveMedianCheckBoxActionPerformed
+
+  private void temporalMedianCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_temporalMedianCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_temporalMedianCheckBoxActionPerformed
+    changeParam("enableDPPratiMediodBGS", temporalMedianCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_temporalMedianCheckBoxActionPerformed
+
+  private void eigenbackgroundCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_eigenbackgroundCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_eigenbackgroundCheckBoxActionPerformed
+    changeParam("enableDPEigenbackgroundBGS", eigenbackgroundCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_eigenbackgroundCheckBoxActionPerformed
+
+  private void gaussianAverageCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_gaussianAverageCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_gaussianAverageCheckBoxActionPerformed
+    changeParam("enableDPWrenGABGS", gaussianAverageCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_gaussianAverageCheckBoxActionPerformed
+
+  private void grimsonGMMCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_grimsonGMMCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_grimsonGMMCheckBoxActionPerformed
+    changeParam("enableDPGrimsonGMMBGS", grimsonGMMCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_grimsonGMMCheckBoxActionPerformed
+
+  private void zivkovicGMMCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_zivkovicGMMCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_zivkovicGMMCheckBoxActionPerformed
+    changeParam("enableDPZivkovicAGMMBGS", zivkovicGMMCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_zivkovicGMMCheckBoxActionPerformed
+
+  private void simpleGaussianCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_simpleGaussianCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_simpleGaussianCheckBoxActionPerformed
+    changeParam("enableLBSimpleGaussian", simpleGaussianCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_simpleGaussianCheckBoxActionPerformed
+
+  private void fuzzyGaussianCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_fuzzyGaussianCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_fuzzyGaussianCheckBoxActionPerformed
+    changeParam("enableLBFuzzyGaussian", fuzzyGaussianCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_fuzzyGaussianCheckBoxActionPerformed
+
+  private void mixtureOfGaussiansCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_mixtureOfGaussiansCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_mixtureOfGaussiansCheckBoxActionPerformed
+    changeParam("enableLBMixtureOfGaussians", mixtureOfGaussiansCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_mixtureOfGaussiansCheckBoxActionPerformed
+
+  private void adaptiveSOMCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_adaptiveSOMCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_adaptiveSOMCheckBoxActionPerformed
+    changeParam("enableLBAdaptiveSOM", adaptiveSOMCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_adaptiveSOMCheckBoxActionPerformed
+
+  private void fuzzyAdaptiveSOMCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_fuzzyAdaptiveSOMCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_fuzzyAdaptiveSOMCheckBoxActionPerformed
+    changeParam("enableLBFuzzyAdaptiveSOM", fuzzyAdaptiveSOMCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_fuzzyAdaptiveSOMCheckBoxActionPerformed
+
+  private void T2FGMMUMCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_T2FGMMUMCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_T2FGMMUMCheckBoxActionPerformed
+    changeParam("enableT2FGMM_UM", T2FGMMUMCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_T2FGMMUMCheckBoxActionPerformed
+
+  private void T2FGMMUVCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_T2FGMMUVCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_T2FGMMUVCheckBoxActionPerformed
+    changeParam("enableT2FGMM_UV", T2FGMMUVCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_T2FGMMUVCheckBoxActionPerformed
+
+  private void multiLayerBGSCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_multiLayerBGSCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_multiLayerBGSCheckBoxActionPerformed
+    changeParam("enableMultiLayerBGS", multiLayerBGSCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_multiLayerBGSCheckBoxActionPerformed
+
+  private void foregroundMaskAnalysisCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_foregroundMaskAnalysisCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_foregroundMaskAnalysisCheckBoxActionPerformed
+    changeParam("enableForegroundMaskAnalysis", foregroundMaskAnalysisCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_foregroundMaskAnalysisCheckBoxActionPerformed
+
+  private void frameDifferenceLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_frameDifferenceLabelMouseClicked
+  {//GEN-HEADEREND:event_frameDifferenceLabelMouseClicked
+    openFileContent(Configuration.FrameDifferenceBGS);
+  }//GEN-LAST:event_frameDifferenceLabelMouseClicked
+
+  private void staticFrameDifferenceLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_staticFrameDifferenceLabelMouseClicked
+  {//GEN-HEADEREND:event_staticFrameDifferenceLabelMouseClicked
+    openFileContent(Configuration.StaticFrameDifferenceBGS);
+  }//GEN-LAST:event_staticFrameDifferenceLabelMouseClicked
+
+  private void weightedMovingMeanLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_weightedMovingMeanLabelMouseClicked
+  {//GEN-HEADEREND:event_weightedMovingMeanLabelMouseClicked
+    openFileContent(Configuration.WeightedMovingMeanBGS);
+  }//GEN-LAST:event_weightedMovingMeanLabelMouseClicked
+
+  private void weightedMovingVarianceLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_weightedMovingVarianceLabelMouseClicked
+  {//GEN-HEADEREND:event_weightedMovingVarianceLabelMouseClicked
+    openFileContent(Configuration.WeightedMovingVarianceBGS);
+  }//GEN-LAST:event_weightedMovingVarianceLabelMouseClicked
+
+  private void adaptiveBackgroundLearningLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_adaptiveBackgroundLearningLabelMouseClicked
+  {//GEN-HEADEREND:event_adaptiveBackgroundLearningLabelMouseClicked
+    openFileContent(Configuration.AdaptiveBackgroundLearning);
+  }//GEN-LAST:event_adaptiveBackgroundLearningLabelMouseClicked
+
+  private void openCVMoGV1LabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_openCVMoGV1LabelMouseClicked
+  {//GEN-HEADEREND:event_openCVMoGV1LabelMouseClicked
+    openFileContent(Configuration.MixtureOfGaussianV1BGS);
+  }//GEN-LAST:event_openCVMoGV1LabelMouseClicked
+
+  private void openCVMoGV2LabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_openCVMoGV2LabelMouseClicked
+  {//GEN-HEADEREND:event_openCVMoGV2LabelMouseClicked
+    openFileContent(Configuration.MixtureOfGaussianV2BGS);
+  }//GEN-LAST:event_openCVMoGV2LabelMouseClicked
+
+  private void temporalMeanLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_temporalMeanLabelMouseClicked
+  {//GEN-HEADEREND:event_temporalMeanLabelMouseClicked
+    openFileContent(Configuration.DPMeanBGS);
+  }//GEN-LAST:event_temporalMeanLabelMouseClicked
+
+  private void adaptiveMedianLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_adaptiveMedianLabelMouseClicked
+  {//GEN-HEADEREND:event_adaptiveMedianLabelMouseClicked
+    openFileContent(Configuration.DPAdaptiveMedianBGS);
+  }//GEN-LAST:event_adaptiveMedianLabelMouseClicked
+
+  private void temporalMedianLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_temporalMedianLabelMouseClicked
+  {//GEN-HEADEREND:event_temporalMedianLabelMouseClicked
+    openFileContent(Configuration.DPPratiMediodBGS);
+  }//GEN-LAST:event_temporalMedianLabelMouseClicked
+
+  private void eigenbackgroundLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_eigenbackgroundLabelMouseClicked
+  {//GEN-HEADEREND:event_eigenbackgroundLabelMouseClicked
+    openFileContent(Configuration.DPEigenbackgroundBGS);
+  }//GEN-LAST:event_eigenbackgroundLabelMouseClicked
+
+  private void gaussianAverageLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_gaussianAverageLabelMouseClicked
+  {//GEN-HEADEREND:event_gaussianAverageLabelMouseClicked
+    openFileContent(Configuration.DPWrenGABGS);
+  }//GEN-LAST:event_gaussianAverageLabelMouseClicked
+
+  private void grimsonGMMLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_grimsonGMMLabelMouseClicked
+  {//GEN-HEADEREND:event_grimsonGMMLabelMouseClicked
+    openFileContent(Configuration.DPGrimsonGMMBGS);
+  }//GEN-LAST:event_grimsonGMMLabelMouseClicked
+
+  private void zivkovicGMMLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_zivkovicGMMLabelMouseClicked
+  {//GEN-HEADEREND:event_zivkovicGMMLabelMouseClicked
+    openFileContent(Configuration.DPZivkovicAGMMBGS);
+  }//GEN-LAST:event_zivkovicGMMLabelMouseClicked
+
+  private void simpleGaussianLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_simpleGaussianLabelMouseClicked
+  {//GEN-HEADEREND:event_simpleGaussianLabelMouseClicked
+    openFileContent(Configuration.LBSimpleGaussian);
+  }//GEN-LAST:event_simpleGaussianLabelMouseClicked
+
+  private void fuzzyGaussianLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_fuzzyGaussianLabelMouseClicked
+  {//GEN-HEADEREND:event_fuzzyGaussianLabelMouseClicked
+    openFileContent(Configuration.LBFuzzyGaussian);
+  }//GEN-LAST:event_fuzzyGaussianLabelMouseClicked
+
+  private void mixtureOfGaussiansLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_mixtureOfGaussiansLabelMouseClicked
+  {//GEN-HEADEREND:event_mixtureOfGaussiansLabelMouseClicked
+    openFileContent(Configuration.LBMixtureOfGaussians);
+  }//GEN-LAST:event_mixtureOfGaussiansLabelMouseClicked
+
+  private void adaptiveSOMLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_adaptiveSOMLabelMouseClicked
+  {//GEN-HEADEREND:event_adaptiveSOMLabelMouseClicked
+    openFileContent(Configuration.LBAdaptiveSOM);
+  }//GEN-LAST:event_adaptiveSOMLabelMouseClicked
+
+  private void fuzzyAdaptiveSOMLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_fuzzyAdaptiveSOMLabelMouseClicked
+  {//GEN-HEADEREND:event_fuzzyAdaptiveSOMLabelMouseClicked
+    openFileContent(Configuration.LBFuzzyAdaptiveSOM);
+  }//GEN-LAST:event_fuzzyAdaptiveSOMLabelMouseClicked
+
+  private void T2FGMMUMLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_T2FGMMUMLabelMouseClicked
+  {//GEN-HEADEREND:event_T2FGMMUMLabelMouseClicked
+    openFileContent(Configuration.T2FGMM_UM);
+  }//GEN-LAST:event_T2FGMMUMLabelMouseClicked
+
+  private void T2FGMMUVLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_T2FGMMUVLabelMouseClicked
+  {//GEN-HEADEREND:event_T2FGMMUVLabelMouseClicked
+    openFileContent(Configuration.T2FGMM_UV);
+  }//GEN-LAST:event_T2FGMMUVLabelMouseClicked
+
+  private void multiLayerBGSLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_multiLayerBGSLabelMouseClicked
+  {//GEN-HEADEREND:event_multiLayerBGSLabelMouseClicked
+    openFileContent(Configuration.MultiLayerBGS);
+  }//GEN-LAST:event_multiLayerBGSLabelMouseClicked
+
+  private void foregroundMaskAnalysisLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_foregroundMaskAnalysisLabelMouseClicked
+  {//GEN-HEADEREND:event_foregroundMaskAnalysisLabelMouseClicked
+    openFileContent(Configuration.ForegroundMaskAnalysis);
+  }//GEN-LAST:event_foregroundMaskAnalysisLabelMouseClicked
+
+  private void loadConfigComboBoxItemStateChanged(java.awt.event.ItemEvent evt)//GEN-FIRST:event_loadConfigComboBoxItemStateChanged
+  {//GEN-HEADEREND:event_loadConfigComboBoxItemStateChanged
+    update();
+  }//GEN-LAST:event_loadConfigComboBoxItemStateChanged
+
+  private void editButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_editButtonActionPerformed
+  {//GEN-HEADEREND:event_editButtonActionPerformed
+    if(loadConfigComboBox.getSelectedIndex() > 0)
+      openFileContent(loadConfigComboBox.getSelectedItem().toString());
+  }//GEN-LAST:event_editButtonActionPerformed
+
+  private void runButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_runButtonActionPerformed
+  {//GEN-HEADEREND:event_runButtonActionPerformed
+    appTabbedPaneSelectedIndex = 0;
+    execute();
+  }//GEN-LAST:event_runButtonActionPerformed
+
+  private void clearButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_clearButtonActionPerformed
+  {//GEN-HEADEREND:event_clearButtonActionPerformed
+    logTextPane.setText("");
+  }//GEN-LAST:event_clearButtonActionPerformed
+
+  private void autoscrollCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_autoscrollCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_autoscrollCheckBoxActionPerformed
+    autoscroll();
+  }//GEN-LAST:event_autoscrollCheckBoxActionPerformed
+
+  private void autoscrollLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_autoscrollLabelMouseClicked
+  {//GEN-HEADEREND:event_autoscrollLabelMouseClicked
+    autoscrollCheckBox.setSelected(!autoscrollCheckBox.isSelected());
+    autoscrollCheckBoxActionPerformed(null);
+  }//GEN-LAST:event_autoscrollLabelMouseClicked
+
+  private void checkAllButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_checkAllButtonActionPerformed
+  {//GEN-HEADEREND:event_checkAllButtonActionPerformed
+    enableAllBGS();
+  }//GEN-LAST:event_checkAllButtonActionPerformed
+
+  private void uncheckAllButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_uncheckAllButtonActionPerformed
+  {//GEN-HEADEREND:event_uncheckAllButtonActionPerformed
+    disableAllBGS();
+  }//GEN-LAST:event_uncheckAllButtonActionPerformed
+
+  private void openConfigButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_openConfigButtonActionPerformed
+  {//GEN-HEADEREND:event_openConfigButtonActionPerformed
+    openFileContent(Configuration.FrameProcessor);
+  }//GEN-LAST:event_openConfigButtonActionPerformed
+
+  private void fuzzySugenoIntegralLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_fuzzySugenoIntegralLabelMouseClicked
+  {//GEN-HEADEREND:event_fuzzySugenoIntegralLabelMouseClicked
+    openFileContent(Configuration.FuzzySugenoIntegral);
+  }//GEN-LAST:event_fuzzySugenoIntegralLabelMouseClicked
+
+  private void fuzzySugenoIntegralCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_fuzzySugenoIntegralCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_fuzzySugenoIntegralCheckBoxActionPerformed
+    changeParam("enableFuzzySugenoIntegral", fuzzySugenoIntegralCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_fuzzySugenoIntegralCheckBoxActionPerformed
+
+  private void fuzzyChoquetIntegralLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_fuzzyChoquetIntegralLabelMouseClicked
+  {//GEN-HEADEREND:event_fuzzyChoquetIntegralLabelMouseClicked
+    openFileContent(Configuration.FuzzyChoquetIntegral);
+  }//GEN-LAST:event_fuzzyChoquetIntegralLabelMouseClicked
+
+  private void fuzzyChoquetIntegralCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_fuzzyChoquetIntegralCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_fuzzyChoquetIntegralCheckBoxActionPerformed
+    changeParam("enableFuzzyChoquetIntegral", fuzzyChoquetIntegralCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_fuzzyChoquetIntegralCheckBoxActionPerformed
+
+  private void runButton2ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_runButton2ActionPerformed
+  {//GEN-HEADEREND:event_runButton2ActionPerformed
+    appTabbedPaneSelectedIndex = 1; 
+    execute();
+  }//GEN-LAST:event_runButton2ActionPerformed
+
+  private void runButton3ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_runButton3ActionPerformed
+  {//GEN-HEADEREND:event_runButton3ActionPerformed
+    appTabbedPaneSelectedIndex = 2;
+    execute();
+  }//GEN-LAST:event_runButton3ActionPerformed
+
+  private void runButton4ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_runButton4ActionPerformed
+  {//GEN-HEADEREND:event_runButton4ActionPerformed
+    execute();
+  }//GEN-LAST:event_runButton4ActionPerformed
+
+  private void returnButton2ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_returnButton2ActionPerformed
+  {//GEN-HEADEREND:event_returnButton2ActionPerformed
+    retur(false);
+  }//GEN-LAST:event_returnButton2ActionPerformed
+
+  private void autoclearLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_autoclearLabelMouseClicked
+  {//GEN-HEADEREND:event_autoclearLabelMouseClicked
+    autoclearCheckBox.setSelected(!autoclearCheckBox.isSelected());
+  }//GEN-LAST:event_autoclearLabelMouseClicked
+
+  private void T2FMRFUMLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_T2FMRFUMLabelMouseClicked
+  {//GEN-HEADEREND:event_T2FMRFUMLabelMouseClicked
+    openFileContent(Configuration.T2FMRF_UM);
+  }//GEN-LAST:event_T2FMRFUMLabelMouseClicked
+
+  private void T2FMRFUMCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_T2FMRFUMCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_T2FMRFUMCheckBoxActionPerformed
+    changeParam("enableT2FMRF_UM", T2FMRFUMCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_T2FMRFUMCheckBoxActionPerformed
+
+  private void T2FMRFUVLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_T2FMRFUVLabelMouseClicked
+  {//GEN-HEADEREND:event_T2FMRFUVLabelMouseClicked
+    openFileContent(Configuration.T2FMRF_UV);
+  }//GEN-LAST:event_T2FMRFUVLabelMouseClicked
+
+  private void T2FMRFUVCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_T2FMRFUVCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_T2FMRFUVCheckBoxActionPerformed
+    changeParam("enableT2FMRF_UV", T2FMRFUVCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_T2FMRFUVCheckBoxActionPerformed
+
+  private void GMGCheckBoxActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_GMGCheckBoxActionPerformed
+  {//GEN-HEADEREND:event_GMGCheckBoxActionPerformed
+    changeParam("enableGMG", GMGCheckBox, Configuration.FrameProcessor);
+  }//GEN-LAST:event_GMGCheckBoxActionPerformed
+
+  private void GMGLabelMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_GMGLabelMouseClicked
+  {//GEN-HEADEREND:event_GMGLabelMouseClicked
+    openFileContent(Configuration.GMG);
+  }//GEN-LAST:event_GMGLabelMouseClicked
+
+    private void VuMeterLabelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_VuMeterLabelMouseClicked
+      openFileContent(Configuration.VuMeter);
+    }//GEN-LAST:event_VuMeterLabelMouseClicked
+
+    private void VuMeterCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_VuMeterCheckBoxActionPerformed
+      changeParam("enableVuMeter", VuMeterCheckBox, Configuration.FrameProcessor);
+    }//GEN-LAST:event_VuMeterCheckBoxActionPerformed
+
+  // Variables declaration - do not modify//GEN-BEGIN:variables
+  private javax.swing.JCheckBox GMGCheckBox;
+  private javax.swing.JLabel GMGLabel;
+  private javax.swing.JCheckBox ROIdefinedCheckBox;
+  private javax.swing.JCheckBox T2FGMMUMCheckBox;
+  private javax.swing.JLabel T2FGMMUMLabel;
+  private javax.swing.JCheckBox T2FGMMUVCheckBox;
+  private javax.swing.JLabel T2FGMMUVLabel;
+  private javax.swing.JCheckBox T2FMRFUMCheckBox;
+  private javax.swing.JLabel T2FMRFUMLabel;
+  private javax.swing.JCheckBox T2FMRFUVCheckBox;
+  private javax.swing.JLabel T2FMRFUVLabel;
+  private javax.swing.JCheckBox VuMeterCheckBox;
+  private javax.swing.JLabel VuMeterLabel;
+  private javax.swing.JCheckBox adaptiveBackgroundLearningCheckBox;
+  private javax.swing.JLabel adaptiveBackgroundLearningLabel;
+  private javax.swing.JCheckBox adaptiveMedianCheckBox;
+  private javax.swing.JLabel adaptiveMedianLabel;
+  private javax.swing.JCheckBox adaptiveSOMCheckBox;
+  private javax.swing.JLabel adaptiveSOMLabel;
+  private javax.swing.JTabbedPane appTabbedPane;
+  private javax.swing.JCheckBox autoclearCheckBox;
+  private javax.swing.JLabel autoclearLabel;
+  private javax.swing.JCheckBox autoscrollCheckBox;
+  private javax.swing.JLabel autoscrollLabel;
+  private javax.swing.JTextField cameraIndexTextField;
+  private javax.swing.JButton checkAllButton;
+  private javax.swing.JButton clearButton;
+  private javax.swing.JTextField cmdTextField;
+  private javax.swing.JTextField compareAtTextField;
+  private javax.swing.JButton editButton;
+  private javax.swing.JCheckBox eigenbackgroundCheckBox;
+  private javax.swing.JLabel eigenbackgroundLabel;
+  private javax.swing.JTextPane fileContentTextPane;
+  private javax.swing.JLabel fileNameLabel;
+  private javax.swing.JCheckBox foregroundMaskAnalysisCheckBox;
+  private javax.swing.JLabel foregroundMaskAnalysisLabel;
+  private javax.swing.JCheckBox frameDifferenceCheckBox;
+  private javax.swing.JLabel frameDifferenceLabel;
+  private javax.swing.JCheckBox fuzzyAdaptiveSOMCheckBox;
+  private javax.swing.JLabel fuzzyAdaptiveSOMLabel;
+  private javax.swing.JCheckBox fuzzyChoquetIntegralCheckBox;
+  private javax.swing.JLabel fuzzyChoquetIntegralLabel;
+  private javax.swing.JCheckBox fuzzyGaussianCheckBox;
+  private javax.swing.JLabel fuzzyGaussianLabel;
+  private javax.swing.JCheckBox fuzzySugenoIntegralCheckBox;
+  private javax.swing.JLabel fuzzySugenoIntegralLabel;
+  private javax.swing.JCheckBox gaussianAverageCheckBox;
+  private javax.swing.JLabel gaussianAverageLabel;
+  private javax.swing.JCheckBox grimsonGMMCheckBox;
+  private javax.swing.JLabel grimsonGMMLabel;
+  private javax.swing.JLabel jLabel1;
+  private javax.swing.JLabel jLabel10;
+  private javax.swing.JLabel jLabel11;
+  private javax.swing.JLabel jLabel12;
+  private javax.swing.JLabel jLabel2;
+  private javax.swing.JLabel jLabel3;
+  private javax.swing.JLabel jLabel34;
+  private javax.swing.JLabel jLabel4;
+  private javax.swing.JLabel jLabel5;
+  private javax.swing.JLabel jLabel6;
+  private javax.swing.JLabel jLabel7;
+  private javax.swing.JLabel jLabel8;
+  private javax.swing.JLabel jLabel9;
+  private javax.swing.JMenu jMenu1;
+  private javax.swing.JMenu jMenu2;
+  private javax.swing.JMenu jMenu3;
+  private javax.swing.JMenu jMenu4;
+  private javax.swing.JMenuBar jMenuBar1;
+  private javax.swing.JMenuBar jMenuBar2;
+  private javax.swing.JMenuItem jMenuItem1;
+  private javax.swing.JMenuItem jMenuItem2;
+  private javax.swing.JPanel jPanel1;
+  private javax.swing.JPanel jPanel10;
+  private javax.swing.JPanel jPanel11;
+  private javax.swing.JPanel jPanel12;
+  private javax.swing.JPanel jPanel13;
+  private javax.swing.JPanel jPanel16;
+  private javax.swing.JPanel jPanel17;
+  private javax.swing.JPanel jPanel18;
+  private javax.swing.JPanel jPanel2;
+  private javax.swing.JPanel jPanel3;
+  private javax.swing.JPanel jPanel4;
+  private javax.swing.JPanel jPanel6;
+  private javax.swing.JPanel jPanel7;
+  private javax.swing.JPanel jPanel9;
+  private javax.swing.JScrollPane jScrollPane1;
+  private javax.swing.JToolBar.Separator jSeparator1;
+  private javax.swing.JToolBar.Separator jSeparator2;
+  private javax.swing.JToolBar.Separator jSeparator3;
+  private javax.swing.JToolBar.Separator jSeparator4;
+  private javax.swing.JToolBar.Separator jSeparator5;
+  private javax.swing.JToolBar.Separator jSeparator6;
+  private javax.swing.JToolBar jToolBar1;
+  private javax.swing.JToolBar jToolBar2;
+  private javax.swing.JComboBox loadConfigComboBox;
+  private javax.swing.JTextPane logTextPane;
+  private javax.swing.JScrollPane logTextScrollPane;
+  private javax.swing.JCheckBox mixtureOfGaussiansCheckBox;
+  private javax.swing.JLabel mixtureOfGaussiansLabel;
+  private javax.swing.JCheckBox multiLayerBGSCheckBox;
+  private javax.swing.JLabel multiLayerBGSLabel;
+  private javax.swing.JCheckBox openCVMoGV1CheckBox;
+  private javax.swing.JLabel openCVMoGV1Label;
+  private javax.swing.JCheckBox openCVMoGV2CheckBox;
+  private javax.swing.JLabel openCVMoGV2Label;
+  private javax.swing.JButton openConfigButton;
+  private javax.swing.JCheckBox preProcessorCheckBox;
+  private javax.swing.JLabel preProcessorLabel;
+  private javax.swing.JButton reloadButton;
+  private javax.swing.JTextField resizeFrameTextField;
+  private javax.swing.JButton returnButton;
+  private javax.swing.JButton returnButton2;
+  private javax.swing.JButton runButton;
+  private javax.swing.JButton runButton2;
+  private javax.swing.JButton runButton3;
+  private javax.swing.JButton runButton4;
+  private javax.swing.JButton saveButton;
+  private javax.swing.JButton setDatasetFolderButton;
+  private javax.swing.JButton setImageRefButton;
+  private javax.swing.JButton setInputFileButton;
+  private javax.swing.JButton setTestFileButton;
+  private javax.swing.JButton setTrainFileButton;
+  private javax.swing.JCheckBox showOutputCheckBox;
+  private javax.swing.JCheckBox simpleGaussianCheckBox;
+  private javax.swing.JLabel simpleGaussianLabel;
+  private javax.swing.JCheckBox staticFrameDifferenceCheckBox;
+  private javax.swing.JLabel staticFrameDifferenceLabel;
+  private javax.swing.JTextField stopVideoAtTextField;
+  private javax.swing.JCheckBox temporalMeanCheckBox;
+  private javax.swing.JLabel temporalMeanLabel;
+  private javax.swing.JCheckBox temporalMedianCheckBox;
+  private javax.swing.JLabel temporalMedianLabel;
+  private javax.swing.JComboBox tictocComboBox;
+  private javax.swing.JButton uncheckAllButton;
+  private javax.swing.JRadioButton useCameraRadioButton;
+  private javax.swing.JRadioButton useDatasetRadioButton;
+  private javax.swing.JCheckBox useForegroundMaskAnalysisCheckBox;
+  private javax.swing.JCheckBox useROICheckBox;
+  private javax.swing.JRadioButton useVideoRadioButton;
+  private javax.swing.JCheckBox verticalFlipCheckBox;
+  private javax.swing.JCheckBox weightedMovingMeanCheckBox;
+  private javax.swing.JLabel weightedMovingMeanLabel;
+  private javax.swing.JCheckBox weightedMovingVarianceCheckBox;
+  private javax.swing.JLabel weightedMovingVarianceLabel;
+  private javax.swing.JTextField x0ROITextField;
+  private javax.swing.JTextField x1ROITextField;
+  private javax.swing.JTextField y0ROITextField;
+  private javax.swing.JTextField y1ROITextField;
+  private javax.swing.JCheckBox zivkovicGMMCheckBox;
+  private javax.swing.JLabel zivkovicGMMLabel;
+  // End of variables declaration//GEN-END:variables
+}
diff --git a/java_gui/src/br/com/bgslibrary/resources/logo.jpg b/java_gui/src/br/com/bgslibrary/resources/logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b14cadb7d6a0dedcbdbf535ae7f2f6adcc11cd6d
Binary files /dev/null and b/java_gui/src/br/com/bgslibrary/resources/logo.jpg differ