From 321b15a7e448fbb423d08301a7ae33a3ee3afb70 Mon Sep 17 00:00:00 2001
From: Natalia Bebjakova <xbebjak@fi.muni.cz>
Date: Thu, 26 Mar 2020 09:59:51 +0100
Subject: [PATCH] symmetry estimate

---
 .idea/workspace.xml                           |  114 +-
 .../java/cz/fidentis/analyst/gui/Canvas.form  |  298 ++++
 .../java/cz/fidentis/analyst/gui/Canvas.java  |  348 +++--
 .../analyst/gui/GeneralGLEventListener.java   |  318 ++--
 .../cz/fidentis/analyst/gui/Interface.java    | 1367 -----------------
 .../fidentis/analyst/gui/SymmetryPanel.form   |  427 +++++
 .../fidentis/analyst/gui/SymmetryPanel.java   |  604 ++++++++
 .../fidentis/analyst/gui/UserInterface.form   |  933 +++++++++++
 .../fidentis/analyst/gui/UserInterface.java   | 1177 ++++++++++++++
 .../analyst/{ => gui}/resources/backround.jpg |  Bin
 .../{ => gui}/resources/batchProcessing.png   |  Bin
 .../resources/batchProcessingGreen.png        |  Bin
 .../gui/resources/batchProcessingStart.png    |  Bin 0 -> 5829 bytes
 .../gui/resources/blackBackroundCanvas.png    |  Bin 0 -> 2613 bytes
 .../resources/blackBackroundCanvasPressed.png |  Bin 0 -> 2626 bytes
 .../analyst/{ => gui}/resources/bottom.png    |  Bin
 .../fidentis/analyst/gui/resources/close.png  |  Bin 0 -> 2540 bytes
 .../{ => gui}/resources/compareTwo.png        |  Bin
 .../{ => gui}/resources/compareTwoGreen.png   |  Bin
 .../analyst/gui/resources/compareTwoStart.png |  Bin 0 -> 6724 bytes
 .../resources/copareWithDatabase.png          |  Bin
 .../resources/copareWithDatabaseGreen.png     |  Bin
 .../gui/resources/copareWithDatabaseStart.png |  Bin 0 -> 6318 bytes
 .../analyst/{ => gui}/resources/divide.png    |  Bin
 .../{ => gui}/resources/downButton.png        |  Bin
 .../{ => gui}/resources/downButtonPressed.png |  Bin
 .../{ => gui}/resources/exportModel.png       |  Bin
 .../resources/exportModelPressed.png          |  Bin
 .../analyst/gui/resources/exportedModel.png   |  Bin 0 -> 3290 bytes
 .../analyst/{ => gui}/resources/home.png      |  Bin
 .../{ => gui}/resources/leftButton.png        |  Bin
 .../{ => gui}/resources/leftButtonPressed.png |  Bin
 .../analyst/gui/resources/loadCanva.png       |  Bin 0 -> 9309 bytes
 .../gui/resources/loadCanvaClicked.png        |  Bin 0 -> 8512 bytes
 .../analyst/gui/resources/loadModel.png       |  Bin 0 -> 3891 bytes
 .../gui/resources/loadModelPressed.png        |  Bin 0 -> 4422 bytes
 .../analyst/{ => gui}/resources/logo.png      |  Bin
 .../analyst/{ => gui}/resources/logo2.png     |  Bin
 .../analyst/{ => gui}/resources/logo3.png     |  Bin
 .../analyst/{ => gui}/resources/maximize.png  |  Bin
 .../analyst/gui/resources/minimize.png        |  Bin 0 -> 2163 bytes
 .../analyst/{ => gui}/resources/minus.png     |  Bin
 .../{ => gui}/resources/minusPressed.png      |  Bin
 .../analyst/gui/resources/modelView.png       |  Bin 0 -> 9348 bytes
 .../analyst/gui/resources/modelViewMoved.png  |  Bin 0 -> 9788 bytes
 .../analyst/{ => gui}/resources/n.png         |  Bin
 .../{ => gui}/resources/navigBackground.png   |  Bin
 .../resources/navigationBackground.png        |  Bin
 .../{ => gui}/resources/new_project.jpg       |  Bin
 .../{ => gui}/resources/new_project.png       |  Bin
 .../resources/new_project_opened.png          |  Bin
 .../analyst/gui/resources/notLoadedModel.png  |  Bin 0 -> 3378 bytes
 .../analyst/gui/resources/originalModel.png   |  Bin 0 -> 4999 bytes
 .../gui/resources/originalModelPressed.png    |  Bin 0 -> 4670 bytes
 .../analyst/{ => gui}/resources/plus.png      |  Bin
 .../{ => gui}/resources/plusPressed.png       |  Bin
 .../{ => gui}/resources/resetButton.png       |  Bin
 .../resources/resetButtonPressed.png          |  Bin
 .../{ => gui}/resources/rightBottom.png       |  Bin
 .../{ => gui}/resources/rightButton.png       |  Bin
 .../resources/rightButtonPressed.png          |  Bin
 .../analyst/gui/resources/selectPoints.png    |  Bin 0 -> 4035 bytes
 .../analyst/gui/resources/showPlane.png       |  Bin 0 -> 3359 bytes
 .../analyst/gui/resources/showPlanePane.png   |  Bin 0 -> 3255 bytes
 .../gui/resources/showPlanePressed.png        |  Bin 0 -> 3133 bytes
 .../analyst/{ => gui}/resources/symetry.png   |  Bin
 .../analyst/gui/resources/symetryCount.png    |  Bin 0 -> 4915 bytes
 .../gui/resources/symetryCountClicked.png     |  Bin 0 -> 4839 bytes
 .../{ => gui}/resources/symetryGreen.png      |  Bin
 .../analyst/gui/resources/symetryStart.png    |  Bin 0 -> 5559 bytes
 .../gui/resources/symetryStartMoved.png       |  Bin 0 -> 5564 bytes
 .../analyst/gui/resources/symetryStartP.png   |  Bin 0 -> 5510 bytes
 .../gui/resources/symetryStartPanel.png       |  Bin 0 -> 5564 bytes
 .../analyst/{ => gui}/resources/texture.png   |  Bin
 .../analyst/{ => gui}/resources/texture2.png  |  Bin
 .../analyst/{ => gui}/resources/upButton.png  |  Bin
 .../{ => gui}/resources/upButtonPressed.png   |  Bin
 .../gui/resources/whiteBackroundCanvas.png    |  Bin 0 -> 2647 bytes
 .../resources/whiteBackroundCanvasPressed.png |  Bin 0 -> 2667 bytes
 .../analyst/gui/resources/wireframe.png       |  Bin 0 -> 4143 bytes
 .../cz/fidentis/analyst/resources/close.png   |  Bin 2314 -> 0 bytes
 .../fidentis/analyst/resources/loadCanva.png  |  Bin 9393 -> 0 bytes
 .../analyst/resources/loadCanvaClicked.png    |  Bin 8635 -> 0 bytes
 .../fidentis/analyst/resources/loadModel.png  |  Bin 3921 -> 0 bytes
 .../analyst/resources/loadModelPressed.png    |  Bin 4545 -> 0 bytes
 .../fidentis/analyst/resources/modelView.png  |  Bin 11398 -> 0 bytes
 .../analyst/resources/modelViewMoved.png      |  Bin 11495 -> 0 bytes
 .../analyst/resources/symetryCount.png        |  Bin 4912 -> 0 bytes
 .../analyst/resources/symetryCountClicked.png |  Bin 4845 -> 0 bytes
 .../fidentis/analyst/resources/wireframe.png  |  Bin 5000 -> 0 bytes
 .../analyst/symmetry/AproxSymmetryPlane.java  |   42 +
 .../analyst/symmetry/BoundingBox.java         |  147 ++
 .../cz/fidentis/analyst/symmetry/Config.java  |  157 ++
 .../cz/fidentis/analyst/symmetry/Plane.java   |   88 ++
 .../analyst/symmetry/SymmetryCounter.java     |  812 ++++++++++
 .../fidentis/analyst/symmetry/Triangle.java   |  101 ++
 .../analyst/mesh/core/CornerTable.java        |   70 +-
 .../analyst/mesh/core/CornerTableRow.java     |   22 +-
 .../fidentis/analyst/mesh/core/MeshFacet.java |   55 +-
 .../fidentis/analyst/mesh/core/MeshModel.java |   21 +-
 .../fidentis/analyst/mesh/core/MeshPoint.java |  206 ++-
 .../analyst/mesh/io/MeshModelExporter.java    |  221 +++
 .../analyst/mesh/io}/ModelFileFilter.java     |   33 +-
 103 files changed, 5699 insertions(+), 1862 deletions(-)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.form
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/Interface.java
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.form
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.java
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/UserInterface.form
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/UserInterface.java
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/backround.jpg (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/batchProcessing.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/batchProcessingGreen.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/batchProcessingStart.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/blackBackroundCanvas.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/blackBackroundCanvasPressed.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/bottom.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/close.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/compareTwo.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/compareTwoGreen.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/compareTwoStart.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/copareWithDatabase.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/copareWithDatabaseGreen.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/copareWithDatabaseStart.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/divide.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/downButton.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/downButtonPressed.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/exportModel.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/exportModelPressed.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/exportedModel.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/home.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/leftButton.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/leftButtonPressed.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadCanva.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadCanvaClicked.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadModel.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadModelPressed.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/logo.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/logo2.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/logo3.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/maximize.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/minimize.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/minus.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/minusPressed.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/modelView.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/modelViewMoved.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/n.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/navigBackground.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/navigationBackground.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/new_project.jpg (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/new_project.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/new_project_opened.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/notLoadedModel.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/originalModel.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/originalModelPressed.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/plus.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/plusPressed.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/resetButton.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/resetButtonPressed.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/rightBottom.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/rightButton.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/rightButtonPressed.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/selectPoints.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlane.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlanePane.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlanePressed.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/symetry.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryCount.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryCountClicked.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/symetryGreen.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStart.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartMoved.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartP.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartPanel.png
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/texture.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/texture2.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/upButton.png (100%)
 rename GUI/src/main/java/cz/fidentis/analyst/{ => gui}/resources/upButtonPressed.png (100%)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/whiteBackroundCanvas.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/whiteBackroundCanvasPressed.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/resources/wireframe.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/close.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/loadCanva.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/loadCanvaClicked.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/loadModel.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/loadModelPressed.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/modelView.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/modelViewMoved.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/symetryCount.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/symetryCountClicked.png
 delete mode 100644 GUI/src/main/java/cz/fidentis/analyst/resources/wireframe.png
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/symmetry/AproxSymmetryPlane.java
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/symmetry/BoundingBox.java
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/symmetry/Config.java
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/symmetry/Plane.java
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/symmetry/SymmetryCounter.java
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/symmetry/Triangle.java
 create mode 100644 MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshModelExporter.java
 rename {GUI/src/main/java/cz/fidentis/analyst/gui => MeshModel/src/main/java/cz/fidentis/analyst/mesh/io}/ModelFileFilter.java (50%)

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b55ccdb7..748969aa 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,11 +2,7 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="dd1d4179-bace-49d8-b3fd-a51317f8ae06" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_jogamp_jogl_jogl_all_2_0_rc11.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/GUI/GUI.iml" beforeDir="false" afterPath="$PROJECT_DIR$/GUI/GUI.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/GUI/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/GUI/pom.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/GeneralGLEventListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/GeneralGLEventListener.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/MeshModel/MeshModel.iml" beforeDir="false" afterPath="$PROJECT_DIR$/MeshModel/MeshModel.iml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/target/" />
     <ignored path="$PROJECT_DIR$/MeshModel/target/" />
@@ -38,7 +34,7 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="12">
+            <state relative-caret-position="119">
               <caret line="7" column="13" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
             </state>
           </provider>
@@ -47,7 +43,7 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-872">
+            <state relative-caret-position="153">
               <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
             </state>
           </provider>
@@ -56,12 +52,10 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-1820">
+            <state relative-caret-position="3315">
               <caret line="381" column="28" selection-start-line="381" selection-start-column="28" selection-end-line="381" selection-end-column="28" />
               <folding>
                 <element signature="imports" expanded="true" />
-                <element signature="e#15781#15916#0" expanded="true" />
-                <element signature="e#15915#15916#0" expanded="true" />
               </folding>
             </state>
           </provider>
@@ -70,7 +64,7 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/GeneralGLEventListener.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="287">
+            <state relative-caret-position="6426">
               <caret line="406" column="44" selection-start-line="406" selection-start-column="44" selection-end-line="406" selection-end-column="44" />
               <folding>
                 <element signature="imports" expanded="true" />
@@ -82,12 +76,11 @@
       <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/Interface.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="54">
-              <caret line="221" column="25" lean-forward="true" selection-start-line="221" selection-start-column="25" selection-end-line="221" selection-end-column="25" />
+            <state relative-caret-position="-221">
+              <caret line="14" column="32" lean-forward="true" selection-start-line="14" selection-start-column="32" selection-end-line="14" selection-end-column="32" />
               <folding>
                 <element signature="imports" expanded="true" />
-                <element signature="e#11067#11244#0" expanded="true" />
-                <element signature="e#11243#11244#0" expanded="true" />
+                <element signature="e#4076#4165#0" expanded="true" />
               </folding>
             </state>
           </provider>
@@ -114,7 +107,7 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-612">
+            <state relative-caret-position="153">
               <caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
             </state>
           </provider>
@@ -184,8 +177,8 @@
     <option name="delegateBuildToMaven" value="true" />
   </component>
   <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="-9" />
-    <option name="y" value="-9" />
+    <option name="x" value="-10" />
+    <option name="y" value="-10" />
     <option name="width" value="980" />
     <option name="height" value="1050" />
   </component>
@@ -194,6 +187,7 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
+      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -227,15 +221,6 @@
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
             </path>
-            <path>
-              <item name="FIDENTIS-Analyst-parent" type="b2602c69:ProjectViewProjectNode" />
-              <item name="analyst2" type="462c0819:PsiDirectoryNode" />
-              <item name="GUI" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="main" type="462c0819:PsiDirectoryNode" />
-              <item name="java" type="462c0819:PsiDirectoryNode" />
-              <item name="gui" type="462c0819:PsiDirectoryNode" />
-            </path>
             <path>
               <item name="FIDENTIS-Analyst-parent" type="b2602c69:ProjectViewProjectNode" />
               <item name="analyst2" type="462c0819:PsiDirectoryNode" />
@@ -296,14 +281,13 @@
         </subPane>
       </pane>
       <pane id="PackagesPane" />
-      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="aspect.path.notification.shown" value="true" />
-    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1583523876314" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1583613721619" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../J5" />
     <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
     <property name="nodejs_npm_path_reset_for_default_project" value="true" />
     <property name="project.structure.last.edited" value="Global Libraries" />
@@ -359,18 +343,19 @@
       <workItem from="1582807369146" duration="1114000" />
       <workItem from="1582811692938" duration="1887000" />
       <workItem from="1583409089486" duration="2462000" />
-      <workItem from="1583521284239" duration="1204000" />
+      <workItem from="1583521284239" duration="2331000" />
+      <workItem from="1584477266625" duration="1814000" />
+      <workItem from="1584557414142" duration="72000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="14619000" />
+    <option name="totallyTimeSpent" value="17632000" />
   </component>
   <component name="ToolWindowManager">
-    <frame x="-7" y="-7" width="1550" height="838" extended-state="7" />
-    <editor active="true" />
+    <frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.27114093" />
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.27919462" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
       <window_info id="Image Layers" order="2" />
       <window_info id="Designer" order="3" />
@@ -379,7 +364,7 @@
       <window_info id="Favorites" order="6" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.3286119" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.3286119" />
       <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@@ -395,7 +380,7 @@
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
       <window_info anchor="right" id="Palette" order="3" />
       <window_info anchor="right" id="Theme Preview" order="4" />
-      <window_info anchor="right" id="Maven" order="5" visible="true" weight="0.2543624" />
+      <window_info anchor="right" id="Maven" order="5" visible="true" weight="0.094630875" />
       <window_info anchor="right" id="Capture Analysis" order="6" />
       <window_info anchor="right" id="Palette&#9;" order="7" />
       <window_info anchor="right" id="Database" order="8" />
@@ -405,20 +390,6 @@
     <option name="version" value="1" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/application/src/test/java/cz/fidentis/analyst/mesh/core/CornerTableRowTest.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="289">
-          <caret line="17" selection-start-line="17" selection-end-line="17" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-612">
-          <caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="170">
@@ -432,21 +403,31 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="12">
+        <state relative-caret-position="119">
           <caret line="7" column="13" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-872">
+        <state relative-caret-position="153">
           <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="3315">
+          <caret line="381" column="28" selection-start-line="381" selection-start-column="28" selection-end-line="381" selection-end-column="28" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/GeneralGLEventListener.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="287">
+        <state relative-caret-position="6426">
           <caret line="406" column="44" selection-start-line="406" selection-start-column="44" selection-end-line="406" selection-end-column="44" />
           <folding>
             <element signature="imports" expanded="true" />
@@ -454,6 +435,13 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/application/src/test/java/cz/fidentis/analyst/mesh/core/CornerTableRowTest.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="289">
+          <caret line="17" selection-start-line="17" selection-end-line="17" />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/ModelFileFilter.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="306">
@@ -461,26 +449,20 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.java">
+    <entry file="file://$PROJECT_DIR$/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-1820">
-          <caret line="381" column="28" selection-start-line="381" selection-start-column="28" selection-end-line="381" selection-end-column="28" />
-          <folding>
-            <element signature="imports" expanded="true" />
-            <element signature="e#15781#15916#0" expanded="true" />
-            <element signature="e#15915#15916#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="153">
+          <caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/GUI/src/main/java/cz/fidentis/analyst/gui/Interface.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="54">
-          <caret line="221" column="25" lean-forward="true" selection-start-line="221" selection-start-column="25" selection-end-line="221" selection-end-column="25" />
+        <state relative-caret-position="-221">
+          <caret line="14" column="32" lean-forward="true" selection-start-line="14" selection-start-column="32" selection-end-line="14" selection-end-column="32" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#11067#11244#0" expanded="true" />
-            <element signature="e#11243#11244#0" expanded="true" />
+            <element signature="e#4076#4165#0" expanded="true" />
           </folding>
         </state>
       </provider>
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.form b/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.form
new file mode 100644
index 00000000..f2b81b26
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.form
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.9" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <Properties>
+    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+      <Color blue="0" green="0" red="0" type="rgb"/>
+    </Property>
+  </Properties>
+  <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"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,93,0,0,1,-79"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
+      <Properties>
+        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+          <Color blue="28" green="28" red="28" type="rgb"/>
+        </Property>
+        <Property name="toolTipText" type="java.lang.String" value=""/>
+        <Property name="opaque" type="boolean" value="true"/>
+      </Properties>
+      <Events>
+        <EventHandler event="componentResized" listener="java.awt.event.ComponentListener" parameters="java.awt.event.ComponentEvent" handler="jLayeredPane1ComponentResized"/>
+        <EventHandler event="componentShown" listener="java.awt.event.ComponentListener" parameters="java.awt.event.ComponentEvent" handler="jLayeredPane1ComponentShown"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="resetButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/resetButton.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="resetButtonMouseMoved"/>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="resetButtonMouseClicked"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="resetButtonMouseExited"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="60" y="70" width="30" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="upNavigationButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/upButton.png"/>
+            </Property>
+            <Property name="borderPainted" type="boolean" value="false"/>
+            <Property name="contentAreaFilled" type="boolean" value="false"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="upNavigationButtonMousePressed"/>
+            <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="upNavigationButtonMouseReleased"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JLayeredPane.layer" type="java.lang.Integer" value="200"/>
+          </AuxValues>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="60" y="40" width="30" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="leftNavigationButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/leftButton.png"/>
+            </Property>
+            <Property name="borderPainted" type="boolean" value="false"/>
+            <Property name="contentAreaFilled" type="boolean" value="false"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="leftNavigationButtonMousePressed"/>
+            <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="leftNavigationButtonMouseReleased"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JLayeredPane.layer" type="java.lang.Integer" value="200"/>
+          </AuxValues>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="30" y="70" width="30" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="minusNavigationButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/minus.png"/>
+            </Property>
+            <Property name="borderPainted" type="boolean" value="false"/>
+            <Property name="contentAreaFilled" type="boolean" value="false"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="minusNavigationButtonMousePressed"/>
+            <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="minusNavigationButtonMouseReleased"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JLayeredPane.layer" type="java.lang.Integer" value="200"/>
+          </AuxValues>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="80" y="130" width="30" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="downNavigationButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/downButton.png"/>
+            </Property>
+            <Property name="borderPainted" type="boolean" value="false"/>
+            <Property name="contentAreaFilled" type="boolean" value="false"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="downNavigationButtonMousePressed"/>
+            <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="downNavigationButtonMouseReleased"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JLayeredPane.layer" type="java.lang.Integer" value="200"/>
+          </AuxValues>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="60" y="100" width="30" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="plusNavigationButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/plus.png"/>
+            </Property>
+            <Property name="borderPainted" type="boolean" value="false"/>
+            <Property name="contentAreaFilled" type="boolean" value="false"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="plusNavigationButtonMousePressed"/>
+            <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="plusNavigationButtonMouseReleased"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JLayeredPane.layer" type="java.lang.Integer" value="200"/>
+          </AuxValues>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="40" y="130" width="30" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <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="/cz/fidentis/analyst/gui/resources/navigBackground.png"/>
+            </Property>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="30" y="40" width="90" height="90"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="loadModelButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/loadCanva.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="loadModelButtonMouseMoved"/>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="loadModelButtonMouseClicked"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="loadModelButtonMouseExited"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="200" y="100" width="210" height="220"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="rightNavigationButton1">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/rightButton.png"/>
+            </Property>
+            <Property name="borderPainted" type="boolean" value="false"/>
+            <Property name="contentAreaFilled" type="boolean" value="false"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="rightNavigationButton1MousePressed"/>
+            <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="rightNavigationButton1MouseReleased"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JLayeredPane.layer" type="java.lang.Integer" value="200"/>
+          </AuxValues>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="90" y="70" width="30" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="whiteBackroundButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/whiteBackroundCanvas.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="whiteBackroundButtonMouseClicked"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="50" y="170" width="-1" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="blackBackroundButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/blackBackroundCanvas.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="blackBackroundButtonMouseClicked"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="50" y="240" width="-1" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Container class="javax.swing.JPanel" name="jPanel1">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="0" green="0" red="0" type="rgb"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseWheelMoved" listener="java.awt.event.MouseWheelListener" parameters="java.awt.event.MouseWheelEvent" handler="jPanel1MouseWheelMoved"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="0" y="0" width="-1" height="-1"/>
+            </Constraint>
+          </Constraints>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+        </Container>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.java b/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.java
index be3b9a8f..ed28c4df 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/Canvas.java
@@ -1,90 +1,84 @@
 package cz.fidentis.analyst.gui;
 
+import cz.fidentis.analyst.mesh.io.ModelFileFilter;
 import javax.media.opengl.GLCapabilities;
 import javax.media.opengl.GLProfile;
 import javax.media.opengl.awt.GLCanvas;
 import com.jogamp.opengl.util.FPSAnimator;
 import cz.fidentis.analyst.mesh.core.MeshModel;
 import cz.fidentis.analyst.mesh.io.MeshObjLoader;
-
 import java.awt.Color;
 import java.awt.Cursor;
 import java.awt.Dimension;
 import java.io.File;
 import java.util.Timer;
 import java.util.TimerTask;
+import javax.swing.ImageIcon;
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
 
 /**
  *
- * @author Natalia Bebjakova
- *
+ * @author Natalia Bebjakova 
+ * 
  * Canvas for displaying models containing GLCanvas and navigation.
  */
 public class Canvas extends javax.swing.JPanel {
     protected GLCanvas glCanvas;
     protected long startClickTime = 0;
-
+    
     protected TimerTask task;
     protected Timer timer;
-
+    
     protected GeneralGLEventListener listener;
 
-    private static final int FPS = 60; // animator's target frames per second
+    /**
+     * animator's target frames per second
+     */
+    private static final int FPS = 60; 
     private final FPSAnimator animator;
-
-    protected boolean drawWireModel;  // decides if model is displayed as wire-frame
+    
+    /**
+     * decides if model is displayed as wire-frame 
+     */
+    protected boolean drawWireModel;   
+    
+    /**
+     * original model that is loaded from file   
+     */
+    protected MeshModel loadedModel;
 
     /**
-     * Creates new form Canvas
+     * Creates new form Canva
      */
     public Canvas() {
         initComponents();
-
+        
         // gl version 2 is used
         GLCapabilities capabilities = new GLCapabilities(GLProfile.get(GLProfile.GL2));
         capabilities.setDoubleBuffered(true);
-
+       
         // creates new glCanvas panel for displaying model
         glCanvas = new GLCanvas(capabilities);
         jPanel1.add(glCanvas);
-        glCanvas.setVisible(false);
+        glCanvas.setVisible(false);     
         glCanvas.setBackground(Color.black);
-
+        
         // enables glCanvas to react to events
-        glCanvas.requestFocusInWindow();
+        glCanvas.requestFocusInWindow();        
         glCanvas.setSize(getWidth() - getInsets().left - getInsets().right, getHeight() - getInsets().top - getInsets().bottom);
-
-        // enables animated transition
+       
+        // enables animated transition 
         animator = new FPSAnimator(glCanvas, FPS, true);
         animator.start();
-
-        // listener enables to display and manipulate with the model
         listener = new GeneralGLEventListener(this);
 
-        // hand cursor when moving mouse on components
-        setCursorOnComponents();
-
-        this.validate();
+        this.validate();   
     }
-
-    /**
-     * Sets hand cursor when moving mouse on components
-     */
-    private void setCursorOnComponents() {
-        loadModelButton.setLocation(this.getWidth() / 2, this.getHeight() / 2);
-        downNavigationButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        leftNavigationButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        upNavigationButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        plusNavigationButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        minusNavigationButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        loadModelButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        rightNavigationButton1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-    }
-
+    
     /**
      * Changing the size of glCanvas
+     * 
      * @param d New size of glCanvas
      */
     public void resizeCanvas(Dimension d) {
@@ -94,7 +88,40 @@ public class Canvas extends javax.swing.JPanel {
         this.repaint();
         loadModelButton.setLocation(this.getWidth() / 2 - 35, this.getHeight() / 2 - 40);
     }
-
+    
+    /**
+     * 
+     * @return Original model that is loaded from dile
+     */
+    public MeshModel getLoadedModel() {
+        return loadedModel;
+    }
+    
+    /**
+     * Sets GLListener of the canvas 
+     * 
+     * @param listener GLListener for manipulation with model 
+     */
+    public void setListener(GeneralGLEventListener listener) {
+        this.listener = listener;
+    }
+    
+    
+    /**
+     * 
+     * @param drawWire Decides if model is displayed as wife-frame
+     */
+    public void setDrawWired(boolean drawWire) {
+        drawWireModel = drawWire;
+    }
+    /**
+     * 
+     * @return Returns if model is displayed as wife-frame
+     */
+    public boolean getDrawWired(){
+        return drawWireModel;
+    }
+    
     /**
      *
      * @param v Decides if button for loading model is visible
@@ -102,7 +129,7 @@ public class Canvas extends javax.swing.JPanel {
     public void setImportLabelVisible(Boolean v) {
         loadModelButton.setVisible(v);
     }
-
+    
     /**
      * Loads model selected in file chooser by user
      */
@@ -110,27 +137,27 @@ public class Canvas extends javax.swing.JPanel {
         String[] extensions = new String[2];
         extensions[0] = "obj";
         extensions[1] = "OBJ";
-
+        
         //enables to shows just .obj files in file chooser
         ModelFileFilter filter = new ModelFileFilter(extensions, "*.obj");
         JFileChooser jFileChooser1 = new JFileChooser();
         jFileChooser1.setPreferredSize(new Dimension (800,500));
-
-        jFileChooser1.addChoosableFileFilter(filter);
-
+       
+        jFileChooser1.addChoosableFileFilter(filter);  
+       
         //file chooser will appear on top of glCanvas
         jFileChooser1.showOpenDialog(this);
-        jFileChooser1.setDialogTitle("Import obj file");
-
+        jFileChooser1.setDialogTitle("Import obj file");  
+        
         File[] fileArray = new File[1];
         //saves selected file by user as first element in array
         fileArray[0] = jFileChooser1.getSelectedFile();
-
+        
         if (fileArray.length <= 0) {
             System.out.print("No file chosen.");
         } else {
             this.addModel(fileArray[0]);
-        }
+        }       
         glCanvas.setVisible(true);
     }
 
@@ -144,27 +171,50 @@ public class Canvas extends javax.swing.JPanel {
         try {
             //static class MeshObjLaoder reads .obj file into model
             MeshModel model = MeshObjLoader.read(new File (file.getPath()));
+            loadedModel = MeshObjLoader.read(new File (file.getPath()));
             if (model != null) {
                 // listener enables to manipulate and interact with model
-                listener.setCameraPosition(0, 0, 300);
-                glCanvas.addGLEventListener(listener);
-                listener.setModels(model);
+                listener.setCameraPosition(0, 0, 300);                    
+                glCanvas.addGLEventListener(listener); 
+                listener.setModel(model);
+                listener.rotationAndSizeRestart();
                 loadModelButton.setVisible(false);
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-            JOptionPane pane = new JOptionPane();
-            pane.showMessageDialog(this, "File doesn't contain any model");
-            System.out.println ("File doesn't contain any model");
-
-        };
-
+            }           
+            } catch (Exception e) {
+                System.out.println(e.getMessage());
+                JOptionPane.showMessageDialog(this, "File doesn't contain any model", "Model is not loaded.",
+                        0, new ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/notLoadedModel.png")));
+                System.out.println ("File doesn't contain any model");
+                
+            }; 
+        
     }
-
+    
+    /**
+     * Changes the model to be displayed
+     * 
+     * @param model New model that will be displayed on canvas
+     */
+    public void changeModel(MeshModel model) {
+        MeshModel newModel = new MeshModel(model);
+        listener.setModel(newModel);
+    }
+    
+    /**
+     * Returns the model which is displayed on canvas
+     * 
+     * @return Model that is displayed on canvas
+     */
+    public MeshModel getModel() {
+        return listener.getModel();
+    }
+    
     /**
      * 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.
+     * 
+     * Generated code from NetBeans
      */
     @SuppressWarnings("unchecked")
     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
@@ -180,12 +230,15 @@ public class Canvas extends javax.swing.JPanel {
         jLabel1 = new javax.swing.JLabel();
         loadModelButton = new javax.swing.JLabel();
         rightNavigationButton1 = new javax.swing.JButton();
+        whiteBackroundButton = new javax.swing.JLabel();
+        blackBackroundButton = new javax.swing.JLabel();
         jPanel1 = new javax.swing.JPanel();
 
         setBackground(new java.awt.Color(0, 0, 0));
         setLayout(new java.awt.BorderLayout());
 
-        jLayeredPane1.setBackground(new java.awt.Color(0, 0, 0));
+        jLayeredPane1.setBackground(new java.awt.Color(40, 40, 40));
+        jLayeredPane1.setToolTipText("");
         jLayeredPane1.setOpaque(true);
         jLayeredPane1.addComponentListener(new java.awt.event.ComponentAdapter() {
             public void componentResized(java.awt.event.ComponentEvent evt) {
@@ -196,7 +249,8 @@ public class Canvas extends javax.swing.JPanel {
             }
         });
 
-        resetButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/resetButton.png"))); // NOI18N
+        resetButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/resetButton.png"))); // NOI18N
+        resetButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         resetButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
             public void mouseMoved(java.awt.event.MouseEvent evt) {
                 resetButtonMouseMoved(evt);
@@ -211,11 +265,12 @@ public class Canvas extends javax.swing.JPanel {
             }
         });
         jLayeredPane1.add(resetButton);
-        resetButton.setBounds(60, 70, 40, 30);
+        resetButton.setBounds(60, 70, 30, 30);
 
-        upNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/upButton.png"))); // NOI18N
+        upNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/upButton.png"))); // NOI18N
         upNavigationButton.setBorderPainted(false);
         upNavigationButton.setContentAreaFilled(false);
+        upNavigationButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         upNavigationButton.addMouseListener(new java.awt.event.MouseAdapter() {
             public void mousePressed(java.awt.event.MouseEvent evt) {
                 upNavigationButtonMousePressed(evt);
@@ -228,9 +283,10 @@ public class Canvas extends javax.swing.JPanel {
         jLayeredPane1.add(upNavigationButton);
         upNavigationButton.setBounds(60, 40, 30, 30);
 
-        leftNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/leftButton.png"))); // NOI18N
+        leftNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/leftButton.png"))); // NOI18N
         leftNavigationButton.setBorderPainted(false);
         leftNavigationButton.setContentAreaFilled(false);
+        leftNavigationButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         leftNavigationButton.addMouseListener(new java.awt.event.MouseAdapter() {
             public void mousePressed(java.awt.event.MouseEvent evt) {
                 leftNavigationButtonMousePressed(evt);
@@ -243,9 +299,10 @@ public class Canvas extends javax.swing.JPanel {
         jLayeredPane1.add(leftNavigationButton);
         leftNavigationButton.setBounds(30, 70, 30, 30);
 
-        minusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/minus.png"))); // NOI18N
+        minusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/minus.png"))); // NOI18N
         minusNavigationButton.setBorderPainted(false);
         minusNavigationButton.setContentAreaFilled(false);
+        minusNavigationButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         minusNavigationButton.addMouseListener(new java.awt.event.MouseAdapter() {
             public void mousePressed(java.awt.event.MouseEvent evt) {
                 minusNavigationButtonMousePressed(evt);
@@ -258,9 +315,10 @@ public class Canvas extends javax.swing.JPanel {
         jLayeredPane1.add(minusNavigationButton);
         minusNavigationButton.setBounds(80, 130, 30, 30);
 
-        downNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/downButton.png"))); // NOI18N
+        downNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/downButton.png"))); // NOI18N
         downNavigationButton.setBorderPainted(false);
         downNavigationButton.setContentAreaFilled(false);
+        downNavigationButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         downNavigationButton.addMouseListener(new java.awt.event.MouseAdapter() {
             public void mousePressed(java.awt.event.MouseEvent evt) {
                 downNavigationButtonMousePressed(evt);
@@ -273,9 +331,10 @@ public class Canvas extends javax.swing.JPanel {
         jLayeredPane1.add(downNavigationButton);
         downNavigationButton.setBounds(60, 100, 30, 30);
 
-        plusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/plus.png"))); // NOI18N
+        plusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/plus.png"))); // NOI18N
         plusNavigationButton.setBorderPainted(false);
         plusNavigationButton.setContentAreaFilled(false);
+        plusNavigationButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         plusNavigationButton.addMouseListener(new java.awt.event.MouseAdapter() {
             public void mousePressed(java.awt.event.MouseEvent evt) {
                 plusNavigationButtonMousePressed(evt);
@@ -288,11 +347,12 @@ public class Canvas extends javax.swing.JPanel {
         jLayeredPane1.add(plusNavigationButton);
         plusNavigationButton.setBounds(40, 130, 30, 30);
 
-        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/navigBackground.png"))); // NOI18N
+        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/navigBackground.png"))); // NOI18N
         jLayeredPane1.add(jLabel1);
         jLabel1.setBounds(30, 40, 90, 90);
 
-        loadModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/loadCanva.png"))); // NOI18N
+        loadModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/loadCanva.png"))); // NOI18N
+        loadModelButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         loadModelButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
             public void mouseMoved(java.awt.event.MouseEvent evt) {
                 loadModelButtonMouseMoved(evt);
@@ -307,11 +367,12 @@ public class Canvas extends javax.swing.JPanel {
             }
         });
         jLayeredPane1.add(loadModelButton);
-        loadModelButton.setBounds(190, 80, 210, 220);
+        loadModelButton.setBounds(200, 100, 210, 220);
 
-        rightNavigationButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/rightButton.png"))); // NOI18N
+        rightNavigationButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/rightButton.png"))); // NOI18N
         rightNavigationButton1.setBorderPainted(false);
         rightNavigationButton1.setContentAreaFilled(false);
+        rightNavigationButton1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         rightNavigationButton1.addMouseListener(new java.awt.event.MouseAdapter() {
             public void mousePressed(java.awt.event.MouseEvent evt) {
                 rightNavigationButton1MousePressed(evt);
@@ -324,6 +385,26 @@ public class Canvas extends javax.swing.JPanel {
         jLayeredPane1.add(rightNavigationButton1);
         rightNavigationButton1.setBounds(90, 70, 30, 30);
 
+        whiteBackroundButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/whiteBackroundCanvas.png"))); // NOI18N
+        whiteBackroundButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        whiteBackroundButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                whiteBackroundButtonMouseClicked(evt);
+            }
+        });
+        jLayeredPane1.add(whiteBackroundButton);
+        whiteBackroundButton.setBounds(50, 170, 0, 0);
+
+        blackBackroundButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/blackBackroundCanvas.png"))); // NOI18N
+        blackBackroundButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        blackBackroundButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                blackBackroundButtonMouseClicked(evt);
+            }
+        });
+        jLayeredPane1.add(blackBackroundButton);
+        blackBackroundButton.setBounds(50, 240, 0, 0);
+
         jPanel1.setBackground(new java.awt.Color(0, 0, 0));
         jPanel1.addMouseWheelListener(new java.awt.event.MouseWheelListener() {
             public void mouseWheelMoved(java.awt.event.MouseWheelEvent evt) {
@@ -338,7 +419,7 @@ public class Canvas extends javax.swing.JPanel {
     }// </editor-fold>//GEN-END:initComponents
 
     /**
-     *
+     * 
      * @param evt Resizing glCanvas cantaining components
      */
     private void jLayeredPane1ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jLayeredPane1ComponentResized
@@ -348,7 +429,7 @@ public class Canvas extends javax.swing.JPanel {
     }//GEN-LAST:event_jLayeredPane1ComponentResized
 
     /**
-     *
+     * 
      * @param evt Showing glCanvas cantaining components
      */
     private void jLayeredPane1ComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jLayeredPane1ComponentShown
@@ -358,7 +439,7 @@ public class Canvas extends javax.swing.JPanel {
     }//GEN-LAST:event_jLayeredPane1ComponentShown
 
     /**
-     *
+     * 
      * @param evt Enables to rotate left the model when left navigation button is pressed
      */
     private void leftNavigationButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_leftNavigationButtonMousePressed
@@ -371,11 +452,11 @@ public class Canvas extends javax.swing.JPanel {
             }
         };
         timer.schedule(task, 500, 100);
-        leftNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/leftButtonPressed.png")));
+        leftNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/leftButtonPressed.png")));
     }//GEN-LAST:event_leftNavigationButtonMousePressed
 
     /**
-     *
+     * 
      * @param evt Enables to rotate up the model when up navigation button is pressed
      */
     private void upNavigationButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_upNavigationButtonMousePressed
@@ -388,11 +469,11 @@ public class Canvas extends javax.swing.JPanel {
             }
         };
         timer.schedule(task, 500, 100);
-        upNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/upButtonPressed.png")));
+        upNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/upButtonPressed.png")));
     }//GEN-LAST:event_upNavigationButtonMousePressed
 
     /**
-     *
+     * 
      * @param evt Enables to rotate down the model when down navigation button is pressed
      */
     private void downNavigationButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_downNavigationButtonMousePressed
@@ -405,11 +486,11 @@ public class Canvas extends javax.swing.JPanel {
             }
         };
         timer.schedule(task, 500, 100);
-        downNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/downButtonPressed.png")));
+        downNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/downButtonPressed.png")));
     }//GEN-LAST:event_downNavigationButtonMousePressed
 
     /**
-     *
+     * 
      * @param evt Enables to zoom in the model when plus navigation button is pressed
      */
     private void plusNavigationButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_plusNavigationButtonMousePressed
@@ -422,13 +503,13 @@ public class Canvas extends javax.swing.JPanel {
             }
         };
         timer.schedule(task, 500, 100);
-        plusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/plusPressed.png")));
+        plusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/plusPressed.png")));
     }//GEN-LAST:event_plusNavigationButtonMousePressed
-
-    /**
-     *
-     * @param evt Enables to zoom out the model when minus navigation button is pressed
-     */
+ 
+  /**
+  * 
+  * @param evt Enables to zoom out the model when minus navigation button is pressed
+  */
     private void minusNavigationButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_minusNavigationButtonMousePressed
         timer = new Timer();
         startClickTime = System.currentTimeMillis();
@@ -439,11 +520,11 @@ public class Canvas extends javax.swing.JPanel {
             }
         };
         timer.schedule(task, 500, 100);
-        minusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/minusPressed.png")));
+        minusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/minusPressed.png")));
     }//GEN-LAST:event_minusNavigationButtonMousePressed
 
     /**
-     *
+     * 
      * @param evt Stops rotating left
      */
     private void leftNavigationButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_leftNavigationButtonMouseReleased
@@ -452,11 +533,11 @@ public class Canvas extends javax.swing.JPanel {
             listener.rotateLeft(22.5);
         }
         startClickTime = 0;
-        leftNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/leftButton.png")));
+        leftNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/leftButton.png")));
     }//GEN-LAST:event_leftNavigationButtonMouseReleased
 
     /**
-     *
+     * 
      * @param evt Stops rotating up
      */
     private void upNavigationButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_upNavigationButtonMouseReleased
@@ -465,11 +546,11 @@ public class Canvas extends javax.swing.JPanel {
             listener.rotateUp(22.5);
         }
         startClickTime = 0;
-        upNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/upButton.png")));
+        upNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/upButton.png")));
     }//GEN-LAST:event_upNavigationButtonMouseReleased
 
     /**
-     *
+     * 
      * @param evt Stops rotating down
      */
     private void downNavigationButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_downNavigationButtonMouseReleased
@@ -478,12 +559,12 @@ public class Canvas extends javax.swing.JPanel {
             listener.rotateDown(22.5);
         }
         startClickTime = 0;
-        downNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/downButton.png")));
+        downNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/downButton.png")));
     }//GEN-LAST:event_downNavigationButtonMouseReleased
 
     /**
-     *
-     * @param evt Stops zooming in
+     * 
+     * @param evt Stops zooming in 
      */
     private void plusNavigationButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_plusNavigationButtonMouseReleased
         timer.cancel();
@@ -491,11 +572,11 @@ public class Canvas extends javax.swing.JPanel {
             listener.zoomIn(30);
         }
         startClickTime = 0;
-        plusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/plus.png")));
+        plusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/plus.png")));
     }//GEN-LAST:event_plusNavigationButtonMouseReleased
 
     /**
-     *
+     * 
      * @param evt  Stops zooming out
      */
     private void minusNavigationButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_minusNavigationButtonMouseReleased
@@ -504,19 +585,19 @@ public class Canvas extends javax.swing.JPanel {
             listener.zoomOut(30);
         }
         startClickTime = 0;
-        minusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/minus.png")));
+        minusNavigationButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/minus.png")));
     }//GEN-LAST:event_minusNavigationButtonMouseReleased
 
     /**
-     *
+     * 
      * @param evt Laoding the .obj file when button pressed
      */
     private void loadModelButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_loadModelButtonMouseClicked
-        loadModel();
+       loadModel();
     }//GEN-LAST:event_loadModelButtonMouseClicked
 
     /**
-     *
+     * 
      * @param evt Enables to zoom in and out the model by mouse wheeling
      */
     private void jPanel1MouseWheelMoved(java.awt.event.MouseWheelEvent evt) {//GEN-FIRST:event_jPanel1MouseWheelMoved
@@ -528,23 +609,23 @@ public class Canvas extends javax.swing.JPanel {
     }//GEN-LAST:event_jPanel1MouseWheelMoved
 
     /**
-     *
-     * @param evt Design is reacting to mouse movement
+     * 
+     * @param evt Design is reacting to mouse movement 
      */
     private void loadModelButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_loadModelButtonMouseMoved
-        loadModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/loadCanvaClicked.png")));
+        loadModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/loadCanvaClicked.png")));
     }//GEN-LAST:event_loadModelButtonMouseMoved
 
     /**
-     *
-     * @param evt Design is reacting to mouse movement
+     * 
+     * @param evt Design is reacting to mouse movement  
      */
     private void loadModelButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_loadModelButtonMouseExited
-        loadModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/loadCanva.png")));
+        loadModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/loadCanva.png")));
     }//GEN-LAST:event_loadModelButtonMouseExited
 
     /**
-     *
+     * 
      * @param evt Enables to rotate down the model when down navigation button is pressed
      */
     private void rightNavigationButton1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_rightNavigationButton1MousePressed
@@ -557,11 +638,11 @@ public class Canvas extends javax.swing.JPanel {
             }
         };
         timer.schedule(task, 500, 100);
-        rightNavigationButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/rightButtonPressed.png")));
+        rightNavigationButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/rightButtonPressed.png")));
     }//GEN-LAST:event_rightNavigationButton1MousePressed
 
     /**
-     *
+     * 
      * @param evt Stops rotating right
      */
     private void rightNavigationButton1MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_rightNavigationButton1MouseReleased
@@ -570,11 +651,11 @@ public class Canvas extends javax.swing.JPanel {
             listener.rotateRight(22.5);
         }
         startClickTime = 0;
-        rightNavigationButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/rightButton.png")));
+        rightNavigationButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/rightButton.png")));
     }//GEN-LAST:event_rightNavigationButton1MouseReleased
 
     /**
-     *
+     * 
      * @param evt Position of model on glCanvas is set to starting position
      */
     private void resetButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_resetButtonMouseClicked
@@ -582,38 +663,44 @@ public class Canvas extends javax.swing.JPanel {
     }//GEN-LAST:event_resetButtonMouseClicked
 
     /**
-     *
-     * @param evt Design is reacting to mouse movement
+     * 
+     * @param evt Design is reacting to mouse movement  
      */
     private void resetButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_resetButtonMouseMoved
-        resetButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/resetButtonPressed.png")));
+        resetButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/resetButtonPressed.png")));
         resetButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
     }//GEN-LAST:event_resetButtonMouseMoved
 
     /**
-     *
-     * @param evt Design is reacting to mouse movement
+     * 
+     * @param evt Design is reacting to mouse movement  
      */
     private void resetButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_resetButtonMouseExited
-        resetButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/resetButton.png")));
+        resetButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/resetButton.png")));
     }//GEN-LAST:event_resetButtonMouseExited
 
     /**
-     *
-     * @param drawWire Decides if model is displayed as wife-frame
+     * 
+     * @param evt Changes backround of the canvas into white color
      */
-    public void setDrawWired(boolean drawWire) {
-        drawWireModel = drawWire;
-    }
+    private void whiteBackroundButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_whiteBackroundButtonMouseClicked
+        listener.setWhiteBackround(true);
+        whiteBackroundButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/whiteBackroundCanvasPressed.png")));
+        blackBackroundButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/blackBackroundCanvas.png")));
+    }//GEN-LAST:event_whiteBackroundButtonMouseClicked
+
     /**
-     *
-     * @return Returns if model is displayed as wife-frame
+     * 
+     * @param evt Changes backround of the canvas into dark color
      */
-    public boolean getDrawWired(){
-        return drawWireModel;
-    }
+    private void blackBackroundButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_blackBackroundButtonMouseClicked
+        listener.setWhiteBackround(false);
+        whiteBackroundButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/whiteBackroundCanvas.png")));
+        blackBackroundButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/blackBackroundCanvasPressed.png")));
+    }//GEN-LAST:event_blackBackroundButtonMouseClicked
 
     // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JLabel blackBackroundButton;
     private javax.swing.JButton downNavigationButton;
     private javax.swing.JLabel jLabel1;
     private javax.swing.JLayeredPane jLayeredPane1;
@@ -625,5 +712,6 @@ public class Canvas extends javax.swing.JPanel {
     private javax.swing.JLabel resetButton;
     private javax.swing.JButton rightNavigationButton1;
     private javax.swing.JButton upNavigationButton;
+    private javax.swing.JLabel whiteBackroundButton;
     // End of variables declaration//GEN-END:variables
-}
+}
\ No newline at end of file
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/GeneralGLEventListener.java b/GUI/src/main/java/cz/fidentis/analyst/gui/GeneralGLEventListener.java
index 356e67a9..e115177d 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/GeneralGLEventListener.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/GeneralGLEventListener.java
@@ -2,7 +2,6 @@ package cz.fidentis.analyst.gui;
 
 import cz.fidentis.analyst.mesh.core.MeshFacet;
 import cz.fidentis.analyst.mesh.core.MeshModel;
-import java.util.ArrayList;
 import javax.media.opengl.GL;
 import static javax.media.opengl.GL.GL_DEPTH_TEST;
 import static javax.media.opengl.GL.GL_FRONT_AND_BACK;
@@ -22,37 +21,35 @@ import javax.vecmath.Vector3f;
  *
  * @author Natalia Bebjakova
  */
-public class GeneralGLEventListener implements GLEventListener {
+public class GeneralGLEventListener implements GLEventListener {  
     /**
-     * Color behind the model is black
+     * MeshModel that is displayed
      */
-    protected static float[] backgroundColor = {0.8f, 0.8f, 0.8f, 0.0f};
+    private MeshModel model = new MeshModel();
     /**
-     * array of models that are displayed (just one so far)
+     * GLCanvas which listener belongs to 
      */
-    private ArrayList<MeshModel> models = new ArrayList<>();
+    protected Canvas glCanvas;  
     /**
-     * GLCanvas which listener belongs to
-     */
-    protected Canvas glCanvas;
+    * GLU object.
+    */
+    protected GLU glu;
     /**
-     * GLU object.
+     * Usage of openGL version 2
      */
-    protected GLU glu;
     protected GL2 gl;
-
     /**
      * The last viewport.
      */
     protected int[] viewport = new int[4];
-    /**
+     /**
      * The last model matrix.
      */
     protected float[] modelViewMatrix = new float[16];
     /**
      * The last projection matrix.
      */
-    protected float[] projectionMatrix = new float[16];
+    protected float[] projectionMatrix = new float[16];  
     /**
      * The X coordinate of the last known mouse position during the scene rotation.
      */
@@ -61,7 +58,7 @@ public class GeneralGLEventListener implements GLEventListener {
      * The Y coordinate of the last know mouse position during the scene rotation.
      */
     int mouseY = 0;
-
+    
     protected Vector3f defaultPosition = new Vector3f(0, 0, 300);
     protected Vector3f currentPosition = new Vector3f(0, 0, 300);
 
@@ -76,15 +73,75 @@ public class GeneralGLEventListener implements GLEventListener {
     protected double zUpPosition = 0;
     protected double xUpPosition = 0;
     protected double yUpPosition = 1;
-
+    
     /**
      * Decides if model is diplayed as wire-frame
-     */
+     */  
     protected boolean wireModel = false;
     /**
      * Decides if model is diplayed with textures
      */
     protected boolean drawTextures = false;
+    /**
+     * Decides if the backround will be white
+     */
+    protected boolean whiteBackround = false;
+    
+    /**
+     * 
+     * @return is backround white or not
+     */
+    public boolean isWhiteBackround() {
+        return whiteBackround;
+    }
+    
+    /**
+     * 
+     * @return Matrix for model view
+     */
+    public float[] getModelViewMatrix() {
+        return modelViewMatrix;
+    }
+
+    /**
+     * 
+     * @return Matrix for projection
+     */
+    public float[] getProjectionMatrix() {
+        return projectionMatrix;
+    }
+    
+    /**
+     * 
+     * @return GlCanvas for displaying
+     */
+    public Canvas getGlCanvas() {
+        return glCanvas;
+    }
+    
+    /**
+     * 
+     * @param drawWire Decides if model is displayed as wire-frame
+     */
+    public void setWireMode(boolean drawWire) {
+        wireModel = drawWire;
+    }
+       
+    /**
+     *
+     * @param drawTextures Decides if model is displayed with textures
+     */
+    public void setDrawTextures(boolean drawTextures) {
+        this.drawTextures = drawTextures;
+    }
+
+    /**
+     * 
+     * @param whiteBackround Is backround white or not
+     */
+    public void setWhiteBackround(boolean whiteBackround) {
+        this.whiteBackround = whiteBackround;
+    }
 
     /**
      * Creates new EventListener
@@ -93,28 +150,46 @@ public class GeneralGLEventListener implements GLEventListener {
     public GeneralGLEventListener(Canvas canvas) {
         this.glCanvas = canvas;
     }
+    
+    /**
+     *
+     * @param model Set model to be displayed
+     */
+    public void setModel(MeshModel model) {
+        this.model = model;
+    }
+
+    /**
+     *
+     * @return Returns displayed model 
+     */
+    public MeshModel getModel() {
+        return model;
+    }
+
+    
     /**
      * Invoked when main frame is created
      * @param glad Glad object
      */
     @Override
     public void init(GLAutoDrawable glad) {
-
+        
         this.gl = (GL2) glad.getGL();
         glu = new GLU();
-
+      
         gl.setSwapInterval(1);
         gl.glEnable(GL2.GL_LIGHTING);
         gl.glEnable(GL2.GL_LIGHT0);
         gl.glEnable(GL2.GL_DEPTH_TEST);
         gl.glClearColor(0,0,0,0);     // background for GLCanvas
         gl.glClear(GL2.GL_COLOR_BUFFER_BIT);
-
+        
         gl.glShadeModel(GL2.GL_SMOOTH);    // use smooth shading
 
         gl.glDepthFunc(GL2.GL_LESS);
         gl.glDepthRange(0.0, 1.0);
-        gl.glEnable(GL_DEPTH_TEST);
+        gl.glEnable(GL_DEPTH_TEST); 
 
         gl.glEnable(GL2.GL_NORMALIZE);
         gl.glDisable(GL2.GL_CULL_FACE);
@@ -127,8 +202,7 @@ public class GeneralGLEventListener implements GLEventListener {
     @Override
     public void dispose(GLAutoDrawable glad) {
     }
-
-
+    
     /**
      * Invoked every frame.
      * @param glad Glad object
@@ -136,7 +210,12 @@ public class GeneralGLEventListener implements GLEventListener {
     @Override
     public void display(GLAutoDrawable glad) {
         wireModel = glCanvas.getDrawWired(); // is wire-frame or not
-        gl.glClearColor(0,0,0,0);     // background for GLCanvas
+        if (whiteBackround) {
+            gl.glClearColor(0.9f,0.9f,0.9f,0); 
+        } else {
+            gl.glClearColor(0.25f,0.25f,0.25f,0); 
+        }
+            // background for GLCanvas       
         gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
         gl.glLoadIdentity();
 
@@ -147,65 +226,52 @@ public class GeneralGLEventListener implements GLEventListener {
         gl.glGetIntegerv(GL_VIEWPORT, viewport, 0);
         gl.glGetFloatv(GL_MODELVIEW_MATRIX, modelViewMatrix, 0);
         gl.glGetFloatv(GL_PROJECTION_MATRIX, projectionMatrix, 0);
-
-        //if there is any model, draw
-        if (models.get(0) != null) {
+        
+        //if there is any model, draw 
+        if (model != null) {
             if (wireModel) {
-                gl.glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
-                drawWithoutTextures(models.get(0));
+                gl.glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); //drawn as wire-frame
+                drawWithoutTextures(model);
             } else {
-                gl.glPolygonMode( GL_FRONT_AND_BACK, GL_FILL);
-                drawWithoutTextures(models.get(0));
+                gl.glPolygonMode( GL_FRONT_AND_BACK, GL_FILL); // drawn as full traingles
+                drawWithoutTextures(model);
             }
-        }
-
+        }     
         gl.glPopMatrix();
         gl.glFlush();
-
-
-        /*if (drawTextures) {
-         gl.glCallList(modelDL);
-         } else {
-         gl.glCallList(modelDLwithoutTxt);
-         }*/
-
     }
+    
+    /**
+     * Loops through the facets and render each of them 
+     * @param model model of the face
+     */
     public void drawWithoutTextures(MeshModel model) {
         for (int i = 0; i < model.getFacets().size(); i++) {
             renderFacet(model.getFacets().get(i));
         }
     }
     
-    private void renderFacet(MeshFacet facet) {
+    /**
+     * Loops through the facet and render all the vertices as they are stored in corner table
+     * @param facet facet of model
+     */
+    public void renderFacet(MeshFacet facet) {
         gl.glBegin(GL2.GL_TRIANGLES); //vertices are rendered as triangles
      
-        // get the normal and tex coords indicies for face i      
-        for (int v = 0; v < facet.getCornerTable().getSize(); v++) {           
-            Vector3d norm = facet.getVertices().get(facet.getCornerTable().getRow(v).getVertexIndex()).getNormal(); // render the normals
-            gl.glNormal3d(norm.x, norm.y, norm.z);
-
-            Vector3d vert = facet.getVertices().get(facet.getCornerTable().getRow(v).getVertexIndex()).getPosition();  // render the vertices
+        // get the normal and tex coords indicies for face i  
+        for (int v = 0; v < facet.getCornerTable().getSize(); v++) { 
+            // render the normals
+            Vector3d norm = facet.getVertices().get(facet.getCornerTable().getRow(v).getVertexIndex()).getNormal(); 
+            if(norm != null) {
+                gl.glNormal3d(norm.x, norm.y, norm.z);
+            }
+            // render the vertices
+            Vector3d vert = facet.getVertices().get(facet.getCornerTable().getRow(v).getVertexIndex()).getPosition(); 
             gl.glVertex3d(vert.x, vert.y, vert.z);
         }
         gl.glEnd();
     }
 
-    /**
-     * Prepared for future textures
-     */
-    /*public void reloadTextures() {
-        for (int i = 0; i < models.size(); i++) {
-            if (models.get(i) != null) {
-                if (models.get(i).getMatrials() != null) {
-                    for (int j = 0; j < models.get(i).getMatrials().getMatrials().size(); j++) {
-                        models.get(i).getMatrials().reloadTextures(gl);
-                    }
-                }
-            }
-        }
-
-    }*/
-
     /**
      *
      * @param glad Glad object
@@ -234,37 +300,6 @@ public class GeneralGLEventListener implements GLEventListener {
         gl.glTranslatef(0.0f, 0.0f, -40.0f);
     }
 
-    /**
-     *
-     * @param model Set model to be displayed
-     */
-    public void setModels(MeshModel model) {
-        models.add(0, model);
-    }
-
-    /**
-     *
-     * @param models Set models to be displayed
-     */
-    public void setModels(ArrayList<MeshModel> models) {
-        this.models = models;
-    }
-
-    /**
-     *
-     * @return Returns displayed model
-     */
-    public MeshModel getModel() {
-        return models.get(0);
-    }
-
-    /**
-     * Removes all models
-     */
-    public void removeModel() {
-        models.clear();
-    }
-
     /**
      *
      * @param x New x position
@@ -279,8 +314,7 @@ public class GeneralGLEventListener implements GLEventListener {
         xCameraPosition = defaultPosition.x;
         yCameraPosition = defaultPosition.y;
 
-    }
-
+    }    
 
     /**
      *
@@ -290,7 +324,6 @@ public class GeneralGLEventListener implements GLEventListener {
         xCameraPosition = position.x;
         yCameraPosition = position.y;
         zCameraPosition = position.z;
-
     }
 
     /**
@@ -298,9 +331,7 @@ public class GeneralGLEventListener implements GLEventListener {
      * @param degree degree of rotation
      */
     public void rotateUp(double degree) {
-
         rotate(-degree, 0);
-
     }
 
     /**
@@ -316,9 +347,7 @@ public class GeneralGLEventListener implements GLEventListener {
      * @param degree degree of rotation
      */
     public void rotateLeft(double degree) {
-
         rotate(0, degree);
-
     }
 
     /**
@@ -327,24 +356,33 @@ public class GeneralGLEventListener implements GLEventListener {
      */
     public void rotateRight(double degree) {
         rotate(0, -degree);
-
     }
 
+    /**
+     * 
+     * @return X axis
+     */
     private Vector3f getXaxis() {
-        Vector3f xAxis = new Vector3f((float) ((yCameraPosition - yCenter) * zUpPosition - (zCameraPosition - zCenter) * yUpPosition),
+        Vector3f xAxis = new Vector3f(
+                (float) ((yCameraPosition - yCenter) *zUpPosition - (zCameraPosition - zCenter) * yUpPosition),
                 (float) ((zCameraPosition - zCenter) * xUpPosition - (xCameraPosition - xCenter) * zUpPosition),
                 (float) ((xCameraPosition - xCenter) * yUpPosition - xUpPosition * (yCameraPosition - yCenter)));
-
-        float length = (float) Math.sqrt(xAxis.x * xAxis.x + xAxis.y * xAxis.y + xAxis.z * xAxis.z);
-        xAxis.set(xAxis.x / length, xAxis.y / length, xAxis.z / length );
+         
+        float length = (float) Math.sqrt(xAxis.x * xAxis.x +
+                xAxis.y * xAxis.y + xAxis.z * xAxis.z);
+        xAxis.set(xAxis.x / length, xAxis.y / length, xAxis.z / length);
         return xAxis;
     }
 
+    /**
+     * 
+     * @return Y axis
+     */
     private Vector3f getYaxis() {
         Vector3f yAxis = new Vector3f((float) xUpPosition, (float) yUpPosition, (float) zUpPosition);
-
-        float length = (float) Math.sqrt(yAxis.x * yAxis.x + yAxis.y * yAxis.y + yAxis.z * yAxis.z);
-        yAxis.set(yAxis.x / length, yAxis.y / length, yAxis.z / length );
+        float length = (float) Math.sqrt(yAxis.x * yAxis.x +
+                yAxis.y * yAxis.y + yAxis.z * yAxis.z);
+        yAxis.set((yAxis.x / length), (yAxis.y / length), (yAxis.z / length));
         return yAxis;
     }
 
@@ -360,7 +398,8 @@ public class GeneralGLEventListener implements GLEventListener {
         Vector3f xAxis = getXaxis();
         Vector3f yAxis = getYaxis();
 
-        Vector3f point = new Vector3f((float) xCameraPosition, (float) yCameraPosition, (float) zCameraPosition);
+        Vector3f point = new Vector3f((float) xCameraPosition,
+                (float) yCameraPosition, (float) zCameraPosition);
 
         Vector3f camera = rotateAroundAxe(point, xAxis, Math.toRadians(xAngle));
         camera = rotateAroundAxe(camera, yAxis, Math.toRadians(yAngle));
@@ -377,18 +416,24 @@ public class GeneralGLEventListener implements GLEventListener {
         setNewCameraPosition(camera);
     }
 
+    /**
+     * 
+     * @param xShift xShift
+     * @param yShift yShift
+     */
     public void move(double xShift, double yShift) {
         Vector3f xAxis = getXaxis();
         Vector3f yAxis = getYaxis();
 
-        Vector3f shift = new Vector3f((float) (xAxis.x * xShift + yAxis.x * yShift), (float) (xAxis.y * xShift + yAxis.y * yShift), (float) (xAxis.z * xShift + yAxis.z * yShift));
-        Vector3f camera = new Vector3f((float) xCameraPosition + shift.x, (float) yCameraPosition + shift.y, (float) zCameraPosition + shift.z);
+        Vector3f shift = new Vector3f((float) (xAxis.x * xShift + yAxis.x * yShift),
+                (float) (xAxis.y * xShift + yAxis.y * yShift), (float) (xAxis.z * xShift + yAxis.z * yShift));
+        Vector3f camera = new Vector3f((float) xCameraPosition + shift.x, (float) yCameraPosition + shift.y,
+                (float) zCameraPosition + shift.z);
         xCenter += shift.x;
         yCenter += shift.y;
         zCenter += shift.z;
 
         setNewCameraPosition(camera);
-
     }
 
     /**
@@ -406,21 +451,19 @@ public class GeneralGLEventListener implements GLEventListener {
                 + (u.x * u.z * (1 - Math.cos(angle)) + u.y * Math.sin(angle)) * point.z);
         float y = (float) ((u.x * u.y * (1 - Math.cos(angle)) + u.z * Math.sin(angle)) * point.x
                 + (Math.cos(angle) + u.y * u.y * (1 - Math.cos(angle))) * point.y
-                + (u.y * u.z* (1 - Math.cos(angle)) - u.x * Math.sin(angle)) * point.z);
+                + (u.y * u.z * (1 - Math.cos(angle)) - u.x * Math.sin(angle)) * point.z);
         float z = (float) ((u.x * u.z * (1 - Math.cos(angle)) - u.y * Math.sin(angle)) * point.x
-                + (u.z * u.z * (1 - Math.cos(angle)) + u.x * Math.sin(angle)) * point.y
+                + (u.y * u.z * (1 - Math.cos(angle)) + u.x * Math.sin(angle)) * point.y
                 + (Math.cos(angle) + u.z * u.z * (1 - Math.cos(angle))) * point.z);
         p = new Vector3f(x, y, z);
 
         return p;
-
     }
 
     /**
      * Sets model to the starting position
      */
     public void rotationAndSizeRestart() {
-
         xUpPosition = 0;
         yUpPosition = 1;
         zUpPosition = 0;
@@ -446,7 +489,6 @@ public class GeneralGLEventListener implements GLEventListener {
             yCameraPosition = yCenter + ((sqrt - distance) * y / sqrt);
             zCameraPosition = zCenter + ((sqrt - distance) * z / sqrt);
         }
-
     }
 
     /**
@@ -462,44 +504,8 @@ public class GeneralGLEventListener implements GLEventListener {
         if (sqrt == 0) {
             sqrt = 1;
         }
-
         xCameraPosition = xCenter + ((sqrt + distance) * x / sqrt);
         yCameraPosition = yCenter + ((sqrt + distance) * y / sqrt);
         zCameraPosition = zCenter + ((sqrt + distance) * z / sqrt);
     }
-
-    /**
-     *
-     * @return Returns backround color of the listener
-     */
-    public static float[] getBackgroundColor() {
-        return backgroundColor;
-    }
-
-    /**
-     *
-     * @param backgroundColor backround color of the listener
-     */
-    public static void setBackgroundColor(float[] backgroundColor) {
-        GeneralGLEventListener.backgroundColor = backgroundColor;
-    }
-
-    /**
-     *
-     * @param drawWire Decides if model is displayed as wire-frame
-     */
-    public void setWireMode(boolean drawWire) {
-        wireModel = drawWire;
-    }
-
-
-    /**
-     *
-     * @param drawTextures Decides if model is displayed with textures
-     */
-    public void setDrawTextures(boolean drawTextures) {
-        this.drawTextures = drawTextures;
-    }
-
-}
-
+}
\ No newline at end of file
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/Interface.java b/GUI/src/main/java/cz/fidentis/analyst/gui/Interface.java
deleted file mode 100644
index 2f5f4c4f..00000000
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/Interface.java
+++ /dev/null
@@ -1,1367 +0,0 @@
-package cz.fidentis.analyst.gui;
-
-import java.awt.Color;
-import java.awt.Cursor;
-import javax.swing.BorderFactory;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.UIManager;
-
-/**
- *
- * @author Natalia Bebjakova
- *
- * Main window of the applicaion
- */
-
-public class Interface extends javax.swing.JFrame {
-    boolean pressedNewProject = false;
-    boolean maximizePressed = false;
-    boolean wiredModelClicked = false;
-    private JPanel actualPanel;
-
-    public static JFrame frameMain; //main frame of the application
-    int xMouse;
-    int yMouse;
-
-    /**
-     * Creates new form Interface
-     */
-    public Interface() {
-        //this.setUndecorated(true);
-        initComponents();
-        topPanel.setVisible(false);
-        setCursorOnComponents();
-        actualPanel = startingPanel;
-    }
-    /**
-     * Sets hand cursor when moving mouse on components
-     */
-    private void setCursorOnComponents() {
-        newProject.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        texture.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        close.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        maximize.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        JLabel11.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        jLabel4.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        symetryMain.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        reloadModelButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        wiredModelButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        homeButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        viewerButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        reloadModelButton1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-    }
-
-    /**
-     * Enables to switch between panels
-     * @param panel New panel that will be visible
-     */
-    private void switchPanelOnMainPanel(JPanel panel) {
-        actualPanel = panel;
-        jPanel2.removeAll();
-        jPanel2.repaint();
-        jPanel2.revalidate();
-        jPanel2.add(panel);
-        jPanel2.repaint();
-        jPanel2.revalidate();
-        panel.add(jPanel1);
-        jPanel1.setVisible(true);
-        /*if(maximizePressed) {
-            frameMain.setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH);
-        }*/
-    }
-
-    /**
-     * Changes backround of labels to darker green color
-     * @param jl label of which backround changes
-     */
-    public void setLabelBackround(JLabel jl) {
-        jl.setBackground(new Color(11,56,49));
-    }
-    public void resetLabelBackround(JLabel jl) {
-        jl.setBackground(new Color(20,114,105));
-    }
-
-    /**
-     * Changes backround of panel to brighter color and adds border
-     * @param jp panel of which backround changes
-     */
-    public void setPanelBackround(JPanel jp) {
-        jp.setBackground(new Color(11,56,49));
-        jp.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 4, Color.WHITE));
-    }
-    public void resetPanelBackround(JPanel jp) {
-        jp.setBackground(new Color(20,114,105));
-        jp.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 0, Color.WHITE));
-    }
-
-    /**
-     * Changes backround of panel to darker color and adds border
-     * @param jp panel of which backround changes
-     */
-    public void setPanelBackroundMain(JPanel jp) {
-        jp.setBackground(new Color(106,198,187));
-        jp.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 4, Color.WHITE));
-    }
-    public void resetPanelBackroundMain(JPanel jp) {
-        jp.setBackground(new Color(0,174,163));
-        jp.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 0, Color.WHITE));
-    }
-
-    /**
-     * 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() {
-
-        topPanel = new javax.swing.JPanel();
-        compareTwo = new javax.swing.JPanel();
-        jLabel1 = new javax.swing.JLabel();
-        compareDB = new javax.swing.JPanel();
-        jLabel2 = new javax.swing.JLabel();
-        batchProcessing = new javax.swing.JPanel();
-        jLabel3 = new javax.swing.JLabel();
-        symetryEstimator = new javax.swing.JPanel();
-        jLabel4 = new javax.swing.JLabel();
-        jPanel1 = new javax.swing.JPanel();
-        newProject = new javax.swing.JLabel();
-        texture = new javax.swing.JLabel();
-        close = new javax.swing.JLabel();
-        maximize = new javax.swing.JLabel();
-        wiredModelButton = new javax.swing.JLabel();
-        homeButton = new javax.swing.JLabel();
-        jPanel2 = new javax.swing.JPanel();
-        startingPanel = new javax.swing.JPanel();
-        javax.swing.JLabel logo = new javax.swing.JLabel();
-        jPanel3 = new javax.swing.JPanel();
-        compareTwoMain = new javax.swing.JPanel();
-        JLabel8 = new javax.swing.JLabel();
-        compareTwoMain1 = new javax.swing.JPanel();
-        JLabel9 = new javax.swing.JLabel();
-        batchMain = new javax.swing.JPanel();
-        JLabel10 = new javax.swing.JLabel();
-        symetryMain = new javax.swing.JPanel();
-        JLabel11 = new javax.swing.JLabel();
-        jLabel6 = new javax.swing.JLabel();
-        viewerButton = new javax.swing.JLabel();
-        symetryPanel = new javax.swing.JPanel();
-        viewerPanel = new javax.swing.JPanel();
-        canva1 = new cz.fidentis.analyst.gui.Canvas();
-        reloadModelButton = new javax.swing.JLabel();
-        symetrySpecificationPanel = new javax.swing.JPanel();
-        curavatureSlider = new javax.swing.JSlider();
-        angleCosineSlider = new javax.swing.JSlider();
-        minCurvatio = new javax.swing.JLabel();
-        minCurvatio2 = new javax.swing.JLabel();
-        normalAngleSlider = new javax.swing.JSlider();
-        minCurvatio3 = new javax.swing.JLabel();
-        significantPointSlider = new javax.swing.JSlider();
-        minCurvatio4 = new javax.swing.JLabel();
-        relativeDistanceSlider = new javax.swing.JSlider();
-        significantPointLabel = new javax.swing.JLabel();
-        symetryButton = new javax.swing.JLabel();
-        minCurvatio7 = new javax.swing.JLabel();
-        averagingCheckBox = new javax.swing.JCheckBox();
-        modelViewPanel = new javax.swing.JPanel();
-        reloadModelButton1 = new javax.swing.JLabel();
-        jPanel4 = new javax.swing.JPanel();
-        canva2 = new cz.fidentis.analyst.gui.Canvas();
-
-        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
-        setAlwaysOnTop(true);
-        setAutoRequestFocus(false);
-        setBackground(new java.awt.Color(20, 114, 105));
-        setLocationByPlatform(true);
-
-        topPanel.setBackground(new java.awt.Color(20, 114, 105));
-
-        compareTwo.setBackground(new java.awt.Color(20, 114, 105));
-        compareTwo.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                compareTwoMouseMoved(evt);
-            }
-        });
-        compareTwo.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                compareTwoMouseExited(evt);
-            }
-        });
-
-        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
-        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/compareTwo.png"))); // NOI18N
-
-        javax.swing.GroupLayout compareTwoLayout = new javax.swing.GroupLayout(compareTwo);
-        compareTwo.setLayout(compareTwoLayout);
-        compareTwoLayout.setHorizontalGroup(
-                compareTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareTwoLayout.createSequentialGroup()
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 154, Short.MAX_VALUE)
-                                .addContainerGap())
-        );
-        compareTwoLayout.setVerticalGroup(
-                compareTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareTwoLayout.createSequentialGroup()
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addContainerGap())
-        );
-
-        compareDB.setBackground(new java.awt.Color(20, 114, 105));
-        compareDB.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                compareDBMouseMoved(evt);
-            }
-        });
-        compareDB.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                compareDBMouseExited(evt);
-            }
-        });
-
-        jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
-        jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/copareWithDatabase.png"))); // NOI18N
-
-        javax.swing.GroupLayout compareDBLayout = new javax.swing.GroupLayout(compareDB);
-        compareDB.setLayout(compareDBLayout);
-        compareDBLayout.setHorizontalGroup(
-                compareDBLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(compareDBLayout.createSequentialGroup()
-                                .addContainerGap()
-                                .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 162, Short.MAX_VALUE))
-        );
-        compareDBLayout.setVerticalGroup(
-                compareDBLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareDBLayout.createSequentialGroup()
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addComponent(jLabel2)
-                                .addContainerGap())
-        );
-
-        batchProcessing.setBackground(new java.awt.Color(20, 114, 105));
-        batchProcessing.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                batchProcessingMouseMoved(evt);
-            }
-        });
-        batchProcessing.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                batchProcessingMouseExited(evt);
-            }
-        });
-
-        jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
-        jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/batchProcessing.png"))); // NOI18N
-
-        javax.swing.GroupLayout batchProcessingLayout = new javax.swing.GroupLayout(batchProcessing);
-        batchProcessing.setLayout(batchProcessingLayout);
-        batchProcessingLayout.setHorizontalGroup(
-                batchProcessingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(batchProcessingLayout.createSequentialGroup()
-                                .addContainerGap()
-                                .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addContainerGap())
-        );
-        batchProcessingLayout.setVerticalGroup(
-                batchProcessingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, batchProcessingLayout.createSequentialGroup()
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addComponent(jLabel3)
-                                .addContainerGap())
-        );
-
-        symetryEstimator.setBackground(new java.awt.Color(20, 114, 105));
-        symetryEstimator.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                symetryEstimatorMouseMoved(evt);
-            }
-        });
-        symetryEstimator.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                symetryEstimatorMouseClicked(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                symetryEstimatorMouseExited(evt);
-            }
-        });
-
-        jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
-        jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/symetry.png"))); // NOI18N
-        jLabel4.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                maximizeMouseMoved1(evt);
-            }
-        });
-        jLabel4.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                jLabel4MouseClicked(evt);
-            }
-        });
-
-        javax.swing.GroupLayout symetryEstimatorLayout = new javax.swing.GroupLayout(symetryEstimator);
-        symetryEstimator.setLayout(symetryEstimatorLayout);
-        symetryEstimatorLayout.setHorizontalGroup(
-                symetryEstimatorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(symetryEstimatorLayout.createSequentialGroup()
-                                .addContainerGap()
-                                .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-        );
-        symetryEstimatorLayout.setVerticalGroup(
-                symetryEstimatorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetryEstimatorLayout.createSequentialGroup()
-                                .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addContainerGap())
-        );
-
-        javax.swing.GroupLayout topPanelLayout = new javax.swing.GroupLayout(topPanel);
-        topPanel.setLayout(topPanelLayout);
-        topPanelLayout.setHorizontalGroup(
-                topPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(topPanelLayout.createSequentialGroup()
-                                .addContainerGap(339, Short.MAX_VALUE)
-                                .addComponent(compareTwo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addGap(105, 105, 105)
-                                .addComponent(compareDB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addGap(86, 86, 86)
-                                .addComponent(batchProcessing, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addGap(97, 97, 97)
-                                .addComponent(symetryEstimator, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addContainerGap(338, Short.MAX_VALUE))
-        );
-        topPanelLayout.setVerticalGroup(
-                topPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, topPanelLayout.createSequentialGroup()
-                                .addContainerGap(94, Short.MAX_VALUE)
-                                .addGroup(topPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
-                                        .addComponent(symetryEstimator, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(compareDB, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(compareTwo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                        .addComponent(batchProcessing, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
-        );
-
-        jPanel1.setBackground(new java.awt.Color(20, 114, 105));
-        jPanel1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseDragged(java.awt.event.MouseEvent evt) {
-                jPanel1MouseDragged(evt);
-            }
-        });
-        jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mousePressed(java.awt.event.MouseEvent evt) {
-                jPanel1MousePressed(evt);
-            }
-        });
-
-        newProject.setBackground(new java.awt.Color(20, 114, 105));
-        newProject.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 18)); // NOI18N
-        newProject.setForeground(new java.awt.Color(255, 255, 255));
-        newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/new_project.png"))); // NOI18N
-        newProject.setOpaque(true);
-        newProject.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                newProjectMouseMoved(evt);
-            }
-        });
-        newProject.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                newProjectMouseExited(evt);
-            }
-            public void mousePressed(java.awt.event.MouseEvent evt) {
-                newProjectMousePressed(evt);
-            }
-        });
-
-        texture.setBackground(new java.awt.Color(20, 114, 105));
-        texture.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/texture2.png"))); // NOI18N
-        texture.setOpaque(true);
-        texture.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                textureMouseMoved(evt);
-            }
-        });
-        texture.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                textureMouseExited(evt);
-            }
-        });
-
-        close.setBackground(new java.awt.Color(20, 114, 105));
-        close.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/close.png"))); // NOI18N
-        close.setOpaque(true);
-        close.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                closeMouseMoved(evt);
-            }
-        });
-        close.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                closeMouseExited(evt);
-            }
-            public void mousePressed(java.awt.event.MouseEvent evt) {
-                closeMousePressed(evt);
-            }
-        });
-
-        maximize.setBackground(new java.awt.Color(20, 114, 105));
-        maximize.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/maximize.png"))); // NOI18N
-        maximize.setOpaque(true);
-        maximize.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                maximizeMouseMoved(evt);
-            }
-        });
-        maximize.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                maximizeMouseClicked(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                maximizeMouseExited(evt);
-            }
-        });
-
-        wiredModelButton.setBackground(new java.awt.Color(20, 114, 105));
-        wiredModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/wireframe.png"))); // NOI18N
-        wiredModelButton.setOpaque(true);
-        wiredModelButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                wiredModelButtonMouseMoved(evt);
-            }
-        });
-        wiredModelButton.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                wiredModelButtonMouseClicked(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                wiredModelButtonMouseExited(evt);
-            }
-        });
-
-        homeButton.setBackground(new java.awt.Color(20, 114, 105));
-        homeButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/home.png"))); // NOI18N
-        homeButton.setOpaque(true);
-        homeButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                homeButtonMouseMoved(evt);
-            }
-        });
-        homeButton.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                homeButtonMouseClicked(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                homeButtonMouseExited(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()
-                                .addComponent(homeButton)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                .addComponent(newProject, javax.swing.GroupLayout.PREFERRED_SIZE, 198, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                .addComponent(texture)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                .addComponent(wiredModelButton, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addComponent(maximize)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                .addComponent(close)
-                                .addContainerGap())
-        );
-        jPanel1Layout.setVerticalGroup(
-                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
-                                .addGap(0, 0, Short.MAX_VALUE)
-                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
-                                        .addComponent(texture, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE)
-                                        .addComponent(newProject, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(close, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(wiredModelButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(maximize, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
-                        .addComponent(homeButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-        );
-
-        jPanel2.setLayout(new java.awt.CardLayout());
-
-        startingPanel.setBackground(new java.awt.Color(0, 174, 163));
-        startingPanel.setToolTipText("");
-
-        logo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/logo3.png"))); // NOI18N
-
-        jPanel3.setBackground(new java.awt.Color(0, 174, 163));
-        jPanel3.setToolTipText("");
-
-        compareTwoMain.setBackground(new java.awt.Color(0, 174, 163));
-        compareTwoMain.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                compareTwoMainMouseMoved(evt);
-            }
-        });
-        compareTwoMain.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                compareTwoMainMouseExited(evt);
-            }
-        });
-
-        JLabel8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/compareTwoGreen.png"))); // NOI18N
-
-        javax.swing.GroupLayout compareTwoMainLayout = new javax.swing.GroupLayout(compareTwoMain);
-        compareTwoMain.setLayout(compareTwoMainLayout);
-        compareTwoMainLayout.setHorizontalGroup(
-                compareTwoMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(compareTwoMainLayout.createSequentialGroup()
-                                .addGap(15, 15, 15)
-                                .addComponent(JLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE)
-                                .addContainerGap())
-        );
-        compareTwoMainLayout.setVerticalGroup(
-                compareTwoMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareTwoMainLayout.createSequentialGroup()
-                                .addGap(0, 28, Short.MAX_VALUE)
-                                .addComponent(JLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE))
-        );
-
-        compareTwoMain1.setBackground(new java.awt.Color(0, 174, 163));
-        compareTwoMain1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                compareTwoMain1MouseMoved(evt);
-            }
-        });
-        compareTwoMain1.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                compareTwoMain1MouseExited(evt);
-            }
-        });
-
-        JLabel9.setBackground(new java.awt.Color(0, 174, 163));
-        JLabel9.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/copareWithDatabaseGreen.png"))); // NOI18N
-
-        javax.swing.GroupLayout compareTwoMain1Layout = new javax.swing.GroupLayout(compareTwoMain1);
-        compareTwoMain1.setLayout(compareTwoMain1Layout);
-        compareTwoMain1Layout.setHorizontalGroup(
-                compareTwoMain1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareTwoMain1Layout.createSequentialGroup()
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addComponent(JLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addContainerGap())
-        );
-        compareTwoMain1Layout.setVerticalGroup(
-                compareTwoMain1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareTwoMain1Layout.createSequentialGroup()
-                                .addContainerGap()
-                                .addComponent(JLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, 156, Short.MAX_VALUE))
-        );
-
-        batchMain.setBackground(new java.awt.Color(0, 174, 163));
-        batchMain.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                batchMainMouseMoved(evt);
-            }
-        });
-        batchMain.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                batchMainMouseExited(evt);
-            }
-        });
-
-        JLabel10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/batchProcessingGreen.png"))); // NOI18N
-
-        javax.swing.GroupLayout batchMainLayout = new javax.swing.GroupLayout(batchMain);
-        batchMain.setLayout(batchMainLayout);
-        batchMainLayout.setHorizontalGroup(
-                batchMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, batchMainLayout.createSequentialGroup()
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addComponent(JLabel10)
-                                .addContainerGap())
-        );
-        batchMainLayout.setVerticalGroup(
-                batchMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, batchMainLayout.createSequentialGroup()
-                                .addGap(0, 0, Short.MAX_VALUE)
-                                .addComponent(JLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE))
-        );
-
-        symetryMain.setBackground(new java.awt.Color(0, 174, 163));
-        symetryMain.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                symetryMainMouseMoved(evt);
-            }
-        });
-        symetryMain.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                symetryMainMouseExited(evt);
-            }
-        });
-
-        JLabel11.setBackground(new java.awt.Color(0, 174, 163));
-        JLabel11.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/symetryGreen.png"))); // NOI18N
-        JLabel11.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                JLabel11MouseMoved(evt);
-            }
-        });
-        JLabel11.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                JLabel11MouseClicked(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                JLabel11MouseExited(evt);
-            }
-        });
-
-        javax.swing.GroupLayout symetryMainLayout = new javax.swing.GroupLayout(symetryMain);
-        symetryMain.setLayout(symetryMainLayout);
-        symetryMainLayout.setHorizontalGroup(
-                symetryMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetryMainLayout.createSequentialGroup()
-                                .addGap(0, 12, Short.MAX_VALUE)
-                                .addComponent(JLabel11))
-        );
-        symetryMainLayout.setVerticalGroup(
-                symetryMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetryMainLayout.createSequentialGroup()
-                                .addGap(0, 0, Short.MAX_VALUE)
-                                .addComponent(JLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE))
-        );
-
-        jLabel6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/divide.png"))); // NOI18N
-
-        viewerButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/modelView.png"))); // NOI18N
-        viewerButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                viewerButtonMouseMoved(evt);
-            }
-        });
-        viewerButton.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                viewerButtonMouseClicked(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                viewerButtonMouseExited(evt);
-            }
-        });
-
-        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(278, Short.MAX_VALUE)
-                                .addComponent(viewerButton)
-                                .addGap(227, 227, 227)
-                                .addComponent(jLabel6)
-                                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addGroup(jPanel3Layout.createSequentialGroup()
-                                                .addGap(135, 135, 135)
-                                                .addComponent(compareTwoMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                                        .addGroup(jPanel3Layout.createSequentialGroup()
-                                                .addGap(130, 130, 130)
-                                                .addComponent(compareTwoMain1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
-                                .addGap(81, 81, 81)
-                                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addComponent(batchMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                        .addGroup(jPanel3Layout.createSequentialGroup()
-                                                .addGap(12, 12, 12)
-                                                .addComponent(symetryMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
-                                .addGap(243, 243, 243))
-        );
-        jPanel3Layout.setVerticalGroup(
-                jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
-                                .addGap(27, 27, 27)
-                                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addGroup(jPanel3Layout.createSequentialGroup()
-                                                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                                                        .addComponent(compareTwoMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                                        .addComponent(batchMain, 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(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                                        .addComponent(symetryMain, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                                        .addComponent(compareTwoMain1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
-                                .addContainerGap())
-                        .addGroup(jPanel3Layout.createSequentialGroup()
-                                .addGap(71, 71, 71)
-                                .addComponent(viewerButton)
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-        );
-
-        javax.swing.GroupLayout startingPanelLayout = new javax.swing.GroupLayout(startingPanel);
-        startingPanel.setLayout(startingPanelLayout);
-        startingPanelLayout.setHorizontalGroup(
-                startingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(startingPanelLayout.createSequentialGroup()
-                                .addContainerGap()
-                                .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addContainerGap())
-                        .addGroup(startingPanelLayout.createSequentialGroup()
-                                .addGap(714, 714, 714)
-                                .addComponent(logo, javax.swing.GroupLayout.PREFERRED_SIZE, 218, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-        );
-        startingPanelLayout.setVerticalGroup(
-                startingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(startingPanelLayout.createSequentialGroup()
-                                .addGap(198, 198, 198)
-                                .addComponent(logo, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addGap(135, 135, 135)
-                                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addGap(200, 200, 200))
-        );
-
-        jPanel2.add(startingPanel, "card3");
-
-        symetryPanel.setBackground(new java.awt.Color(0, 174, 163));
-
-        canva1.addMouseWheelListener(new java.awt.event.MouseWheelListener() {
-            public void mouseWheelMoved(java.awt.event.MouseWheelEvent evt) {
-                canva1MouseWheelMoved(evt);
-            }
-        });
-
-        javax.swing.GroupLayout viewerPanelLayout = new javax.swing.GroupLayout(viewerPanel);
-        viewerPanel.setLayout(viewerPanelLayout);
-        viewerPanelLayout.setHorizontalGroup(
-                viewerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(viewerPanelLayout.createSequentialGroup()
-                                .addContainerGap()
-                                .addComponent(canva1, javax.swing.GroupLayout.DEFAULT_SIZE, 652, Short.MAX_VALUE)
-                                .addContainerGap())
-        );
-        viewerPanelLayout.setVerticalGroup(
-                viewerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, viewerPanelLayout.createSequentialGroup()
-                                .addContainerGap()
-                                .addComponent(canva1, javax.swing.GroupLayout.DEFAULT_SIZE, 858, Short.MAX_VALUE)
-                                .addContainerGap())
-        );
-
-        reloadModelButton.setBackground(new java.awt.Color(0, 174, 163));
-        reloadModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/loadModel.png"))); // NOI18N
-        reloadModelButton.setOpaque(true);
-        reloadModelButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                reloadModelButtonMouseMoved(evt);
-            }
-        });
-        reloadModelButton.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                reloadModelButtonMouseClicked(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                reloadModelButtonMouseExited(evt);
-            }
-        });
-
-        symetrySpecificationPanel.setBackground(new java.awt.Color(176, 230, 226));
-        symetrySpecificationPanel.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                symetrySpecificationPanelMouseClicked(evt);
-            }
-        });
-
-        curavatureSlider.setBackground(new java.awt.Color(250, 250, 250));
-        curavatureSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
-        curavatureSlider.setOpaque(false);
-
-        angleCosineSlider.setOpaque(false);
-
-        minCurvatio.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
-        minCurvatio.setForeground(new java.awt.Color(20, 114, 105));
-        minCurvatio.setText("Min. Curvature Ratio");
-
-        minCurvatio2.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
-        minCurvatio2.setForeground(new java.awt.Color(20, 114, 105));
-        minCurvatio2.setText("Min. Angle Cosine");
-
-        normalAngleSlider.setOpaque(false);
-
-        minCurvatio3.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
-        minCurvatio3.setForeground(new java.awt.Color(20, 114, 105));
-        minCurvatio3.setText("Max. Relative Distance");
-
-        significantPointSlider.setOpaque(false);
-
-        minCurvatio4.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
-        minCurvatio4.setForeground(new java.awt.Color(20, 114, 105));
-        minCurvatio4.setText("Min. Normal Angle Cosine");
-
-        relativeDistanceSlider.setOpaque(false);
-
-        significantPointLabel.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
-        significantPointLabel.setForeground(new java.awt.Color(20, 114, 105));
-        significantPointLabel.setText("Significant Point Count");
-
-        symetryButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/symetryCount.png"))); // NOI18N
-        symetryButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                symetryButtonMouseMoved(evt);
-            }
-        });
-        symetryButton.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                symetryButtonMouseExited(evt);
-            }
-        });
-
-        minCurvatio7.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
-        minCurvatio7.setForeground(new java.awt.Color(20, 114, 105));
-        minCurvatio7.setText("Averaging");
-
-        averagingCheckBox.setSelected(true);
-        averagingCheckBox.setOpaque(false);
-
-        javax.swing.GroupLayout symetrySpecificationPanelLayout = new javax.swing.GroupLayout(symetrySpecificationPanel);
-        symetrySpecificationPanel.setLayout(symetrySpecificationPanelLayout);
-        symetrySpecificationPanelLayout.setHorizontalGroup(
-                symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetrySpecificationPanelLayout.createSequentialGroup()
-                                .addContainerGap(80, Short.MAX_VALUE)
-                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                                        .addComponent(minCurvatio)
-                                        .addComponent(minCurvatio2)
-                                        .addComponent(minCurvatio3)
-                                        .addComponent(minCurvatio4)
-                                        .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
-                                                .addComponent(significantPointLabel)
-                                                .addGap(13, 13, 13))
-                                        .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
-                                                .addComponent(minCurvatio7)
-                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
-                                                .addComponent(averagingCheckBox)))
-                                .addGap(18, 18, 18)
-                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                                .addComponent(significantPointSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 244, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                                .addComponent(normalAngleSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 244, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                                .addComponent(angleCosineSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 244, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                                .addComponent(curavatureSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 244, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                                .addComponent(relativeDistanceSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 244, javax.swing.GroupLayout.PREFERRED_SIZE))
-                                        .addComponent(symetryButton, javax.swing.GroupLayout.Alignment.TRAILING))
-                                .addGap(133, 133, 133))
-        );
-        symetrySpecificationPanelLayout.setVerticalGroup(
-                symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
-                                .addGap(72, 72, 72)
-                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
-                                        .addComponent(curavatureSlider, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(minCurvatio, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
-                                .addGap(40, 40, 40)
-                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
-                                        .addComponent(angleCosineSlider, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(minCurvatio2, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
-                                .addGap(40, 40, 40)
-                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addComponent(normalAngleSlider, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(minCurvatio4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-                                .addGap(38, 38, 38)
-                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addComponent(minCurvatio3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                        .addComponent(relativeDistanceSlider, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-                                .addGap(41, 41, 41)
-                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
-                                                .addComponent(significantPointLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 26, Short.MAX_VALUE)
-                                                .addGap(36, 36, 36))
-                                        .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
-                                                .addComponent(significantPointSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
-                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addComponent(symetryButton, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                        .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                                                .addComponent(averagingCheckBox)
-                                                .addComponent(minCurvatio7, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)))
-                                .addGap(102, 102, 102))
-        );
-
-        javax.swing.GroupLayout symetryPanelLayout = new javax.swing.GroupLayout(symetryPanel);
-        symetryPanel.setLayout(symetryPanelLayout);
-        symetryPanelLayout.setHorizontalGroup(
-                symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(symetryPanelLayout.createSequentialGroup()
-                                .addContainerGap(136, Short.MAX_VALUE)
-                                .addComponent(viewerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 105, Short.MAX_VALUE)
-                                .addGroup(symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                        .addComponent(reloadModelButton)
-                                        .addComponent(symetrySpecificationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                                .addContainerGap(112, Short.MAX_VALUE))
-        );
-        symetryPanelLayout.setVerticalGroup(
-                symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetryPanelLayout.createSequentialGroup()
-                                .addGap(118, 118, 118)
-                                .addGroup(symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                                        .addGroup(symetryPanelLayout.createSequentialGroup()
-                                                .addComponent(symetrySpecificationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 242, Short.MAX_VALUE)
-                                                .addComponent(reloadModelButton))
-                                        .addComponent(viewerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-                                .addGap(182, 182, 182))
-        );
-
-        jPanel2.add(symetryPanel, "card3");
-
-        modelViewPanel.setBackground(new java.awt.Color(0, 174, 163));
-        modelViewPanel.setToolTipText("");
-
-        reloadModelButton1.setBackground(new java.awt.Color(0, 174, 163));
-        reloadModelButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/loadModel.png"))); // NOI18N
-        reloadModelButton1.setOpaque(true);
-        reloadModelButton1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
-            public void mouseMoved(java.awt.event.MouseEvent evt) {
-                reloadModelButton1MouseMoved(evt);
-            }
-        });
-        reloadModelButton1.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                reloadModelButton1MouseClicked(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                reloadModelButton1MouseExited(evt);
-            }
-        });
-
-        canva2.addMouseWheelListener(new java.awt.event.MouseWheelListener() {
-            public void mouseWheelMoved(java.awt.event.MouseWheelEvent evt) {
-                canva2MouseWheelMoved(evt);
-            }
-        });
-
-        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(canva2, javax.swing.GroupLayout.DEFAULT_SIZE, 1040, Short.MAX_VALUE)
-                                .addContainerGap())
-        );
-        jPanel4Layout.setVerticalGroup(
-                jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
-                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                                .addComponent(canva2, javax.swing.GroupLayout.PREFERRED_SIZE, 778, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addContainerGap())
-        );
-
-        javax.swing.GroupLayout modelViewPanelLayout = new javax.swing.GroupLayout(modelViewPanel);
-        modelViewPanel.setLayout(modelViewPanelLayout);
-        modelViewPanelLayout.setHorizontalGroup(
-                modelViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(modelViewPanelLayout.createSequentialGroup()
-                                .addContainerGap(141, Short.MAX_VALUE)
-                                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addGap(35, 35, 35)
-                                .addComponent(reloadModelButton1)
-                                .addGap(244, 244, 244))
-        );
-        modelViewPanelLayout.setVerticalGroup(
-                modelViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, modelViewPanelLayout.createSequentialGroup()
-                                .addContainerGap(162, Short.MAX_VALUE)
-                                .addGroup(modelViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                                        .addComponent(reloadModelButton1)
-                                        .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                                .addContainerGap(218, Short.MAX_VALUE))
-        );
-
-        jPanel2.add(modelViewPanel, "card4");
-
-        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
-        getContentPane().setLayout(layout);
-        layout.setHorizontalGroup(
-                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addComponent(topPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-        );
-        layout.setVerticalGroup(
-                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                        .addGroup(layout.createSequentialGroup()
-                                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                .addComponent(topPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                .addContainerGap(835, Short.MAX_VALUE))
-                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
-                                        .addGap(0, 0, Short.MAX_VALUE)
-                                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
-        );
-
-        pack();
-        setLocationRelativeTo(null);
-    }// </editor-fold>//GEN-END:initComponents
-
-    private void newProjectMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_newProjectMouseMoved
-        setLabelBackround(newProject);
-    }//GEN-LAST:event_newProjectMouseMoved
-
-    private void newProjectMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_newProjectMouseExited
-        if (!pressedNewProject) {
-            resetLabelBackround(newProject);
-        }
-    }//GEN-LAST:event_newProjectMouseExited
-
-    private void textureMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_textureMouseMoved
-        setLabelBackround(texture);
-    }//GEN-LAST:event_textureMouseMoved
-
-    private void textureMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_textureMouseExited
-        resetLabelBackround(texture);
-    }//GEN-LAST:event_textureMouseExited
-
-    private void closeMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_closeMouseMoved
-        setLabelBackround(close);
-    }//GEN-LAST:event_closeMouseMoved
-
-    private void closeMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_closeMouseExited
-        resetLabelBackround(close);
-    }//GEN-LAST:event_closeMouseExited
-
-    private void closeMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_closeMousePressed
-        System.exit(0);
-    }//GEN-LAST:event_closeMousePressed
-
-    private void compareTwoMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_compareTwoMouseMoved
-        setPanelBackround(compareTwo);
-    }//GEN-LAST:event_compareTwoMouseMoved
-
-    private void compareTwoMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_compareTwoMouseExited
-        resetPanelBackround(compareTwo);
-    }//GEN-LAST:event_compareTwoMouseExited
-
-    private void compareDBMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_compareDBMouseMoved
-        setPanelBackround(compareDB);
-    }//GEN-LAST:event_compareDBMouseMoved
-
-    private void compareDBMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_compareDBMouseExited
-        resetPanelBackround(compareDB);
-    }//GEN-LAST:event_compareDBMouseExited
-
-    private void batchProcessingMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_batchProcessingMouseMoved
-        setPanelBackround(batchProcessing);
-    }//GEN-LAST:event_batchProcessingMouseMoved
-
-    private void batchProcessingMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_batchProcessingMouseExited
-        resetPanelBackround(batchProcessing);
-    }//GEN-LAST:event_batchProcessingMouseExited
-
-    private void maximizeMouseMoved1(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_maximizeMouseMoved1
-
-    }//GEN-LAST:event_maximizeMouseMoved1
-
-    private void symetryEstimatorMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryEstimatorMouseExited
-        resetPanelBackround(symetryEstimator);
-    }//GEN-LAST:event_symetryEstimatorMouseExited
-
-    private void newProjectMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_newProjectMousePressed
-        if(pressedNewProject) {
-            topPanel.setVisible(false);
-            pressedNewProject = false;
-            switchPanelOnMainPanel(actualPanel);
-            newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/new_project.png")));
-        }else{
-            topPanel.setVisible(true);
-            topPanel.add(jPanel1);
-            pressedNewProject = true;
-            newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/new_project_opened.png")));
-        }
-    }//GEN-LAST:event_newProjectMousePressed
-
-    private void maximizeMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_maximizeMouseMoved
-        setLabelBackround(maximize);
-    }//GEN-LAST:event_maximizeMouseMoved
-
-    private void maximizeMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_maximizeMouseExited
-        resetLabelBackround(maximize);
-    }//GEN-LAST:event_maximizeMouseExited
-
-
-    private void maximizeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_maximizeMouseClicked
-        /*if(maximizePressed) {
-            frameMain.setExtendedState(JFrame.NORMAL);
-            maximizePressed = false;
-        } else {
-            frameMain.setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH);
-            maximizePressed = true;
-        }*/
-    }//GEN-LAST:event_maximizeMouseClicked
-
-    private void symetryEstimatorMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryEstimatorMouseMoved
-        setPanelBackround(symetryEstimator);
-    }//GEN-LAST:event_symetryEstimatorMouseMoved
-
-    private void compareTwoMainMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_compareTwoMainMouseMoved
-        setPanelBackroundMain(compareTwoMain);
-    }//GEN-LAST:event_compareTwoMainMouseMoved
-
-    private void compareTwoMainMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_compareTwoMainMouseExited
-        resetPanelBackroundMain(compareTwoMain);
-    }//GEN-LAST:event_compareTwoMainMouseExited
-
-    private void compareTwoMain1MouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_compareTwoMain1MouseMoved
-        setPanelBackroundMain(compareTwoMain1);
-    }//GEN-LAST:event_compareTwoMain1MouseMoved
-
-    private void compareTwoMain1MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_compareTwoMain1MouseExited
-        resetPanelBackroundMain(compareTwoMain1);
-    }//GEN-LAST:event_compareTwoMain1MouseExited
-
-    private void batchMainMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_batchMainMouseMoved
-        setPanelBackroundMain(batchMain);
-    }//GEN-LAST:event_batchMainMouseMoved
-
-    private void batchMainMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_batchMainMouseExited
-        resetPanelBackroundMain(batchMain);
-    }//GEN-LAST:event_batchMainMouseExited
-
-    private void symetryMainMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryMainMouseMoved
-        setPanelBackroundMain(symetryMain);
-    }//GEN-LAST:event_symetryMainMouseMoved
-
-    private void symetryMainMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryMainMouseExited
-        resetPanelBackroundMain(symetryMain);
-    }//GEN-LAST:event_symetryMainMouseExited
-
-    private void JLabel11MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JLabel11MouseClicked
-        switchPanelOnMainPanel(symetryPanel);
-    }//GEN-LAST:event_JLabel11MouseClicked
-
-    private void symetryEstimatorMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryEstimatorMouseClicked
-        switchPanelOnMainPanel(symetryPanel);
-        topPanel.setVisible(false);
-        newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/new_project.png")));
-        resetLabelBackround(newProject);
-    }//GEN-LAST:event_symetryEstimatorMouseClicked
-
-    private void canva1MouseWheelMoved(java.awt.event.MouseWheelEvent evt) {//GEN-FIRST:event_canva1MouseWheelMoved
-//to do to grab model
-    }//GEN-LAST:event_canva1MouseWheelMoved
-
-    private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jPanel1MouseDragged
-        int x = evt.getXOnScreen();
-        int y = evt.getYOnScreen();
-        frameMain.setLocation(x - xMouse, y - yMouse);
-    }//GEN-LAST:event_jPanel1MouseDragged
-
-    private void jPanel1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jPanel1MousePressed
-        xMouse  = evt.getX();
-        yMouse = evt.getY();
-    }//GEN-LAST:event_jPanel1MousePressed
-
-    private void reloadModelButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButtonMouseMoved
-        reloadModelButton.setBackground(new Color(176,230,226));
-    }//GEN-LAST:event_reloadModelButtonMouseMoved
-
-    private void reloadModelButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButtonMouseExited
-        reloadModelButton.setBackground(new Color(0,174,163));
-    }//GEN-LAST:event_reloadModelButtonMouseExited
-
-    private void symetryButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryButtonMouseMoved
-        symetryButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/symetryCountClicked.png")));
-        symetryButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-    }//GEN-LAST:event_symetryButtonMouseMoved
-
-    private void symetryButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryButtonMouseExited
-        symetryButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/symetryCount.png")));
-    }//GEN-LAST:event_symetryButtonMouseExited
-
-    private void symetrySpecificationPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetrySpecificationPanelMouseClicked
-
-    }//GEN-LAST:event_symetrySpecificationPanelMouseClicked
-
-    private void reloadModelButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButtonMouseClicked
-        canva1.loadModel();
-    }//GEN-LAST:event_reloadModelButtonMouseClicked
-
-    private void wiredModelButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_wiredModelButtonMouseMoved
-
-    }//GEN-LAST:event_wiredModelButtonMouseMoved
-
-    private void wiredModelButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_wiredModelButtonMouseExited
-
-    }//GEN-LAST:event_wiredModelButtonMouseExited
-
-    /**
-     *
-     * @param evt letting know GLCanva if model will be displayed as wire-frame
-     */
-    private void wiredModelButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_wiredModelButtonMouseClicked
-        if (wiredModelClicked) {
-            resetLabelBackround(wiredModelButton);
-            wiredModelClicked = false;
-            canva1.setDrawWired(wiredModelClicked);
-            canva2.setDrawWired(wiredModelClicked);
-        } else {
-            setLabelBackround(wiredModelButton);
-            wiredModelClicked = true;
-            canva1.setDrawWired(wiredModelClicked);
-            canva2.setDrawWired(wiredModelClicked);
-        }
-    }//GEN-LAST:event_wiredModelButtonMouseClicked
-
-    private void homeButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_homeButtonMouseMoved
-        setLabelBackround(homeButton);
-    }//GEN-LAST:event_homeButtonMouseMoved
-
-    private void homeButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_homeButtonMouseExited
-        resetLabelBackround(homeButton);
-    }//GEN-LAST:event_homeButtonMouseExited
-
-    private void homeButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_homeButtonMouseClicked
-        switchPanelOnMainPanel(startingPanel);
-    }//GEN-LAST:event_homeButtonMouseClicked
-
-    private void reloadModelButton1MouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButton1MouseMoved
-        reloadModelButton1.setBackground(new Color(176,230,226));
-    }//GEN-LAST:event_reloadModelButton1MouseMoved
-
-    private void reloadModelButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButton1MouseClicked
-        canva2.loadModel();
-    }//GEN-LAST:event_reloadModelButton1MouseClicked
-
-    private void reloadModelButton1MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButton1MouseExited
-        reloadModelButton1.setBackground(new Color(0,174,163));
-    }//GEN-LAST:event_reloadModelButton1MouseExited
-
-    private void canva2MouseWheelMoved(java.awt.event.MouseWheelEvent evt) {//GEN-FIRST:event_canva2MouseWheelMoved
-        // TODO add your handling code here:
-    }//GEN-LAST:event_canva2MouseWheelMoved
-
-    private void viewerButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_viewerButtonMouseClicked
-        switchPanelOnMainPanel(modelViewPanel);
-    }//GEN-LAST:event_viewerButtonMouseClicked
-
-
-    private void JLabel11MouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JLabel11MouseMoved
-
-    }//GEN-LAST:event_JLabel11MouseMoved
-
-    private void viewerButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_viewerButtonMouseMoved
-        viewerButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/modelViewMoved.png")));
-    }//GEN-LAST:event_viewerButtonMouseMoved
-
-    private void viewerButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_viewerButtonMouseExited
-        viewerButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/modelView.png")));
-    }//GEN-LAST:event_viewerButtonMouseExited
-
-    private void JLabel11MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JLabel11MouseExited
-
-    }//GEN-LAST:event_JLabel11MouseExited
-
-    private void jLabel4MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel4MouseClicked
-        switchPanelOnMainPanel(symetryPanel);
-        topPanel.setVisible(false);
-        newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/new_project.png")));
-        resetLabelBackround(newProject);
-    }//GEN-LAST:event_jLabel4MouseClicked
-
-    /**
-     * @param args the command line arguments
-     */
-    public static void main(String args[]) {
-        try {
-            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
-                if ("Nimbus".equals(info.getName())) {
-                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
-                    break;
-                }
-            }
-        } catch (ClassNotFoundException ex) {
-            java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-        } catch (InstantiationException ex) {
-            java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-        } catch (IllegalAccessException ex) {
-            java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
-            java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-        }
-        java.awt.EventQueue.invokeLater(new Runnable() {
-            @Override
-            public void run() {
-                frameMain = new Interface();
-                frameMain.setBackground(new Color(49,165,154));
-                frameMain.pack();
-                frameMain.setVisible(true);
-
-                //enables to use design of operating system
-                try {
-                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
-                }catch(Exception ex) {
-                    ex.printStackTrace();
-                }
-            }
-        });
-    }
-
-
-
-
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JLabel JLabel10;
-    private javax.swing.JLabel JLabel11;
-    private javax.swing.JLabel JLabel8;
-    private javax.swing.JLabel JLabel9;
-    private javax.swing.JSlider angleCosineSlider;
-    private javax.swing.JCheckBox averagingCheckBox;
-    private javax.swing.JPanel batchMain;
-    private javax.swing.JPanel batchProcessing;
-    private cz.fidentis.analyst.gui.Canvas canva1;
-    private cz.fidentis.analyst.gui.Canvas canva2;
-    private javax.swing.JLabel close;
-    private javax.swing.JPanel compareDB;
-    private javax.swing.JPanel compareTwo;
-    private javax.swing.JPanel compareTwoMain;
-    private javax.swing.JPanel compareTwoMain1;
-    private javax.swing.JSlider curavatureSlider;
-    private javax.swing.JLabel homeButton;
-    private javax.swing.JLabel jLabel1;
-    private javax.swing.JLabel jLabel2;
-    private javax.swing.JLabel jLabel3;
-    private javax.swing.JLabel jLabel4;
-    private javax.swing.JLabel jLabel6;
-    private javax.swing.JPanel jPanel1;
-    private javax.swing.JPanel jPanel2;
-    private javax.swing.JPanel jPanel3;
-    private javax.swing.JPanel jPanel4;
-    private javax.swing.JLabel maximize;
-    private javax.swing.JLabel minCurvatio;
-    private javax.swing.JLabel minCurvatio2;
-    private javax.swing.JLabel minCurvatio3;
-    private javax.swing.JLabel minCurvatio4;
-    private javax.swing.JLabel minCurvatio7;
-    private javax.swing.JPanel modelViewPanel;
-    private javax.swing.JLabel newProject;
-    private javax.swing.JSlider normalAngleSlider;
-    private javax.swing.JSlider relativeDistanceSlider;
-    private javax.swing.JLabel reloadModelButton;
-    private javax.swing.JLabel reloadModelButton1;
-    private javax.swing.JLabel significantPointLabel;
-    private javax.swing.JSlider significantPointSlider;
-    private javax.swing.JPanel startingPanel;
-    private javax.swing.JLabel symetryButton;
-    private javax.swing.JPanel symetryEstimator;
-    private javax.swing.JPanel symetryMain;
-    private javax.swing.JPanel symetryPanel;
-    private javax.swing.JPanel symetrySpecificationPanel;
-    private javax.swing.JLabel texture;
-    private javax.swing.JPanel topPanel;
-    private javax.swing.JLabel viewerButton;
-    private javax.swing.JPanel viewerPanel;
-    private javax.swing.JLabel wiredModelButton;
-    // End of variables declaration//GEN-END:variables
-}
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.form b/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.form
new file mode 100644
index 00000000..192c40b3
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.form
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <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">
+          <EmptySpace min="0" pref="580" max="32767" attributes="0"/>
+          <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <Component id="symetrySpecificationPanel" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+              </Group>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <EmptySpace min="0" pref="554" max="32767" attributes="0"/>
+          <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
+              <Component id="symetrySpecificationPanel" alignment="0" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="symetrySpecificationPanel">
+      <Properties>
+        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+          <Color blue="e2" green="e6" red="b0" type="rgb"/>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace min="-2" pref="17" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                          <Group type="103" groupAlignment="1" attributes="0">
+                              <Group type="102" alignment="1" attributes="0">
+                                  <Component id="normalAngleSlider" min="-2" pref="200" max="-2" attributes="0"/>
+                                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                                  <Component id="normalTextField" min="-2" pref="46" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="1" attributes="0">
+                                  <Component id="significantPointSlider" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                      <Component id="textFieldMinCos" pref="46" max="32767" attributes="0"/>
+                                      <Component id="textFieldCurvature" max="32767" attributes="0"/>
+                                      <Component id="distanceTextField" max="32767" attributes="0"/>
+                                      <Component id="significantTextField" max="32767" attributes="0"/>
+                                  </Group>
+                              </Group>
+                          </Group>
+                          <EmptySpace min="-2" pref="63" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" attributes="0">
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="minCurvatio" alignment="1" min="-2" max="-2" attributes="0"/>
+                              <Component id="minCurvatio2" alignment="1" min="-2" max="-2" attributes="0"/>
+                              <Component id="minCurvatio4" alignment="1" min="-2" max="-2" attributes="0"/>
+                              <Group type="103" alignment="1" groupAlignment="0" attributes="0">
+                                  <Component id="significantPointLabel" min="-2" max="-2" attributes="0"/>
+                                  <Component id="minCurvatio3" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="1" attributes="0">
+                                  <Group type="103" groupAlignment="1" attributes="0">
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+                                          <Group type="102" attributes="0">
+                                              <EmptySpace min="-2" pref="80" max="-2" attributes="0"/>
+                                              <Component id="minCurvatio8" min="-2" max="-2" attributes="0"/>
+                                              <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                                              <Component id="averagingCheckBox" min="-2" max="-2" attributes="0"/>
+                                          </Group>
+                                      </Group>
+                                      <Component id="showPlaneLabel" alignment="1" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" alignment="1" attributes="0">
+                                  <EmptySpace max="32767" attributes="0"/>
+                                  <Group type="103" groupAlignment="0" attributes="0">
+                                      <Component id="symetryButton" alignment="1" min="-2" max="-2" attributes="0"/>
+                                      <Component id="originalModelButton" alignment="1" min="-2" pref="181" max="-2" attributes="0"/>
+                                      <Component id="defaultValues" alignment="1" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <EmptySpace min="-2" pref="63" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <EmptySpace min="-2" pref="56" max="-2" attributes="0"/>
+                                  <Group type="103" groupAlignment="1" attributes="0">
+                                      <Component id="angleCosineSlider" alignment="1" min="-2" pref="200" max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="relativeDistanceSlider" alignment="0" min="-2" pref="200" max="-2" attributes="0"/>
+                                          <Component id="curavatureSlider" alignment="0" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                  </Group>
+                                  <EmptySpace min="0" pref="122" max="32767" attributes="0"/>
+                              </Group>
+                          </Group>
+                      </Group>
+                  </Group>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <EmptySpace min="-2" pref="72" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Group type="102" attributes="0">
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="103" alignment="0" groupAlignment="0" attributes="0">
+                                  <Component id="minCurvatio" alignment="0" min="-2" pref="26" max="-2" attributes="0"/>
+                                  <Component id="textFieldCurvature" alignment="1" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
+                                  <Component id="curavatureSlider" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace min="-2" pref="36" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="angleCosineSlider" min="-2" max="-2" attributes="0"/>
+                              <Component id="minCurvatio2" min="-2" pref="26" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <Component id="textFieldMinCos" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <EmptySpace type="separate" max="-2" attributes="0"/>
+                          <Component id="minCurvatio4" max="32767" attributes="0"/>
+                          <EmptySpace min="-2" pref="22" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="34" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="normalTextField" min="-2" max="-2" attributes="0"/>
+                              <Component id="normalAngleSlider" min="-2" pref="30" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace pref="34" max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="minCurvatio3" min="-2" pref="26" max="-2" attributes="0"/>
+                      <Group type="103" alignment="1" groupAlignment="0" max="-2" attributes="0">
+                          <Component id="relativeDistanceSlider" alignment="1" pref="0" max="32767" attributes="0"/>
+                          <Component id="distanceTextField" alignment="1" max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <EmptySpace pref="31" max="32767" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="significantTextField" alignment="1" min="-2" max="-2" attributes="0"/>
+                      <Component id="significantPointLabel" alignment="1" min="-2" pref="14" max="-2" attributes="0"/>
+                      <Component id="significantPointSlider" alignment="1" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="14" max="-2" attributes="0"/>
+                  <Component id="defaultValues" min="-2" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <Group type="103" groupAlignment="1" attributes="0">
+                              <Component id="averagingCheckBox" min="-2" max="-2" attributes="0"/>
+                              <Component id="minCurvatio8" min="-2" pref="28" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace min="-2" pref="65" max="-2" attributes="0"/>
+                          <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="32767" attributes="0"/>
+                          <Component id="showPlaneLabel" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="3" max="-2" attributes="0"/>
+                          <Component id="symetryButton" min="-2" pref="75" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="originalModelButton" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <EmptySpace pref="32" max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JSlider" name="curavatureSlider">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="fa" green="fa" red="fa" type="rgb"/>
+            </Property>
+            <Property name="majorTickSpacing" type="int" value="1"/>
+            <Property name="minimum" type="int" value="50"/>
+            <Property name="snapToTicks" type="boolean" value="true"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="false"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSlider" name="angleCosineSlider">
+          <Properties>
+            <Property name="minimum" type="int" value="80"/>
+            <Property name="snapToTicks" type="boolean" value="true"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="false"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="minCurvatio">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Neue Haas Unica Pro" size="14" style="0"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Min. Curvature Ratio"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="minCurvatio2">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Neue Haas Unica Pro" size="14" style="0"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Min. Angle Cosine"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSlider" name="normalAngleSlider">
+          <Properties>
+            <Property name="minimum" type="int" value="80"/>
+            <Property name="snapToTicks" type="boolean" value="true"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="false"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="minCurvatio3">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Neue Haas Unica Pro" size="14" style="0"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Max. Relative Distance"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSlider" name="significantPointSlider">
+          <Properties>
+            <Property name="majorTickSpacing" type="int" value="100"/>
+            <Property name="maximum" type="int" value="300"/>
+            <Property name="snapToTicks" type="boolean" value="true"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="false"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="minCurvatio4">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Neue Haas Unica Pro" size="14" style="0"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Min. Normal Angle Cosine"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSlider" name="relativeDistanceSlider">
+          <Properties>
+            <Property name="maximum" type="int" value="5"/>
+            <Property name="snapToTicks" type="boolean" value="true"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="false"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="significantPointLabel">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Neue Haas Unica Pro" size="14" style="0"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Significant Point Count"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="symetryButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/symetryCount.png"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="symetryButtonMouseMoved"/>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="symetryButtonMouseClicked"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="symetryButtonMouseExited"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JCheckBox" name="averagingCheckBox">
+          <Properties>
+            <Property name="selected" type="boolean" value="true"/>
+            <Property name="opaque" type="boolean" value="false"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="averagingCheckBoxMouseClicked"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JTextField" name="textFieldCurvature">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="0.8"/>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="textFieldMinCos">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="0.985"/>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="normalTextField">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="0.985"/>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="distanceTextField">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="0.01"/>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="significantTextField">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="200"/>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="minCurvatio8">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Neue Haas Unica Pro" size="14" style="0"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Averaging"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+        </Component>
+        <Component class="javax.swing.JLabel" name="originalModelButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/originalModel.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="originalModelButtonMouseMoved"/>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="originalModelButtonMouseClicked"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="originalModelButtonMouseExited"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="showPlaneLabel">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/showPlane.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="doubleBuffered" type="boolean" value="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="showPlaneLabelMouseMoved"/>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="showPlaneLabelMouseClicked"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="showPlaneLabelMouseExited"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="defaultValues">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Neue Haas Unica Pro" size="14" style="0"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Default values"/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="defaultValuesMouseClicked"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.java b/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.java
new file mode 100644
index 00000000..a276ad3c
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.java
@@ -0,0 +1,604 @@
+package cz.fidentis.analyst.gui;
+
+import static cz.fidentis.analyst.gui.UserInterface.frameMain;
+import cz.fidentis.analyst.mesh.core.MeshModel;
+import cz.fidentis.analyst.symmetry.Config;
+import cz.fidentis.analyst.symmetry.Plane;
+import cz.fidentis.analyst.symmetry.SymmetryCounter;
+import java.awt.Cursor;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JSlider;
+import javax.swing.JTextField;
+import javax.swing.event.ChangeEvent;
+
+/**
+ *
+ * @author Natália Bebjaková
+ * 
+ * Panel for estimating approximate symmetry of the model
+ */
+public final class SymmetryPanel extends javax.swing.JPanel {
+    /**
+     * Configuration with default values 
+     */
+    private Config config;
+    /**
+     * GL Canvas on which model is displayed
+     */
+    private Canvas canvas;
+    /**
+     * Class that is responsible for computing the symmetry
+     */
+    private SymmetryCounter symCounter;
+    /**
+     * Computed approximate plane of the symmetry
+     */
+    private Plane finalPlane;
+
+    /**
+     * 
+     * @return GL Canvas
+     */
+    public Canvas getCanvas() {
+        return canvas;
+    }
+
+    /**
+     * 
+     * @param canvas GL Canvas
+     */
+    public void setCanvas(Canvas canvas) {
+        this.canvas = canvas;
+    }
+
+    /**
+     * 
+     * @return Configuration for computing symmetry
+     */
+    public Config getConfig() {
+        return config;
+    }
+
+    /**
+     * 
+     * @param config Configuration for computing symmetry
+     */
+    public void setConfig(Config config) {
+        this.config = config;
+    }
+    
+    /**
+     * 
+     * @return Button for returning original model from loaded file 
+     */
+    public JLabel getOriginalModelButton() {
+        return originalModelButton;
+    }
+    
+    /**
+     * 
+     * @return Label for showing final plane of symmetry
+     */
+    public JLabel getShowPlaneLabel() {
+        return showPlaneLabel;
+    }
+        
+    /**
+     * Sets configuration values according to text fields on panel
+     * User can change this text fields
+     */
+    public void setConfigParams() {
+        config.setMaxRelDistance(Double.parseDouble(distanceTextField.getText()));
+        config.setMinAngleCos(Double.parseDouble(textFieldMinCos.getText()));
+        config.setMinCurvRatio(Double.parseDouble(textFieldCurvature.getText()));
+        config.setMinNormAngleCos(Double.parseDouble(normalTextField.getText()));
+        config.setSignificantPointCount(Integer.parseInt(significantTextField.getText()));
+    }
+    
+    /**
+     * Sets values in text field according to configuration
+     */
+    public void setTextFieldsDueToConfig() {
+        distanceTextField.setText(Double.toString(config.getMaxRelDistance()));
+        textFieldMinCos.setText(Double.toString(config.getMinAngleCos()));
+        textFieldCurvature.setText(Double.toString(config.getMinCurvRatio()));
+        normalTextField.setText(Double.toString(config.getMinNormAngleCos()));
+        significantTextField.setText(Integer.toString(config.getSignificantPointCount()));    
+    }
+    
+    /**
+     * 
+     * @param slider Slider 
+     * @param field text field which belongs to slider
+     */
+    public void setSlider(JSlider slider, JTextField field) {
+        slider.setValue((int) (Double.parseDouble(field.getText()) * 100));
+        
+        slider.addChangeListener((ChangeEvent ce) -> {
+            field.setText(""+slider.getValue()/100.0);
+            defaultValues.setVisible(true);
+        });
+        
+    }
+    
+    /**
+     * Creates new form symmetryPanel
+     */
+    public SymmetryPanel() {
+        initComponents();
+        config = Config.getDefault();
+        
+        setSlider(relativeDistanceSlider, distanceTextField);
+        setSlider(curavatureSlider, textFieldCurvature);
+        setSlider(angleCosineSlider, textFieldMinCos);
+        setSlider(normalAngleSlider, normalTextField);
+                
+        significantPointSlider.setValue((int) (Double.parseDouble(significantTextField.getText())));
+        significantPointSlider.addChangeListener((ChangeEvent ce) -> {
+            significantTextField.setText("" + significantPointSlider.getValue());
+        });
+        originalModelButton.setVisible(false);
+        showPlaneLabel.setVisible(false);
+    }
+
+
+    /**
+     * Calculate approxy symmetry of the model 
+     * Accuracy of the symmetry plane is influenced by configuration 
+     * 
+     * @throws InterruptedException exception can be thrown beacause of progress monitor
+     */
+    private void countSymmetry() throws InterruptedException {
+        MeshModel model = new MeshModel();
+        symCounter = new SymmetryCounter(canvas.getModel().getFacets().get(0));
+        symCounter.init();
+        symCounter.setPanel(this);
+        finalPlane = symCounter.getAproxSymmetryPlane(config);
+        SymmetryCounter counted = symCounter.mergeWithPlane(finalPlane);
+        model.addFacet(counted.getFacet());
+        this.canvas.changeModel(model);  
+    }
+
+
+    /**
+     * 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.
+     * 
+     * Code generated by NetBeans
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        symetrySpecificationPanel = new javax.swing.JPanel();
+        curavatureSlider = new javax.swing.JSlider();
+        angleCosineSlider = new javax.swing.JSlider();
+        minCurvatio = new javax.swing.JLabel();
+        minCurvatio2 = new javax.swing.JLabel();
+        normalAngleSlider = new javax.swing.JSlider();
+        minCurvatio3 = new javax.swing.JLabel();
+        significantPointSlider = new javax.swing.JSlider();
+        minCurvatio4 = new javax.swing.JLabel();
+        relativeDistanceSlider = new javax.swing.JSlider();
+        significantPointLabel = new javax.swing.JLabel();
+        symetryButton = new javax.swing.JLabel();
+        averagingCheckBox = new javax.swing.JCheckBox();
+        textFieldCurvature = new javax.swing.JTextField();
+        textFieldMinCos = new javax.swing.JTextField();
+        normalTextField = new javax.swing.JTextField();
+        distanceTextField = new javax.swing.JTextField();
+        significantTextField = new javax.swing.JTextField();
+        minCurvatio8 = new javax.swing.JLabel();
+        jLabel1 = new javax.swing.JLabel();
+        originalModelButton = new javax.swing.JLabel();
+        showPlaneLabel = new javax.swing.JLabel();
+        defaultValues = new javax.swing.JLabel();
+
+        symetrySpecificationPanel.setBackground(new java.awt.Color(176, 230, 226));
+
+        curavatureSlider.setBackground(new java.awt.Color(250, 250, 250));
+        curavatureSlider.setMajorTickSpacing(1);
+        curavatureSlider.setMinimum(50);
+        curavatureSlider.setSnapToTicks(true);
+        curavatureSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        curavatureSlider.setOpaque(false);
+
+        angleCosineSlider.setMinimum(80);
+        angleCosineSlider.setSnapToTicks(true);
+        angleCosineSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        angleCosineSlider.setOpaque(false);
+
+        minCurvatio.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
+        minCurvatio.setForeground(new java.awt.Color(20, 114, 105));
+        minCurvatio.setText("Min. Curvature Ratio");
+
+        minCurvatio2.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
+        minCurvatio2.setForeground(new java.awt.Color(20, 114, 105));
+        minCurvatio2.setText("Min. Angle Cosine");
+
+        normalAngleSlider.setMinimum(80);
+        normalAngleSlider.setSnapToTicks(true);
+        normalAngleSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        normalAngleSlider.setOpaque(false);
+
+        minCurvatio3.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
+        minCurvatio3.setForeground(new java.awt.Color(20, 114, 105));
+        minCurvatio3.setText("Max. Relative Distance");
+
+        significantPointSlider.setMajorTickSpacing(100);
+        significantPointSlider.setMaximum(300);
+        significantPointSlider.setSnapToTicks(true);
+        significantPointSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        significantPointSlider.setOpaque(false);
+
+        minCurvatio4.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
+        minCurvatio4.setForeground(new java.awt.Color(20, 114, 105));
+        minCurvatio4.setText("Min. Normal Angle Cosine");
+
+        relativeDistanceSlider.setMaximum(5);
+        relativeDistanceSlider.setSnapToTicks(true);
+        relativeDistanceSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        relativeDistanceSlider.setOpaque(false);
+
+        significantPointLabel.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
+        significantPointLabel.setForeground(new java.awt.Color(20, 114, 105));
+        significantPointLabel.setText("Significant Point Count");
+
+        symetryButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryCount.png"))); // NOI18N
+        symetryButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                symetryButtonMouseMoved(evt);
+            }
+        });
+        symetryButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                symetryButtonMouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                symetryButtonMouseExited(evt);
+            }
+        });
+
+        averagingCheckBox.setSelected(true);
+        averagingCheckBox.setOpaque(false);
+        averagingCheckBox.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                averagingCheckBoxMouseClicked(evt);
+            }
+        });
+
+        textFieldCurvature.setText("0.8");
+        textFieldCurvature.setToolTipText("");
+
+        textFieldMinCos.setText("0.985");
+        textFieldMinCos.setToolTipText("");
+
+        normalTextField.setText("0.985");
+        normalTextField.setToolTipText("");
+
+        distanceTextField.setText("0.01");
+        distanceTextField.setToolTipText("");
+
+        significantTextField.setText("200");
+        significantTextField.setToolTipText("");
+
+        minCurvatio8.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
+        minCurvatio8.setForeground(new java.awt.Color(20, 114, 105));
+        minCurvatio8.setText("Averaging");
+
+        originalModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/originalModel.png"))); // NOI18N
+        originalModelButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        originalModelButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                originalModelButtonMouseMoved(evt);
+            }
+        });
+        originalModelButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                originalModelButtonMouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                originalModelButtonMouseExited(evt);
+            }
+        });
+
+        showPlaneLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/showPlane.png"))); // NOI18N
+        showPlaneLabel.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        showPlaneLabel.setDoubleBuffered(true);
+        showPlaneLabel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                showPlaneLabelMouseMoved(evt);
+            }
+        });
+        showPlaneLabel.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                showPlaneLabelMouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                showPlaneLabelMouseExited(evt);
+            }
+        });
+
+        defaultValues.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 14)); // NOI18N
+        defaultValues.setForeground(new java.awt.Color(20, 114, 105));
+        defaultValues.setText("Default values");
+        defaultValues.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        defaultValues.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                defaultValuesMouseClicked(evt);
+            }
+        });
+
+        javax.swing.GroupLayout symetrySpecificationPanelLayout = new javax.swing.GroupLayout(symetrySpecificationPanel);
+        symetrySpecificationPanel.setLayout(symetrySpecificationPanelLayout);
+        symetrySpecificationPanelLayout.setHorizontalGroup(
+            symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                .addGap(17, 17, 17)
+                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                        .addGap(0, 0, Short.MAX_VALUE)
+                        .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                            .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                                .addComponent(normalAngleSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                                .addComponent(normalTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE))
+                            .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                                .addComponent(significantPointSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                                    .addComponent(textFieldMinCos, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE)
+                                    .addComponent(textFieldCurvature)
+                                    .addComponent(distanceTextField)
+                                    .addComponent(significantTextField))))
+                        .addGap(63, 63, 63))
+                    .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                        .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(minCurvatio, javax.swing.GroupLayout.Alignment.TRAILING)
+                            .addComponent(minCurvatio2, javax.swing.GroupLayout.Alignment.TRAILING)
+                            .addComponent(minCurvatio4, javax.swing.GroupLayout.Alignment.TRAILING)
+                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                .addComponent(significantPointLabel)
+                                .addComponent(minCurvatio3))
+                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetrySpecificationPanelLayout.createSequentialGroup()
+                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                                    .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                        .addComponent(jLabel1)
+                                        .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                                            .addGap(80, 80, 80)
+                                            .addComponent(minCurvatio8)
+                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                                            .addComponent(averagingCheckBox)))
+                                    .addComponent(showPlaneLabel))
+                                .addGap(9, 9, 9)))
+                        .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetrySpecificationPanelLayout.createSequentialGroup()
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                    .addComponent(symetryButton, javax.swing.GroupLayout.Alignment.TRAILING)
+                                    .addComponent(originalModelButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                    .addComponent(defaultValues, javax.swing.GroupLayout.Alignment.TRAILING))
+                                .addGap(63, 63, 63))
+                            .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                                .addGap(56, 56, 56)
+                                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                                    .addComponent(angleCosineSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                    .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                        .addComponent(relativeDistanceSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                        .addComponent(curavatureSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                                .addGap(0, 122, Short.MAX_VALUE))))))
+        );
+        symetrySpecificationPanelLayout.setVerticalGroup(
+            symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                .addGap(72, 72, 72)
+                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                        .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                .addComponent(minCurvatio, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addComponent(textFieldCurvature, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                            .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                                .addGap(4, 4, 4)
+                                .addComponent(curavatureSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                        .addGap(36, 36, 36)
+                        .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(angleCosineSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addComponent(minCurvatio2, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                    .addComponent(textFieldMinCos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                        .addGap(18, 18, 18)
+                        .addComponent(minCurvatio4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .addGap(22, 22, 22))
+                    .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                        .addGap(34, 34, 34)
+                        .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(normalTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addComponent(normalAngleSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE)))
+                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(minCurvatio3, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                        .addComponent(relativeDistanceSlider, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+                        .addComponent(distanceTextField, javax.swing.GroupLayout.Alignment.TRAILING)))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
+                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(significantTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(significantPointLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(significantPointSlider, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(14, 14, 14)
+                .addComponent(defaultValues)
+                .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                    .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                        .addGroup(symetrySpecificationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                            .addComponent(averagingCheckBox)
+                            .addComponent(minCurvatio8, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE))
+                        .addGap(65, 65, 65)
+                        .addComponent(jLabel1)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .addComponent(showPlaneLabel))
+                    .addGroup(symetrySpecificationPanelLayout.createSequentialGroup()
+                        .addGap(3, 3, 3)
+                        .addComponent(symetryButton, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(originalModelButton)))
+                .addContainerGap(32, Short.MAX_VALUE))
+        );
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+        this.setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 580, Short.MAX_VALUE)
+            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                .addGroup(layout.createSequentialGroup()
+                    .addComponent(symetrySpecificationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addGap(0, 0, Short.MAX_VALUE)))
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 554, Short.MAX_VALUE)
+            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                .addComponent(symetrySpecificationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+    }// </editor-fold>//GEN-END:initComponents
+
+    /**
+     * 
+     * @param evt Decides if averaging is ON or OFF
+     */
+    private void averagingCheckBoxMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_averagingCheckBoxMouseClicked
+        if(config.isAveraging()) {
+            config.setAveraging(false);
+        } else {
+            config.setAveraging(true);
+        }
+    }//GEN-LAST:event_averagingCheckBoxMouseClicked
+
+    private void symetryButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryButtonMouseExited
+        symetryButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryCount.png")));
+    }//GEN-LAST:event_symetryButtonMouseExited
+
+    /**
+     * 
+     * @param evt Symmetry is estimated. If model is not loaded, user is warned 
+     */
+    private void symetryButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryButtonMouseClicked
+        setConfigParams();
+        if (canvas.getModel().getFacets().isEmpty()){
+            JOptionPane.showMessageDialog(frameMain, "You have to load the model.", "Model not loaded",
+                    0, new ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/notLoadedModel.png")));
+        } else {
+            try {
+                countSymmetry();
+            } catch (InterruptedException ex) {
+                Logger.getLogger(SymmetryPanel.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            originalModelButton.setVisible(true);
+            showPlaneLabel.setVisible(true);
+        }
+    }//GEN-LAST:event_symetryButtonMouseClicked
+
+    /**
+    * 
+    * @param evt Changes button
+    */
+    private void symetryButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryButtonMouseMoved
+        symetryButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryCountClicked.png")));
+        symetryButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+    }//GEN-LAST:event_symetryButtonMouseMoved
+
+    /**
+     * 
+     * @param Changes button
+     */
+    private void originalModelButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_originalModelButtonMouseMoved
+        originalModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/originalModelPressed.png")));
+    }//GEN-LAST:event_originalModelButtonMouseMoved
+
+    /**
+     * 
+     * @param evt Changes button
+     */
+    private void originalModelButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_originalModelButtonMouseExited
+        originalModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/originalModel.png")));
+    }//GEN-LAST:event_originalModelButtonMouseExited
+
+    /**
+     * 
+     * @param evt Original model (without plane) is displayed
+     */
+    private void originalModelButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_originalModelButtonMouseClicked
+        canvas.changeModel(canvas.getLoadedModel());
+        originalModelButton.setVisible(false);
+        showPlaneLabel.setVisible(false);
+    }//GEN-LAST:event_originalModelButtonMouseClicked
+
+    /**
+     * 
+     * @param evt Changes button
+     */
+    private void showPlaneLabelMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_showPlaneLabelMouseMoved
+        showPlaneLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/showPlanePressed.png")));
+    }//GEN-LAST:event_showPlaneLabelMouseMoved
+
+    /**
+     * 
+     * @param evt Final computed plane is shown to user
+     */
+    private void showPlaneLabelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_showPlaneLabelMouseClicked
+        JOptionPane.showMessageDialog(frameMain, "Approximate plane of symmetry:  \n" + finalPlane.a + "\n" + finalPlane.b + "\n" + finalPlane.c + "\n" +
+            finalPlane.d + "\n", "Final plane.", 0, new ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/showPlanePane.png")));
+    }//GEN-LAST:event_showPlaneLabelMouseClicked
+
+    /**
+     * 
+     * @param evt Changes button
+     */
+    private void showPlaneLabelMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_showPlaneLabelMouseExited
+        showPlaneLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/showPlane.png")));
+    }//GEN-LAST:event_showPlaneLabelMouseExited
+
+    /**
+     * 
+     * @param evt values of configuration back to deafult 
+     */
+    private void defaultValuesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_defaultValuesMouseClicked
+        config = Config.getDefault();
+        setTextFieldsDueToConfig();
+    }//GEN-LAST:event_defaultValuesMouseClicked
+    
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JSlider angleCosineSlider;
+    private javax.swing.JCheckBox averagingCheckBox;
+    private javax.swing.JSlider curavatureSlider;
+    private javax.swing.JLabel defaultValues;
+    private javax.swing.JTextField distanceTextField;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel minCurvatio;
+    private javax.swing.JLabel minCurvatio2;
+    private javax.swing.JLabel minCurvatio3;
+    private javax.swing.JLabel minCurvatio4;
+    private javax.swing.JLabel minCurvatio8;
+    private javax.swing.JSlider normalAngleSlider;
+    private javax.swing.JTextField normalTextField;
+    private javax.swing.JLabel originalModelButton;
+    private javax.swing.JSlider relativeDistanceSlider;
+    private javax.swing.JLabel showPlaneLabel;
+    private javax.swing.JLabel significantPointLabel;
+    private javax.swing.JSlider significantPointSlider;
+    private javax.swing.JTextField significantTextField;
+    private javax.swing.JLabel symetryButton;
+    private javax.swing.JPanel symetrySpecificationPanel;
+    private javax.swing.JTextField textFieldCurvature;
+    private javax.swing.JTextField textFieldMinCos;
+    // End of variables declaration//GEN-END:variables
+}
\ No newline at end of file
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/UserInterface.form b/GUI/src/main/java/cz/fidentis/analyst/gui/UserInterface.form
new file mode 100644
index 00000000..eb13ba97
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/UserInterface.form
@@ -0,0 +1,933 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="alwaysOnTop" type="boolean" value="true"/>
+    <Property name="autoRequestFocus" type="boolean" value="false"/>
+    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+      <Color blue="69" green="72" red="14" type="rgb"/>
+    </Property>
+    <Property name="locationByPlatform" type="boolean" value="true"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="true"/>
+  </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">
+          <Component id="topPanel" max="32767" attributes="0"/>
+          <Component id="jPanel1" alignment="0" max="32767" attributes="0"/>
+          <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
+              <Component id="jPanel2" alignment="0" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <Component id="jPanel1" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="topPanel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace pref="847" max="32767" attributes="0"/>
+          </Group>
+          <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="1" attributes="0">
+                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                  <Component id="jPanel2" min="-2" max="-2" attributes="0"/>
+              </Group>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="topPanel">
+      <Properties>
+        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+          <Color blue="69" green="72" red="14" type="rgb"/>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace pref="272" max="32767" attributes="0"/>
+                  <Component id="compareTwo" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="105" max="-2" attributes="0"/>
+                  <Component id="compareDB" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="86" max="-2" attributes="0"/>
+                  <Component id="batchProcessing" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="97" max="-2" attributes="0"/>
+                  <Component id="symetryEstimator" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace pref="272" 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 pref="94" max="32767" attributes="0"/>
+                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                      <Component id="symetryEstimator" alignment="1" max="32767" attributes="0"/>
+                      <Component id="compareDB" alignment="1" max="32767" attributes="0"/>
+                      <Component id="compareTwo" alignment="1" min="-2" max="-2" attributes="0"/>
+                      <Component id="batchProcessing" alignment="1" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Container class="javax.swing.JPanel" name="compareTwo">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </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="jLabel1" pref="154" 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">
+                      <Component id="jLabel1" pref="152" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="jLabel1">
+              <Properties>
+                <Property name="horizontalAlignment" type="int" value="0"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/compareTwoStart.png"/>
+                </Property>
+                <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                  <Color id="Default Cursor"/>
+                </Property>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="compareDB">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Component id="jLabel2" alignment="1" pref="192" max="32767" attributes="0"/>
+              </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="jLabel2" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="jLabel2">
+              <Properties>
+                <Property name="horizontalAlignment" type="int" value="0"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/copareWithDatabaseStart.png"/>
+                </Property>
+                <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                  <Color id="Default Cursor"/>
+                </Property>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="batchProcessing">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </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="jLabel3" 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">
+                      <Component id="jLabel3" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="jLabel3">
+              <Properties>
+                <Property name="horizontalAlignment" type="int" value="0"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/batchProcessingStart.png"/>
+                </Property>
+                <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                  <Color id="Default Cursor"/>
+                </Property>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="symetryEstimator">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="symetryEstimatorMouseClicked"/>
+          </Events>
+
+          <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="jLabel4" max="32767" attributes="0"/>
+                      <EmptySpace max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="1" attributes="0">
+                      <Component id="jLabel4" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="jLabel4">
+              <Properties>
+                <Property name="horizontalAlignment" type="int" value="0"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/symetryStartP.png"/>
+                </Property>
+                <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                  <Color id="Hand Cursor"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="jLabel4MouseMoved1"/>
+                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLabel4MouseClicked"/>
+                <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLabel4MouseExited"/>
+              </Events>
+            </Component>
+          </SubComponents>
+        </Container>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+      <Properties>
+        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+          <Color blue="69" green="72" red="14" type="rgb"/>
+        </Property>
+      </Properties>
+      <Events>
+        <EventHandler event="mouseDragged" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="jPanel1MouseDragged"/>
+        <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jPanel1MousePressed"/>
+      </Events>
+
+      <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="homeButton" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="newProject" min="-2" pref="198" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="wiredModelButton" min="-2" pref="187" max="-2" attributes="0"/>
+                  <EmptySpace max="32767" attributes="0"/>
+                  <Component id="minimize" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="close" min="-2" pref="46" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Component id="homeButton" alignment="1" max="32767" attributes="0"/>
+              <Group type="102" alignment="1" attributes="0">
+                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                      <Component id="newProject" max="32767" attributes="0"/>
+                      <Component id="close" max="32767" attributes="0"/>
+                      <Component id="wiredModelButton" pref="77" max="32767" attributes="0"/>
+                      <Component id="minimize" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="newProject">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Neue Haas Unica Pro" size="18" style="0"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="ff" green="ff" red="ff" type="rgb"/>
+            </Property>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/new_project.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="newProjectMouseMoved"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="newProjectMouseExited"/>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="newProjectMousePressed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="close">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/close.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="closeMouseMoved"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="closeMouseExited"/>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="closeMousePressed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="wiredModelButton">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/wireframe.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="wiredModelButtonMouseClicked"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="homeButton">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/home.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="homeButtonMouseMoved"/>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="homeButtonMouseClicked"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="homeButtonMouseExited"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="minimize">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="69" green="72" red="14" type="rgb"/>
+            </Property>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/minimize.png"/>
+            </Property>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Hand Cursor"/>
+            </Property>
+            <Property name="opaque" type="boolean" value="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="minimizeMouseMoved"/>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="minimizeMouseClicked"/>
+            <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="minimizeMouseExited"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPanel" name="jPanel2">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignCardLayout"/>
+      <SubComponents>
+        <Container class="javax.swing.JPanel" name="startingPanel">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="a3" green="ae" red="0" type="rgb"/>
+            </Property>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
+              <CardConstraints cardName="card3"/>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="jPanel3" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace min="-2" pref="643" max="-2" attributes="0"/>
+                      <Component id="logo" min="-2" pref="218" 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" attributes="0">
+                      <EmptySpace min="-2" pref="205" max="-2" attributes="0"/>
+                      <Component id="logo" min="-2" pref="124" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="128" max="-2" attributes="0"/>
+                      <Component id="jPanel3" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="200" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="logo">
+              <Properties>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/logo3.png"/>
+                </Property>
+              </Properties>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </Component>
+            <Container class="javax.swing.JPanel" name="jPanel3">
+              <Properties>
+                <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                  <Color blue="a3" green="ae" red="0" type="rgb"/>
+                </Property>
+                <Property name="toolTipText" type="java.lang.String" value=""/>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="169" max="-2" attributes="0"/>
+                          <Component id="viewerButton" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace pref="237" max="32767" attributes="0"/>
+                          <Component id="jLabel6" min="-2" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" attributes="0">
+                                  <EmptySpace min="-2" pref="135" max="-2" attributes="0"/>
+                                  <Component id="compareTwoMain" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <EmptySpace min="-2" pref="130" max="-2" attributes="0"/>
+                                  <Component id="compareTwoMain1" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace min="-2" pref="81" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="batchMain" min="-2" max="-2" attributes="0"/>
+                              <Group type="102" attributes="0">
+                                  <EmptySpace min="12" pref="12" max="-2" attributes="0"/>
+                                  <Component id="symetryMain" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace min="-2" pref="170" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="1" attributes="0">
+                          <EmptySpace min="-2" pref="27" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="jLabel6" alignment="0" max="32767" attributes="0"/>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Group type="103" groupAlignment="1" attributes="0">
+                                      <Component id="compareTwoMain" min="-2" max="-2" attributes="0"/>
+                                      <Component id="batchMain" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <EmptySpace max="32767" attributes="0"/>
+                                  <Group type="103" groupAlignment="0" attributes="0">
+                                      <Component id="compareTwoMain1" alignment="1" min="-2" max="-2" attributes="0"/>
+                                      <Component id="symetryMain" alignment="1" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                              </Group>
+                          </Group>
+                          <EmptySpace max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="1" attributes="0">
+                          <EmptySpace max="32767" attributes="0"/>
+                          <Component id="viewerButton" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace min="-2" pref="70" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Container class="javax.swing.JPanel" name="compareTwoMain">
+                  <Properties>
+                    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                      <Color blue="a3" green="ae" red="0" type="rgb"/>
+                    </Property>
+                  </Properties>
+
+                  <Layout>
+                    <DimensionLayout dim="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="0" attributes="0">
+                              <EmptySpace min="-2" pref="15" max="-2" attributes="0"/>
+                              <Component id="JLabel8" 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="1" attributes="0">
+                              <EmptySpace min="0" pref="28" max="32767" attributes="0"/>
+                              <Component id="JLabel8" min="-2" pref="142" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                  </Layout>
+                  <SubComponents>
+                    <Component class="javax.swing.JLabel" name="JLabel8">
+                      <Properties>
+                        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                          <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/compareTwoStart.png"/>
+                        </Property>
+                      </Properties>
+                    </Component>
+                  </SubComponents>
+                </Container>
+                <Container class="javax.swing.JPanel" name="compareTwoMain1">
+                  <Properties>
+                    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                      <Color blue="a3" green="ae" red="0" type="rgb"/>
+                    </Property>
+                  </Properties>
+
+                  <Layout>
+                    <DimensionLayout dim="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="1" attributes="0">
+                              <EmptySpace max="32767" attributes="0"/>
+                              <Component id="JLabel9" min="-2" pref="196" 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="1" attributes="0">
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="JLabel9" pref="156" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                  </Layout>
+                  <SubComponents>
+                    <Component class="javax.swing.JLabel" name="JLabel9">
+                      <Properties>
+                        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="a3" green="ae" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                          <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/copareWithDatabaseStart.png"/>
+                        </Property>
+                      </Properties>
+                    </Component>
+                  </SubComponents>
+                </Container>
+                <Container class="javax.swing.JPanel" name="batchMain">
+                  <Properties>
+                    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                      <Color blue="a3" green="ae" red="0" type="rgb"/>
+                    </Property>
+                  </Properties>
+
+                  <Layout>
+                    <DimensionLayout dim="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="1" attributes="0">
+                              <EmptySpace max="32767" attributes="0"/>
+                              <Component id="JLabel10" min="-2" 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="1" attributes="0">
+                              <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                              <Component id="JLabel10" min="-2" pref="157" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                  </Layout>
+                  <SubComponents>
+                    <Component class="javax.swing.JLabel" name="JLabel10">
+                      <Properties>
+                        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                          <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/batchProcessingStart.png"/>
+                        </Property>
+                      </Properties>
+                    </Component>
+                  </SubComponents>
+                </Container>
+                <Container class="javax.swing.JPanel" name="symetryMain">
+                  <Properties>
+                    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                      <Color blue="a3" green="ae" red="0" type="rgb"/>
+                    </Property>
+                  </Properties>
+
+                  <Layout>
+                    <DimensionLayout dim="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="JLabel11" alignment="1" pref="189" max="32767" attributes="0"/>
+                      </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="JLabel11" pref="167" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                  </Layout>
+                  <SubComponents>
+                    <Component class="javax.swing.JLabel" name="JLabel11">
+                      <Properties>
+                        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                          <Color blue="a3" green="ae" red="0" type="rgb"/>
+                        </Property>
+                        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                          <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/symetryStart.png"/>
+                        </Property>
+                        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                          <Color id="Hand Cursor"/>
+                        </Property>
+                      </Properties>
+                      <Events>
+                        <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="JLabel11MouseMoved"/>
+                        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="JLabel11MouseClicked"/>
+                        <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="JLabel11MouseExited"/>
+                      </Events>
+                    </Component>
+                  </SubComponents>
+                </Container>
+                <Component class="javax.swing.JLabel" name="jLabel6">
+                  <Properties>
+                    <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                      <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/divide.png"/>
+                    </Property>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JLabel" name="viewerButton">
+                  <Properties>
+                    <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                      <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/modelView.png"/>
+                    </Property>
+                    <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                      <Color id="Hand Cursor"/>
+                    </Property>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="viewerButtonMouseMoved"/>
+                    <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="viewerButtonMouseClicked"/>
+                    <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="viewerButtonMouseExited"/>
+                  </Events>
+                </Component>
+              </SubComponents>
+            </Container>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="symetryPanel">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="a3" green="ae" red="0" type="rgb"/>
+            </Property>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
+              <CardConstraints cardName="card3"/>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace pref="125" max="32767" attributes="0"/>
+                      <Component id="viewerPanel" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace pref="94" max="32767" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="symmetryPanel1" min="-2" pref="580" max="-2" attributes="0"/>
+                          <Group type="103" alignment="0" groupAlignment="1" max="-2" attributes="0">
+                              <Component id="reloadModelButton" alignment="0" max="32767" attributes="0"/>
+                              <Component id="exportModelButton" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <EmptySpace pref="81" 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 min="-2" pref="118" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="1" attributes="0">
+                          <Group type="102" attributes="0">
+                              <Component id="symmetryPanel1" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace pref="189" max="32767" attributes="0"/>
+                              <Component id="exportModelButton" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace type="separate" max="-2" attributes="0"/>
+                              <Component id="reloadModelButton" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <Component id="viewerPanel" max="32767" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" pref="182" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Container class="javax.swing.JPanel" name="viewerPanel">
+
+              <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="canva1" pref="652" 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="canva1" max="32767" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="cz.fidentis.analyst.gui.Canvas" name="canva1">
+                </Component>
+              </SubComponents>
+            </Container>
+            <Component class="javax.swing.JLabel" name="reloadModelButton">
+              <Properties>
+                <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                  <Color blue="a3" green="ae" red="0" type="rgb"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/loadModel.png"/>
+                </Property>
+                <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                  <Color id="Hand Cursor"/>
+                </Property>
+                <Property name="opaque" type="boolean" value="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="reloadModelButtonMouseMoved"/>
+                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="reloadModelButtonMouseClicked"/>
+                <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="reloadModelButtonMouseExited"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JLabel" name="exportModelButton">
+              <Properties>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/exportModel.png"/>
+                </Property>
+                <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                  <Color id="Hand Cursor"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="exportModelButtonMouseMoved"/>
+                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="exportModelButtonMouseClicked"/>
+                <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="exportModelButtonMouseExited"/>
+              </Events>
+            </Component>
+            <Component class="cz.fidentis.analyst.gui.SymmetryPanel" name="symmetryPanel1">
+              <Properties>
+                <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                  <Color blue="e2" green="e6" red="b0" type="rgb"/>
+                </Property>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="modelViewPanel">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="a3" green="ae" red="0" type="rgb"/>
+            </Property>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
+              <CardConstraints cardName="card4"/>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace pref="156" max="32767" attributes="0"/>
+                      <Component id="jPanel4" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="60" max="-2" attributes="0"/>
+                      <Component id="reloadModelButton1" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="95" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="1" attributes="0">
+                      <EmptySpace pref="169" max="32767" attributes="0"/>
+                      <Group type="103" groupAlignment="1" attributes="0">
+                          <Component id="reloadModelButton1" min="-2" max="-2" attributes="0"/>
+                          <Component id="jPanel4" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace pref="224" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="reloadModelButton1">
+              <Properties>
+                <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+                  <Color blue="a3" green="ae" red="0" type="rgb"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/cz/fidentis/analyst/gui/resources/loadModel.png"/>
+                </Property>
+                <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+                  <Color id="Hand Cursor"/>
+                </Property>
+                <Property name="opaque" type="boolean" value="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="reloadModelButton1MouseMoved"/>
+                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="reloadModelButton1MouseClicked"/>
+                <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="reloadModelButton1MouseExited"/>
+              </Events>
+            </Component>
+            <Container class="javax.swing.JPanel" name="jPanel4">
+
+              <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="canva2" pref="1040" 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="canva2" min="-2" pref="778" max="-2" attributes="0"/>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="cz.fidentis.analyst.gui.Canvas" name="canva2">
+                </Component>
+              </SubComponents>
+            </Container>
+          </SubComponents>
+        </Container>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/UserInterface.java b/GUI/src/main/java/cz/fidentis/analyst/gui/UserInterface.java
new file mode 100644
index 00000000..0c926049
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/UserInterface.java
@@ -0,0 +1,1177 @@
+package cz.fidentis.analyst.gui;
+
+import cz.fidentis.analyst.mesh.io.MeshModelExporter;
+import java.awt.Color;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.ImageIcon;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+
+/**
+ *
+ * @author Natalia Bebjakova
+ * 
+ * Main window of the applicaion
+ */
+
+public class UserInterface extends javax.swing.JFrame {
+    /**
+     * Flag for backround color of the new project button
+     */
+    boolean pressedNewProject = false;
+    /**
+     * Flag for whether model should be displayed as wire-frame 
+     */
+    boolean wiredModelClicked = false;
+    /**
+     * Panel that is actualy displayed on the window
+     */
+    private JPanel actualPanel;
+    /**
+     * Main frame of the application
+     */
+    public static JFrame frameMain; 
+    /**
+     * x coordinate of the mouse 
+     */
+    int xMouse;
+    /**
+     * y coordinate of the mouse
+     */
+    int yMouse;
+    
+    /**
+    * Creates new form Interface
+     */
+    public UserInterface() {
+        initComponents();
+        topPanel.setVisible(false);
+        actualPanel = startingPanel;
+        symmetryPanel1.setCanvas(canva1);
+    }
+
+    /**
+     * 
+     * @return JPanel for estimating symmetry of the model
+     */
+    public SymmetryPanel getSymmetryPanel1() {
+        return symmetryPanel1;
+    }
+    
+    /**
+     * Enables to switch between panels
+     * @param panel New panel that will be visible
+     */
+    private void switchPanelOnMainPanel(JPanel panel) {
+        actualPanel = panel;
+        jPanel2.removeAll();
+        jPanel2.repaint();
+        jPanel2.revalidate();
+        jPanel2.add(panel);
+        jPanel2.repaint();
+        jPanel2.revalidate();
+        panel.add(jPanel1);
+        jPanel1.setVisible(true);
+    }
+    
+    /**
+     * Changes backround of labels to darker green color
+     * @param jl label of which backround changes 
+     */
+    public void setLabelBackround(JLabel jl) {
+        jl.setBackground(new Color(11,56,49));
+    }
+    
+    /**
+     * Changes backround of the label back to original
+     * @param jl label of which backround is return to original
+     */
+    public void resetLabelBackround(JLabel jl) {
+        jl.setBackground(new Color(20,114,105));
+    }
+    
+    /**
+     * 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.
+     * 
+     * Code generated by NetBeans
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        topPanel = new javax.swing.JPanel();
+        compareTwo = new javax.swing.JPanel();
+        jLabel1 = new javax.swing.JLabel();
+        compareDB = new javax.swing.JPanel();
+        jLabel2 = new javax.swing.JLabel();
+        batchProcessing = new javax.swing.JPanel();
+        jLabel3 = new javax.swing.JLabel();
+        symetryEstimator = new javax.swing.JPanel();
+        jLabel4 = new javax.swing.JLabel();
+        jPanel1 = new javax.swing.JPanel();
+        newProject = new javax.swing.JLabel();
+        close = new javax.swing.JLabel();
+        wiredModelButton = new javax.swing.JLabel();
+        homeButton = new javax.swing.JLabel();
+        minimize = new javax.swing.JLabel();
+        jPanel2 = new javax.swing.JPanel();
+        startingPanel = new javax.swing.JPanel();
+        javax.swing.JLabel logo = new javax.swing.JLabel();
+        jPanel3 = new javax.swing.JPanel();
+        compareTwoMain = new javax.swing.JPanel();
+        JLabel8 = new javax.swing.JLabel();
+        compareTwoMain1 = new javax.swing.JPanel();
+        JLabel9 = new javax.swing.JLabel();
+        batchMain = new javax.swing.JPanel();
+        JLabel10 = new javax.swing.JLabel();
+        symetryMain = new javax.swing.JPanel();
+        JLabel11 = new javax.swing.JLabel();
+        jLabel6 = new javax.swing.JLabel();
+        viewerButton = new javax.swing.JLabel();
+        symetryPanel = new javax.swing.JPanel();
+        viewerPanel = new javax.swing.JPanel();
+        canva1 = new cz.fidentis.analyst.gui.Canvas();
+        reloadModelButton = new javax.swing.JLabel();
+        exportModelButton = new javax.swing.JLabel();
+        symmetryPanel1 = new cz.fidentis.analyst.gui.SymmetryPanel();
+        modelViewPanel = new javax.swing.JPanel();
+        reloadModelButton1 = new javax.swing.JLabel();
+        jPanel4 = new javax.swing.JPanel();
+        canva2 = new cz.fidentis.analyst.gui.Canvas();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setAlwaysOnTop(true);
+        setAutoRequestFocus(false);
+        setBackground(new java.awt.Color(20, 114, 105));
+        setLocationByPlatform(true);
+
+        topPanel.setBackground(new java.awt.Color(20, 114, 105));
+
+        compareTwo.setBackground(new java.awt.Color(20, 114, 105));
+        compareTwo.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+
+        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/compareTwoStart.png"))); // NOI18N
+        jLabel1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+
+        javax.swing.GroupLayout compareTwoLayout = new javax.swing.GroupLayout(compareTwo);
+        compareTwo.setLayout(compareTwoLayout);
+        compareTwoLayout.setHorizontalGroup(
+            compareTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(compareTwoLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 154, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+        compareTwoLayout.setVerticalGroup(
+            compareTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(compareTwoLayout.createSequentialGroup()
+                .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+
+        compareDB.setBackground(new java.awt.Color(20, 114, 105));
+        compareDB.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+
+        jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/copareWithDatabaseStart.png"))); // NOI18N
+        jLabel2.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+
+        javax.swing.GroupLayout compareDBLayout = new javax.swing.GroupLayout(compareDB);
+        compareDB.setLayout(compareDBLayout);
+        compareDBLayout.setHorizontalGroup(
+            compareDBLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE)
+        );
+        compareDBLayout.setVerticalGroup(
+            compareDBLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(compareDBLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel2)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+
+        batchProcessing.setBackground(new java.awt.Color(20, 114, 105));
+        batchProcessing.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+
+        jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/batchProcessingStart.png"))); // NOI18N
+        jLabel3.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+
+        javax.swing.GroupLayout batchProcessingLayout = new javax.swing.GroupLayout(batchProcessing);
+        batchProcessing.setLayout(batchProcessingLayout);
+        batchProcessingLayout.setHorizontalGroup(
+            batchProcessingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(batchProcessingLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+        batchProcessingLayout.setVerticalGroup(
+            batchProcessingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(batchProcessingLayout.createSequentialGroup()
+                .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+
+        symetryEstimator.setBackground(new java.awt.Color(20, 114, 105));
+        symetryEstimator.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        symetryEstimator.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                symetryEstimatorMouseClicked(evt);
+            }
+        });
+
+        jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryStartP.png"))); // NOI18N
+        jLabel4.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        jLabel4.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                jLabel4MouseMoved1(evt);
+            }
+        });
+        jLabel4.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                jLabel4MouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                jLabel4MouseExited(evt);
+            }
+        });
+
+        javax.swing.GroupLayout symetryEstimatorLayout = new javax.swing.GroupLayout(symetryEstimator);
+        symetryEstimator.setLayout(symetryEstimatorLayout);
+        symetryEstimatorLayout.setHorizontalGroup(
+            symetryEstimatorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(symetryEstimatorLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+        symetryEstimatorLayout.setVerticalGroup(
+            symetryEstimatorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetryEstimatorLayout.createSequentialGroup()
+                .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+
+        javax.swing.GroupLayout topPanelLayout = new javax.swing.GroupLayout(topPanel);
+        topPanel.setLayout(topPanelLayout);
+        topPanelLayout.setHorizontalGroup(
+            topPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(topPanelLayout.createSequentialGroup()
+                .addContainerGap(272, Short.MAX_VALUE)
+                .addComponent(compareTwo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(105, 105, 105)
+                .addComponent(compareDB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(86, 86, 86)
+                .addComponent(batchProcessing, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(97, 97, 97)
+                .addComponent(symetryEstimator, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(272, Short.MAX_VALUE))
+        );
+        topPanelLayout.setVerticalGroup(
+            topPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, topPanelLayout.createSequentialGroup()
+                .addContainerGap(94, Short.MAX_VALUE)
+                .addGroup(topPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                    .addComponent(symetryEstimator, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .addComponent(compareDB, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .addComponent(compareTwo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(batchProcessing, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+        );
+
+        jPanel1.setBackground(new java.awt.Color(20, 114, 105));
+        jPanel1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseDragged(java.awt.event.MouseEvent evt) {
+                jPanel1MouseDragged(evt);
+            }
+        });
+        jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mousePressed(java.awt.event.MouseEvent evt) {
+                jPanel1MousePressed(evt);
+            }
+        });
+
+        newProject.setBackground(new java.awt.Color(20, 114, 105));
+        newProject.setFont(new java.awt.Font("Neue Haas Unica Pro", 0, 18)); // NOI18N
+        newProject.setForeground(new java.awt.Color(255, 255, 255));
+        newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/new_project.png"))); // NOI18N
+        newProject.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        newProject.setOpaque(true);
+        newProject.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                newProjectMouseMoved(evt);
+            }
+        });
+        newProject.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                newProjectMouseExited(evt);
+            }
+            public void mousePressed(java.awt.event.MouseEvent evt) {
+                newProjectMousePressed(evt);
+            }
+        });
+
+        close.setBackground(new java.awt.Color(20, 114, 105));
+        close.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/close.png"))); // NOI18N
+        close.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        close.setOpaque(true);
+        close.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                closeMouseMoved(evt);
+            }
+        });
+        close.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                closeMouseExited(evt);
+            }
+            public void mousePressed(java.awt.event.MouseEvent evt) {
+                closeMousePressed(evt);
+            }
+        });
+
+        wiredModelButton.setBackground(new java.awt.Color(20, 114, 105));
+        wiredModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/wireframe.png"))); // NOI18N
+        wiredModelButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        wiredModelButton.setOpaque(true);
+        wiredModelButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                wiredModelButtonMouseClicked(evt);
+            }
+        });
+
+        homeButton.setBackground(new java.awt.Color(20, 114, 105));
+        homeButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/home.png"))); // NOI18N
+        homeButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        homeButton.setOpaque(true);
+        homeButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                homeButtonMouseMoved(evt);
+            }
+        });
+        homeButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                homeButtonMouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                homeButtonMouseExited(evt);
+            }
+        });
+
+        minimize.setBackground(new java.awt.Color(20, 114, 105));
+        minimize.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/minimize.png"))); // NOI18N
+        minimize.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        minimize.setOpaque(true);
+        minimize.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                minimizeMouseMoved(evt);
+            }
+        });
+        minimize.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                minimizeMouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                minimizeMouseExited(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()
+                .addComponent(homeButton)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(newProject, javax.swing.GroupLayout.PREFERRED_SIZE, 198, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(wiredModelButton, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addComponent(minimize)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(close, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap())
+        );
+        jPanel1Layout.setVerticalGroup(
+            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(homeButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
+                .addGap(0, 0, Short.MAX_VALUE)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                    .addComponent(newProject, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .addComponent(close, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .addComponent(wiredModelButton, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE)
+                    .addComponent(minimize, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+        );
+
+        jPanel2.setLayout(new java.awt.CardLayout());
+
+        startingPanel.setBackground(new java.awt.Color(0, 174, 163));
+        startingPanel.setToolTipText("");
+
+        logo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/logo3.png"))); // NOI18N
+
+        jPanel3.setBackground(new java.awt.Color(0, 174, 163));
+        jPanel3.setToolTipText("");
+
+        compareTwoMain.setBackground(new java.awt.Color(0, 174, 163));
+
+        JLabel8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/compareTwoStart.png"))); // NOI18N
+
+        javax.swing.GroupLayout compareTwoMainLayout = new javax.swing.GroupLayout(compareTwoMain);
+        compareTwoMain.setLayout(compareTwoMainLayout);
+        compareTwoMainLayout.setHorizontalGroup(
+            compareTwoMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(compareTwoMainLayout.createSequentialGroup()
+                .addGap(15, 15, 15)
+                .addComponent(JLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+        compareTwoMainLayout.setVerticalGroup(
+            compareTwoMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareTwoMainLayout.createSequentialGroup()
+                .addGap(0, 28, Short.MAX_VALUE)
+                .addComponent(JLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE))
+        );
+
+        compareTwoMain1.setBackground(new java.awt.Color(0, 174, 163));
+
+        JLabel9.setBackground(new java.awt.Color(0, 174, 163));
+        JLabel9.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/copareWithDatabaseStart.png"))); // NOI18N
+
+        javax.swing.GroupLayout compareTwoMain1Layout = new javax.swing.GroupLayout(compareTwoMain1);
+        compareTwoMain1.setLayout(compareTwoMain1Layout);
+        compareTwoMain1Layout.setHorizontalGroup(
+            compareTwoMain1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareTwoMain1Layout.createSequentialGroup()
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addComponent(JLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap())
+        );
+        compareTwoMain1Layout.setVerticalGroup(
+            compareTwoMain1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, compareTwoMain1Layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(JLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, 156, Short.MAX_VALUE))
+        );
+
+        batchMain.setBackground(new java.awt.Color(0, 174, 163));
+
+        JLabel10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/batchProcessingStart.png"))); // NOI18N
+
+        javax.swing.GroupLayout batchMainLayout = new javax.swing.GroupLayout(batchMain);
+        batchMain.setLayout(batchMainLayout);
+        batchMainLayout.setHorizontalGroup(
+            batchMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, batchMainLayout.createSequentialGroup()
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addComponent(JLabel10)
+                .addContainerGap())
+        );
+        batchMainLayout.setVerticalGroup(
+            batchMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, batchMainLayout.createSequentialGroup()
+                .addGap(0, 0, Short.MAX_VALUE)
+                .addComponent(JLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE))
+        );
+
+        symetryMain.setBackground(new java.awt.Color(0, 174, 163));
+
+        JLabel11.setBackground(new java.awt.Color(0, 174, 163));
+        JLabel11.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryStart.png"))); // NOI18N
+        JLabel11.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        JLabel11.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                JLabel11MouseMoved(evt);
+            }
+        });
+        JLabel11.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                JLabel11MouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                JLabel11MouseExited(evt);
+            }
+        });
+
+        javax.swing.GroupLayout symetryMainLayout = new javax.swing.GroupLayout(symetryMain);
+        symetryMain.setLayout(symetryMainLayout);
+        symetryMainLayout.setHorizontalGroup(
+            symetryMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(JLabel11, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 189, Short.MAX_VALUE)
+        );
+        symetryMainLayout.setVerticalGroup(
+            symetryMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetryMainLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(JLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE))
+        );
+
+        jLabel6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/divide.png"))); // NOI18N
+
+        viewerButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/modelView.png"))); // NOI18N
+        viewerButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        viewerButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                viewerButtonMouseMoved(evt);
+            }
+        });
+        viewerButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                viewerButtonMouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                viewerButtonMouseExited(evt);
+            }
+        });
+
+        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+        jPanel3.setLayout(jPanel3Layout);
+        jPanel3Layout.setHorizontalGroup(
+            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel3Layout.createSequentialGroup()
+                .addGap(169, 169, 169)
+                .addComponent(viewerButton)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 237, Short.MAX_VALUE)
+                .addComponent(jLabel6)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(jPanel3Layout.createSequentialGroup()
+                        .addGap(135, 135, 135)
+                        .addComponent(compareTwoMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                    .addGroup(jPanel3Layout.createSequentialGroup()
+                        .addGap(130, 130, 130)
+                        .addComponent(compareTwoMain1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                .addGap(81, 81, 81)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(batchMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addGroup(jPanel3Layout.createSequentialGroup()
+                        .addGap(12, 12, 12)
+                        .addComponent(symetryMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                .addGap(170, 170, 170))
+        );
+        jPanel3Layout.setVerticalGroup(
+            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+                .addGap(27, 27, 27)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .addGroup(jPanel3Layout.createSequentialGroup()
+                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                            .addComponent(compareTwoMain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addComponent(batchMain, 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(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(compareTwoMain1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addComponent(symetryMain, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
+                .addContainerGap())
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addComponent(viewerButton)
+                .addGap(70, 70, 70))
+        );
+
+        javax.swing.GroupLayout startingPanelLayout = new javax.swing.GroupLayout(startingPanel);
+        startingPanel.setLayout(startingPanelLayout);
+        startingPanelLayout.setHorizontalGroup(
+            startingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(startingPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+            .addGroup(startingPanelLayout.createSequentialGroup()
+                .addGap(643, 643, 643)
+                .addComponent(logo, javax.swing.GroupLayout.PREFERRED_SIZE, 218, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+        startingPanelLayout.setVerticalGroup(
+            startingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(startingPanelLayout.createSequentialGroup()
+                .addGap(205, 205, 205)
+                .addComponent(logo, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(128, 128, 128)
+                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(200, 200, 200))
+        );
+
+        jPanel2.add(startingPanel, "card3");
+
+        symetryPanel.setBackground(new java.awt.Color(0, 174, 163));
+
+        javax.swing.GroupLayout viewerPanelLayout = new javax.swing.GroupLayout(viewerPanel);
+        viewerPanel.setLayout(viewerPanelLayout);
+        viewerPanelLayout.setHorizontalGroup(
+            viewerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(viewerPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(canva1, javax.swing.GroupLayout.DEFAULT_SIZE, 652, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+        viewerPanelLayout.setVerticalGroup(
+            viewerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(viewerPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(canva1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+
+        reloadModelButton.setBackground(new java.awt.Color(0, 174, 163));
+        reloadModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/loadModel.png"))); // NOI18N
+        reloadModelButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        reloadModelButton.setOpaque(true);
+        reloadModelButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                reloadModelButtonMouseMoved(evt);
+            }
+        });
+        reloadModelButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                reloadModelButtonMouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                reloadModelButtonMouseExited(evt);
+            }
+        });
+
+        exportModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/exportModel.png"))); // NOI18N
+        exportModelButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        exportModelButton.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                exportModelButtonMouseMoved(evt);
+            }
+        });
+        exportModelButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                exportModelButtonMouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                exportModelButtonMouseExited(evt);
+            }
+        });
+
+        symmetryPanel1.setBackground(new java.awt.Color(176, 230, 226));
+
+        javax.swing.GroupLayout symetryPanelLayout = new javax.swing.GroupLayout(symetryPanel);
+        symetryPanel.setLayout(symetryPanelLayout);
+        symetryPanelLayout.setHorizontalGroup(
+            symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(symetryPanelLayout.createSequentialGroup()
+                .addContainerGap(125, Short.MAX_VALUE)
+                .addComponent(viewerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 94, Short.MAX_VALUE)
+                .addGroup(symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(symmetryPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 580, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addGroup(symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                        .addComponent(reloadModelButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .addComponent(exportModelButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+                .addContainerGap(81, Short.MAX_VALUE))
+        );
+        symetryPanelLayout.setVerticalGroup(
+            symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, symetryPanelLayout.createSequentialGroup()
+                .addGap(118, 118, 118)
+                .addGroup(symetryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addGroup(symetryPanelLayout.createSequentialGroup()
+                        .addComponent(symmetryPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 189, Short.MAX_VALUE)
+                        .addComponent(exportModelButton)
+                        .addGap(18, 18, 18)
+                        .addComponent(reloadModelButton))
+                    .addComponent(viewerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                .addGap(182, 182, 182))
+        );
+
+        jPanel2.add(symetryPanel, "card3");
+
+        modelViewPanel.setBackground(new java.awt.Color(0, 174, 163));
+        modelViewPanel.setToolTipText("");
+
+        reloadModelButton1.setBackground(new java.awt.Color(0, 174, 163));
+        reloadModelButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/loadModel.png"))); // NOI18N
+        reloadModelButton1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        reloadModelButton1.setOpaque(true);
+        reloadModelButton1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
+            public void mouseMoved(java.awt.event.MouseEvent evt) {
+                reloadModelButton1MouseMoved(evt);
+            }
+        });
+        reloadModelButton1.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                reloadModelButton1MouseClicked(evt);
+            }
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                reloadModelButton1MouseExited(evt);
+            }
+        });
+
+        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(canva2, javax.swing.GroupLayout.DEFAULT_SIZE, 1040, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+        jPanel4Layout.setVerticalGroup(
+            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel4Layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(canva2, javax.swing.GroupLayout.PREFERRED_SIZE, 778, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+
+        javax.swing.GroupLayout modelViewPanelLayout = new javax.swing.GroupLayout(modelViewPanel);
+        modelViewPanel.setLayout(modelViewPanelLayout);
+        modelViewPanelLayout.setHorizontalGroup(
+            modelViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(modelViewPanelLayout.createSequentialGroup()
+                .addContainerGap(156, Short.MAX_VALUE)
+                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(60, 60, 60)
+                .addComponent(reloadModelButton1)
+                .addGap(95, 95, 95))
+        );
+        modelViewPanelLayout.setVerticalGroup(
+            modelViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, modelViewPanelLayout.createSequentialGroup()
+                .addContainerGap(169, Short.MAX_VALUE)
+                .addGroup(modelViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(reloadModelButton1)
+                    .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addContainerGap(224, Short.MAX_VALUE))
+        );
+
+        jPanel2.add(modelViewPanel, "card4");
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(topPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(topPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(847, Short.MAX_VALUE))
+            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                    .addGap(0, 0, Short.MAX_VALUE)
+                    .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+        );
+
+        pack();
+        setLocationRelativeTo(null);
+    }// </editor-fold>//GEN-END:initComponents
+
+    /**
+     * 
+     * @param evt Changes the backround of the new project button
+     */
+    private void newProjectMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_newProjectMouseMoved
+        setLabelBackround(newProject);
+    }//GEN-LAST:event_newProjectMouseMoved
+
+    /**
+     * 
+     * @param evt Changes back the backround of the new project button
+     */
+    private void newProjectMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_newProjectMouseExited
+        if (!pressedNewProject) {
+            resetLabelBackround(newProject);
+        }
+    }//GEN-LAST:event_newProjectMouseExited
+
+    /**
+     * 
+     * @param evt Changes back the backround of the close button
+     */
+    private void closeMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_closeMouseMoved
+        setLabelBackround(close);
+    }//GEN-LAST:event_closeMouseMoved
+
+    /**
+     * 
+     * @param evt Changes back the backround of the close button
+     */
+    private void closeMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_closeMouseExited
+        resetLabelBackround(close);
+    }//GEN-LAST:event_closeMouseExited
+
+    /**
+     * 
+     * @param evt Close the application 
+     */
+    private void closeMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_closeMousePressed
+        System.exit(0);
+    }//GEN-LAST:event_closeMousePressed
+
+    /**
+     * 
+     * @param evt While moved with mouse, symmetry label changes 
+     */
+    private void jLabel4MouseMoved1(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel4MouseMoved1
+        jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryStartPanel.png")));
+    }//GEN-LAST:event_jLabel4MouseMoved1
+
+    /**
+     * 
+     * @param evt Shows menu with icons for programs of the app
+     */
+    private void newProjectMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_newProjectMousePressed
+        if(pressedNewProject) {
+            topPanel.setVisible(false);
+            pressedNewProject = false;
+            switchPanelOnMainPanel(actualPanel);
+            newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/new_project.png")));
+        }else{
+            topPanel.setVisible(true);
+            topPanel.add(jPanel1);
+            pressedNewProject = true;
+            newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/new_project_opened.png")));
+        }
+    }//GEN-LAST:event_newProjectMousePressed
+
+  
+    /**
+     * 
+     * @param evt Switch to symmetry panel
+     */
+    private void JLabel11MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JLabel11MouseClicked
+        switchPanelOnMainPanel(symetryPanel);
+    }//GEN-LAST:event_JLabel11MouseClicked
+
+    /**
+     * 
+     * @param evt Switch to symmetry panel
+     */
+    private void symetryEstimatorMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_symetryEstimatorMouseClicked
+        switchPanelOnMainPanel(symetryPanel);
+        topPanel.setVisible(false);
+        newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/new_project.png")));
+        resetLabelBackround(newProject);
+    }//GEN-LAST:event_symetryEstimatorMouseClicked
+
+    /**
+     * 
+     * @param evt Enables to move with the window of the app
+     */
+    private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jPanel1MouseDragged
+        int x = evt.getXOnScreen();
+        int y = evt.getYOnScreen();
+        frameMain.setLocation(x - xMouse, y - yMouse);
+    }//GEN-LAST:event_jPanel1MouseDragged
+
+    /**
+     * 
+     * @param evt Enables to move with the window of the app
+     */
+    private void jPanel1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jPanel1MousePressed
+        xMouse  = evt.getX();
+        yMouse = evt.getY();
+    }//GEN-LAST:event_jPanel1MousePressed
+
+    /**
+     * 
+     * @param evt Changes the backround of the reload button
+     */
+    private void reloadModelButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButtonMouseMoved
+        reloadModelButton.setBackground(new Color(176,230,226));
+    }//GEN-LAST:event_reloadModelButtonMouseMoved
+
+    /**
+     * 
+     * @param evt Changes the backround of the reload button
+     */
+    private void reloadModelButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButtonMouseExited
+        reloadModelButton.setBackground(new Color(0,174,163));
+    }//GEN-LAST:event_reloadModelButtonMouseExited
+
+    /**
+     * 
+     * @param evt Loads the model that will be displayed
+     */
+    private void reloadModelButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButtonMouseClicked
+        canva1.loadModel();
+        symmetryPanel1.getOriginalModelButton().setVisible(false);
+        symmetryPanel1.getShowPlaneLabel().setVisible(false);
+    }//GEN-LAST:event_reloadModelButtonMouseClicked
+
+    /**
+     * letting know GLCanva if model will be displayed as wire-frame 
+     */
+    private void wiredModelButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_wiredModelButtonMouseClicked
+        if (wiredModelClicked) {
+            resetLabelBackround(wiredModelButton);
+            wiredModelClicked = false;
+            canva1.setDrawWired(wiredModelClicked);
+            canva2.setDrawWired(wiredModelClicked);
+        } else {
+            setLabelBackround(wiredModelButton);
+            wiredModelClicked = true;
+            canva1.setDrawWired(wiredModelClicked);
+            canva2.setDrawWired(wiredModelClicked);
+        }
+    }//GEN-LAST:event_wiredModelButtonMouseClicked
+
+    /**
+     * 
+     * @param evt Changes the backround of the home button
+     */
+    private void homeButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_homeButtonMouseMoved
+        setLabelBackround(homeButton);
+    }//GEN-LAST:event_homeButtonMouseMoved
+
+    /**
+     * 
+     * @param evt Changes the backround of the home button
+     */
+    private void homeButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_homeButtonMouseExited
+        resetLabelBackround(homeButton);
+    }//GEN-LAST:event_homeButtonMouseExited
+
+    /**
+     * 
+     * @param evt Returns to home panel of the app
+     */
+    private void homeButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_homeButtonMouseClicked
+        switchPanelOnMainPanel(startingPanel);
+    }//GEN-LAST:event_homeButtonMouseClicked
+
+    /**
+     * 
+     * @param evt Changes the backround of the reload button
+     */
+    private void reloadModelButton1MouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButton1MouseMoved
+        reloadModelButton1.setBackground(new Color(176,230,226));
+    }//GEN-LAST:event_reloadModelButton1MouseMoved
+
+    /**
+     * 
+     * @param evt Loads the model that will be displayed
+     */
+    private void reloadModelButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButton1MouseClicked
+        canva2.loadModel();
+    }//GEN-LAST:event_reloadModelButton1MouseClicked
+
+    /**
+     * 
+     * @param evt Changes the backround of the reload button
+     */
+    private void reloadModelButton1MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_reloadModelButton1MouseExited
+        reloadModelButton1.setBackground(new Color(0,174,163));
+    }//GEN-LAST:event_reloadModelButton1MouseExited
+
+    /**
+     * 
+     * @param evt Switch to panel for viewing the model
+     */
+    private void viewerButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_viewerButtonMouseClicked
+        switchPanelOnMainPanel(modelViewPanel);
+    }//GEN-LAST:event_viewerButtonMouseClicked
+
+    /**
+     * 
+     * @param evt Changes the backround of the symmetry button
+     */
+    private void JLabel11MouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JLabel11MouseMoved
+        JLabel11.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryStartMoved.png")));
+    }//GEN-LAST:event_JLabel11MouseMoved
+
+    /**
+     * 
+     * @param evt Changes the backround of the viewer panel button
+     */
+    private void viewerButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_viewerButtonMouseMoved
+        viewerButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/modelViewMoved.png")));
+    }//GEN-LAST:event_viewerButtonMouseMoved
+
+    /**
+     * 
+     * @param evt Changes the backround of the viewer panel button
+     */
+    private void viewerButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_viewerButtonMouseExited
+        viewerButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/modelView.png")));
+    }//GEN-LAST:event_viewerButtonMouseExited
+
+    /**
+     * 
+     * @param evt Changes the backround of the symmetry button
+     */
+    private void JLabel11MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JLabel11MouseExited
+        JLabel11.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryStart.png")));
+    }//GEN-LAST:event_JLabel11MouseExited
+
+    /**
+     * 
+     * @param evt Switch to panel for symmetry
+     */
+    private void jLabel4MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel4MouseClicked
+        switchPanelOnMainPanel(symetryPanel);
+        topPanel.setVisible(false);
+        newProject.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/new_project.png")));
+        resetLabelBackround(newProject);
+    }//GEN-LAST:event_jLabel4MouseClicked
+
+    /**
+     * 
+     * @param evt Changes the backround of the export button
+     */
+    private void exportModelButtonMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exportModelButtonMouseMoved
+        exportModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/exportModelPressed.png")));
+    }//GEN-LAST:event_exportModelButtonMouseMoved
+
+    /**
+     * 
+     * @param evt Changes the backround of the export button
+     */
+    private void exportModelButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exportModelButtonMouseExited
+        exportModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/exportModel.png")));
+    }//GEN-LAST:event_exportModelButtonMouseExited
+
+    /**
+     * When export button pressed, new directory is created and model is exported to it
+     * If there is not loaded model, user is warned
+     */
+    private void exportModelButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exportModelButtonMouseClicked
+        if (canva1.getModel().getFacets().isEmpty()){
+            JOptionPane.showMessageDialog(frameMain, "You have to load the model.", "Model not loaded",
+                    0, new ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/notLoadedModel.png")));
+        } else {
+            JFileChooser chooser = new JFileChooser();
+            chooser.showSaveDialog(symetryPanel);
+            
+            MeshModelExporter exporter = new MeshModelExporter(canva1.getModel());
+            try {
+                if (chooser.getSelectedFile() != null) {
+                    exporter.exportModelToObj(chooser.getSelectedFile());
+                    JOptionPane.showMessageDialog(frameMain, "Model exported into: " +
+                            chooser.getCurrentDirectory().toString() + "\\" + chooser.getSelectedFile().getName(), "Model exported",
+                            0, new ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/exportedModel.png")));
+                }
+            } catch (IOException ex) {
+                Logger.getLogger(UserInterface.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        }
+    }//GEN-LAST:event_exportModelButtonMouseClicked
+
+    /**
+     * 
+     * @param evt Changes the backround of the symmetry button
+     */
+    private void jLabel4MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel4MouseExited
+        jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/symetryStartP.png")));
+    }//GEN-LAST:event_jLabel4MouseExited
+
+    /**
+     * 
+     * @param evt Changes the backround of the minimize button
+     */
+    private void minimizeMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_minimizeMouseMoved
+        setLabelBackround(minimize);
+    }//GEN-LAST:event_minimizeMouseMoved
+
+    /**
+     * 
+     * @param evt Changes the backround of the minimize button
+     */
+    private void minimizeMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_minimizeMouseExited
+        resetLabelBackround(minimize);
+    }//GEN-LAST:event_minimizeMouseExited
+
+    /**
+     * 
+     * @param evt Minimize the window of the app
+     */
+    private void minimizeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_minimizeMouseClicked
+        frameMain.setExtendedState(JFrame.ICONIFIED);
+    }//GEN-LAST:event_minimizeMouseClicked
+   
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        java.awt.EventQueue.invokeLater(() -> {
+            frameMain = new UserInterface();
+            frameMain.setBackground(new Color(49,165,154));
+            frameMain.pack();
+            frameMain.setVisible(true);
+            
+            //enables to use design of operating system
+            try {
+                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+            }catch(ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException ex) {
+            }
+        });
+    }
+    
+
+    
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JLabel JLabel10;
+    private javax.swing.JLabel JLabel11;
+    private javax.swing.JLabel JLabel8;
+    private javax.swing.JLabel JLabel9;
+    private javax.swing.JPanel batchMain;
+    private javax.swing.JPanel batchProcessing;
+    private cz.fidentis.analyst.gui.Canvas canva1;
+    private cz.fidentis.analyst.gui.Canvas canva2;
+    private javax.swing.JLabel close;
+    private javax.swing.JPanel compareDB;
+    private javax.swing.JPanel compareTwo;
+    private javax.swing.JPanel compareTwoMain;
+    private javax.swing.JPanel compareTwoMain1;
+    private javax.swing.JLabel exportModelButton;
+    private javax.swing.JLabel homeButton;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JLabel jLabel6;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JPanel jPanel2;
+    private javax.swing.JPanel jPanel3;
+    private javax.swing.JPanel jPanel4;
+    private javax.swing.JLabel minimize;
+    private javax.swing.JPanel modelViewPanel;
+    private javax.swing.JLabel newProject;
+    private javax.swing.JLabel reloadModelButton;
+    private javax.swing.JLabel reloadModelButton1;
+    private javax.swing.JPanel startingPanel;
+    private javax.swing.JPanel symetryEstimator;
+    private javax.swing.JPanel symetryMain;
+    private javax.swing.JPanel symetryPanel;
+    private cz.fidentis.analyst.gui.SymmetryPanel symmetryPanel1;
+    private javax.swing.JPanel topPanel;
+    private javax.swing.JLabel viewerButton;
+    private javax.swing.JPanel viewerPanel;
+    private javax.swing.JLabel wiredModelButton;
+    // End of variables declaration//GEN-END:variables
+}
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/backround.jpg b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/backround.jpg
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/backround.jpg
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/backround.jpg
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/batchProcessing.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/batchProcessing.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/batchProcessing.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/batchProcessing.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/batchProcessingGreen.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/batchProcessingGreen.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/batchProcessingGreen.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/batchProcessingGreen.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/batchProcessingStart.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/batchProcessingStart.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c2512d3525259ce784a8ff845ceb5c25d746b1b
GIT binary patch
literal 5829
zcmcIo2{=@3-#>^cOVY-Wn#QP}n0>~WVPqK@vP=?#l$kSUm@MO&8Eev1M3!PIl{W2?
zl(J-tREk6|qJ&gJn?x#6eMj5-Jm2-a&-;Gg^?h?)XU;wM`JLbY_uuaOoY~HCb<k4R
zR|fz<%aP4;htHYtkug;b{$4o6#s@x43uAjr0RU$-c_>AlTowTUh-{GuSH^X5W`N=l
z98VzTL%67rFc=L0mdm2Tcwi7DL-C;iQ79Arro0M`5($`SFRBZ{CCm;A6tQC@(5e_$
z4=^SOqzll?tWcIw445DUlJQVcA;F<iMidkMjh6wBC#Ugf)HjGMh>5nDG>GE5a8Pz)
z3525J%&;JlLPF8#IHDPWPNJBiNCYAcPoUw6WGsQmAeb@8bkvUz8nz}82pR6I<v(n}
zznJJinJkQf$45p+;v&g7u_ORbq|@nm0trtdVPOPT8XYR*MPWmwMn4%?kQ9`N!ek<G
zC~A_C#}|jom}pq(cNap!e$j?Xe}oAR7(R*@h9}|(lP>)Py14v3G$iB~S}L=TfUW${
z`<KL0kLWN6?+!`D;SvzCkAOmDMn8>(1&U>2X`uLDX!~{fPYMO#FN0y>lHhOQ5rB9o
z7z%;8r7)KGO<x$pP6F{{Vu^=X9Q-p;oSzm^c6O*GUZPNeI8yrCq@Eveh{cmZOf;M`
zI+jSn5-1)-I)hALP>3dz$s>G+y1-Q+;K_JD!6X8fK*o{?9z-(+3?u#-EEb4_(f<k5
z#f9M*DwXj<LCBHCM8l$RB9VYWqwpzYIsw8`Af6B_<WmG#9-mIanhB@^h)AXpNqp)z
zUGV)ZF&I7>hspcD7p*`H!W_S1$sh;`baOtPhNY3n5SAyTfLI<;z{gUF1Tuj@7J_u1
z*-th%i3si+Uhp4TCshexMiQM*=7A6uON9giER9MLV$F#l9cxa8AR!%s1SAkdqyA~v
zP8=+jxQGRCbjg35ceJzPNW?->FnmGk?qG{@w6`-O(#_1UBpeZq5`YY$SQ5g6%S;r)
z3xM!pp#hUc56ghvWs9V6hNFM9(JJWoAERIq>RW9xc;IA9Fwx*-EkFYFk7?0gg!w;n
z=sRs>AOw^CO_h9yNyS20Bu@g_1i&fzH#La=SJI`th`$$3rqk#&9!SNKA#(~A6jIEw
zJPM73rJD0;1fh^dBk_JY{{JBSM@YdyUT6RWudR6W|K64VtknOUgMZn4|MMLDwJZ3^
z1@(Jv;s1Nt{j<J*_J|GKy^}>L{gF>wUcj%+TK#oP^7#Zlg=j{_(jcNamTV5U5|0nB
zJ`kNuAyDW%Dv?OD{H7vU^zXPJl8_JbsB|okN+x0X#L2}1ZbvL1BJ$0J1Tz7VNc;oW
zH`ebG@qh2jH{>6-8Cb}-DR}Ri9RAug;UB-YT__Z;2MN5Xz7ISb3INk@JF;v%q7J@3
zv?0~c-tcDCvhHKndlP+>x#~$toS|de913ggop&cbL2ro<tjWygr^jQ7@&2iUORbIv
z>dw5I`wzdb^4Z2^CipX)`>Uf@bBf&y?R`72K1;AW&u?lt*!4i#-+6P;()G=LH%ZGN
zQ`$Fvp!5-$9MD)vww<{>J}6?lq4hDcW35xvLZr##1VLWBuA*S(+WY4Q<Vo?VDuA`b
z4LGgB)$H*Db^rwJ>iIyiGFRK5Dn|gFIP@ls`2rMszQ$_p#Q+z`)_5_}F~#3deiP_K
z`0q)o&|i3^Z(8vA^z?&n!v>he59VttDv|^ag%y|&#$)yhx5AYO19sf5-p8B4kdMjh
zO%>&eimcu?Gp#-SM8#><X&ow<gx;A7gMJRef*p6H_sV8I?sNfrzLVtHyrs>xdmRT~
zFryMVMQv45F5)Hous&*V7@5+G_EWO@NUvj7%&peJ>@*%rO=R4+8CGs8*n69c+4-b1
zYr^v*v2G}GL5THmVAJT((z=}+QmZU$(WSJ92KyQlOe$yBC}H|D*38PDUYuchbrsSH
z$`h;RG^D=9JbG~wC5`XJD!qLCyP|x<5<7aTJ(c@N=Yp-{uxG#Oek06IjWr0&n5y=(
zz>n(muTmt?@8vqHk>4|RXzt~uTl)5BTDI%Dzv`6xAeDP2rj~i;40<*tqc$#)e@K|E
z$v0IXRLqygXC~apkcCtjSf@{O*63Pz!?uX)fM_mw`#z~7x_j=*4J+9NoLUAUeMcH?
zd26GT&3a8sn5_ZjwZou-RSh)=)Ii#*C19l<`)2Ja_#VEM*8REern?Kw)S3%cE&^|)
zJ}XV<C#-uXZP;ebFq>}r50<Eb=y|sZwYz}7_RP47xy7+K@2MU9gcs^GAj&x1v!?OV
z!W&!kR<PFE^=vVIF<=Rb+EiPeT4xo0u}dqEM?K9Gt6ZijiqmWWg#F!(3s3Cx0yAP&
z<QhN)q8e#cq(4Li4k&dRqfNjm))G8$S}6)ISK(g=dVCbil*6i$EZ_J#bBDT2bgN7-
z(Ny{QM!FGgMs=*tm|GZcI1#{Uo%5}ZPnt(>cTSGo^>{<-oOfd$v!+x}usa-B%|$wx
zxsPg>K78W)HSL7&sRa>J#++jf&IU(r`MTqT!APCmVN}cXD`}$vO=Bh3;*+k&=zR&q
z_!*qFOZsTmwh>sw3@WUDW3>K}&Pt0W=0aA5{t8yH%H;>Amm9EB>{#>FhWt%8swjW-
zo_cf!`AxggP~>LQycrn?^v$87Tc3anYgk`&Y;TnpuzJ0LBU3IYKQ6x!4#X+<kT-{i
zbgK2JU5^%)O{+cx<WDso2;V}{u5$xECXA$}Jeb<U*4a+I!$H(71ei+3UMl9@qfdeh
z7PChtj4yQC0GVoSrt!UXQ-hXTGi#<@d9p4LbU{sgxR{TM4)njn$nmTywc7HItV6j5
zD_*NK#A3Su8;;IvGHFr`bDGk18XdUYn>u!MYL>1d&;G6|VYKDbX7=#PQ*^#wkUfw#
zaf{?h+x^xX&@dXX`VGBDR1l}~bs3`k_HZ{}5fIaMZmU379%P#MMbG-nDL_9Wxs5iQ
z7hQU@D7)DG+>Ox_&+gB{*u@3S^;iM*NAFpGD9`uvY89IM#(y+>mDU#w`QUQ89KY19
zN?4muZN!<!?QgHSW7==qp?jd*alx|WUX8fi%}3s^DIP|yKtxdL`VGDM2x;~qj@_W+
zrOl7qY!_S{5F67Uv8CIeGEk0hnpC_!!RI|?j#pmgki6VO_VfETx!d@>Y0<{G;qG2(
zQ?xzn$crRbOL|Q&70Be*b}W5oq&oJsRS{vpbj@;qP2oM9$79x&?TKU$+DgtHk1=ob
zDwPoT3bmTiYp~}>+^>$WyEt!zDe|EpW73jZKWnb|njM*9^!h8kKEQQKrQLAq=yW!#
zO)-I!U+Fxm;TY$@s=Y%ylbOF(vq;#F1`<{7J1mHsR_z1q1h~`uS*+r|Mtqj$#@T6A
zvx?Vk1uYiXyLelF)^YHwrfX5&AK$2(WRXTmR8$=9J!M8I$ynn$%rZJ+qTU>L!I5d%
zwJp?W?&XhbvaTNTPYo|QuFgEYy|G`taePVL%N%Et?zWsk8O?Xc=i-Ezu%gd(ZyT)+
z*1pZ`=H^EL<(IcNh8DVIHQwVa!h3gbNW;e7$CQ{SKb{h>!1Za=ie*ueREy3q3;O3f
z>JOiM-av0g$eGwTU8d-r4a1!eILRTS_5P+_CQGYIy_I!JwRpNyqjlc*$CFW|v`%D&
zh#8N{Es!OYWi<qa7o?>>y7TE|Ql5C>q1(n7UGs*Z_p?Vclt$M%47)3yUea?5J|2@k
zzS-<u=%H&LPx`fS&QV&N)=+a@EK8c)gXYv}=mjQvn;}8f&qRANd%jwaGeFJhdZ@jv
zqmudXMx2Jc%5G!impCA@w?8ARcay$++2zzy)laP6m**BOD%F;2t9+axk5o2Sdp}mY
z$@X*e#C)J+`>pt`T;Ef-XvmYKOmU8<+w{u2uVaA3JMR%%9<%cOfIb`M$@|Lw&1PE{
zC<LZj_sC`aJ@0WBR+rgh`rIZCwKQ;{%O;vPeoF$E0)f$*_kZ)K<KASo!Wn<P1Rjn%
zwBlOox7p+<3i|9@BdBMuv~Y~U8=af;OoQT8k2}?>m+f`lUU+<Rat)%;+4rI9QK#DE
zvB$NY=ZWg8NuDO!TP;>vOpY2(UNtEh@rF{3(M?MC=Q~;<&tBV3ZF?}&k*04bhWCT?
zilpAOq>{xWS{VEyq||L7TQ*T*z{Vkl&fNb!@UTus$@S?qs?Q&4S-%@~(3+lNXuTxY
zKaZrd!6?Ds<0==*vdeAg;>}4N4SNM>Zh2L)S`EJZ5JdRjUAfLJly&pb9A%(x95|>?
zPu;6D4~>R8W=q>nl-u6$;v;|_#36pJXAUbx6~LU|`svOSbbMv@VdV?z)yC*%Vr0S{
zpS*#p_~}}&Z-e7c7V4+Gj+kkGrEcx&=jtxC%InX~%xJ81GT_*Q37wc1>y(O|?B}G7
zV&v`0>sKr4k?@i=Whe?&dVieba9mQ`Ji(CH?(5brS9sjx-c||h)U!Tb=+VqYU(~No
zci3J8gudOk>G_!x1r#r(p`!B7{q};y(-o1^bIokl+YZNS?>a_|lxQu#G_BdmKm%Z}
zeR<cTil0rj2H|Y(iT319xo5O@S`PdSRR0(~T(~vX$?a0@>3Yx<kjM2t$=$xA^q9+;
zoQeWUe%bj-!)KRTcBP(7Dl!w@RHU9{*Gim8nKi4K4bt6Bu5P4E{*gXMpJVzZ%~(z}
zm?108l05Ttz#SW|-9oySS8P<kNyc_L+1v~0R+9HBD;|Lx#%%(E7ng479S8RsVMKkE
zTJN6jy8$!;Vd&N!GsipwP2^R!uPegw@`v`lV{%^R7Gatj$x|c!Afj?4GpS-8{h)h#
z>YgFn7|(r4wj|FQjXLf$JO(tb_%{20F>$nj{r*|pzS8}@B!ypQVb}63+~>9APqMQ4
z3b1zE2oqE~ak}{-KbW)4a+c64lO+7qrRp=QI9Br92fH&($H=AXXvzNG8FdMzv7bhX
zLC#|_WLb>Hi=~_5#FsA4F7VY5We#jA2i`s3)O7pgb5+8bo#85aZ6eaF2$cciu(JGj
zziJ4mRnpXpPD{6RWVIE#CoR%c(W5>YSUgP!Nod{&y;3CzUhJCJ{8n2<ZwjYntd%9m
z#dVnOM0zbh)vmp|UFB1yX+BZmkaP=E2Qg0B99op}+d4CYjh`xPQ}vcBnNs<B3!}?$
z;5E(Uwc+QKR;R3Pw;ecpYMn*QbxCKY*Ip|z=EIkoSL)R6v*lUI!*>iz{1QOSV*Tqy
zcP)43s^*s0kKS`uF!Srdd5`jzaYrh%kPbFkNArTs3_pM1*i`O=8e_5{RR}5SIp7^)
zLOZkW6jyuq0f*7E2TB)}%R@JIr=DH0?%wfFm$hq^X4eLYj5jDbC*ShNb)h``1ly#3
zhmpkOTjr;H7YFHYw0xxAhfG|L9S=md1zsd!@7%bs{D`ltdp6c!#etKE(aj%}xkl*Y
zKC>Bq<cn9z@*U@7jIgdh8@7$^s=;NpfJvtL`pL`kRyyy!21TnWz2l@E_;luGEczm=
z{nCD+b4dkN2RSFhIHA;aS9pm1IiXhd<s|1m?EyX4^|^Pm>6f&EMINzj6HS4na47W|
z#b?k{gCES^HL@+I>|A#&&3`x1;;`0T2T8Q4$*oPfnmg)Sz!OCAT=qTHXXQ_~i5f2U
zeQkVla?nq5Q@DG7uEs0sT4r$boMMZpH&+`r=XmRQZ*H>=Po#Fm>Jra1y}am$oEyBg
z>(!}j9p>^ZDv;@;RucVmpV!8SRs7=`Ep{rp&-Uly4WG)t^pqcs*#==QbzgN}W#ZH#
zKgrm*K$zLSTx&GEHR|`BYWXJmVY_1PvZ+ZX#~ztCWqO${Demgf&gcxDU_Px6+ASWu
zJX&#VWONUmdYM*#xwL2E%+<1#VZED+xyuMgUKr+_Mw|BE8L$~<WLAxjZWuGjB=*G^
z-ln@E-XQ%BUQwuF5UqRK^Nf)RW%VPGiyv_F-@eX6$V@B&|D(Kgo1Edct~v1I`h)Cl
zD0<P#HJf&Eu;-EB^1T_S=BUX!zI2XX1J)O(oUmC#4(yoIx0G^QcK>5lh?QVQuHztX
zy<&7tgZrUS&6X}(v&C)os8%|f<V+g(cNl$ijnNpoWNYiYw>%wWTYr)7VV~|iPUMkm
zoCP1#L$xj$95X%g3f}Zj*A31tmxz3Rdx@!2YBdO&(IWNSTGsG@lk?ngp}ZLJ2Hc+_
zLY^>)?mN(1gG>1m(Cs^@p7vocvHdf#p<$e5WA&gjBl>9}A*F>)-o1i+d_wER?=_0z
z6mr1VOBSucU-Efg+{;5gXrgYj-N5(PMK=8Y`1q?&`5}k0FI?W_AI*;TuB?1p|1JLo
Dg0Yn;

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/blackBackroundCanvas.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/blackBackroundCanvas.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ecd6e228c45a7335b0ce7115cbb31316c29ba7c
GIT binary patch
literal 2613
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/blackBackroundCanvasPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/blackBackroundCanvasPressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..79e8e34a2815e9bc38a1dc591033a55435b61671
GIT binary patch
literal 2626
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/bottom.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/bottom.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/bottom.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/bottom.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/close.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/close.png
new file mode 100644
index 0000000000000000000000000000000000000000..a01fdd3aad41bcc3cdf66278c65a43a61286d22d
GIT binary patch
literal 2540
zcmcImYitx%6y6e*M?xT^5<*aiL5-%|ow+l!J3B*{w(Rz$Yzw8e5YRA>JKM3lJIl<p
zyKQ+2gn|P8@Q0*Eq*##_QDQ*~L?8h{5TAfA5F`d-!y_UXBw)O=-Ce-&(!@=6clORV
z-}%lt-??{}PO2y!JZR(~m&-M{yewFSzunGzz(e@6wkMCrUjyT1(=5C;#(C!?I|>?I
zuKsW7)l==Mp^2hmMBS2V$jF_H#xdIE$}dR9C8ZwOgp9&^%uim}zLO+$)lb%XLUbq|
zKy`Xqvx%lOS5zy_^@^a91>=eQq=*Tk$d-s?G!nDKq@PUjiul@Drbr?MvFrV0krR-Z
z8k$4|3=<I^w-+doV+dYwLoY2b+*pF4Ay3gf1zA8tk@kwLK%`$Jj%KQwSQRWu$HKq-
zWSwotMT$x!67B@+Hq0;u1wo)_hGH0i5x{DS*-{e3tT7peAhHxwkK4KtBOFFaHX3X{
ziIw)H5RGSPV^+FMxL{OLic`={J1J#=q0rr-(P$QJ*~N`GN?Px2iLL6UIHIbMWi*%y
zDsDtEdrT%+yw0!<tIoKCw(RX&6sk%#V7$SMq{^cz6pElI=C&{vru4<dfQcmAFsltC
zl4;bWOhh6OAfBq#W2%v`o_6%4;V3BC$WP*)2>>#H=BlAj^spk!<~hxy`=BB00#&l5
z449z-%>o94S<wSU=2ozw>RQwNKtmz1JZ9NaOhM&AKZ!-TbzK#G9_Z5~j~7UspaBVS
z43K%52VSJGjH=QM<5N<)@bf`KX>jV`Jl|(p)le`;ww9vAGf03C0ZwK$fEbPgg6xw3
zt<bCwsy;=9Y=*7U)bZR%k(*f^RVrpg0;6~p-UAp#LjXdK20l*k0ZnEh?_mU_@hVB&
zh#N2>h8Z$cTwTn6W4$~Om}DB79>F)Ps?rHWd2zrC1+Nz{Zb%ZUB5H;im9Wk9s1!z2
zJQj9Lk7eL=%XABOxG6nGQ_!sRRYWIJ-V`Op83{kBI9@<lP~WnCn=;>DLVeFC>JTQq
zi%a@omZ8}R$wWnA+>(2Ekh+s}OKQBka2aWg1_c^0UcASsveO9<4*{=fET_qgrl>+D
z@&7@1x}-{-6bmD~w^HPPPv!oserpfzIDG%U2e(g!ayHaHZ&ClW-3=dSW~2yDuVYFp
z-OmY9INRCrw;xGarezL#J%C5h2Us76r(DLn4-#08<^;(DA)lX85z+6(g&0j%B#!_j
z4~zE+$f-cm1O#LRWuHcSRS4ltTq)K*iPYV5Ng;1KX0VXd5<a_}%j}_ve`Jqc6vKWn
z@uB)|!rkq1<y<Te7FE|RIQROd`rM)sr6-;rFgjQ?w77L?Ya{tx|A9R}6pSWX+gs-?
zoEf%ue{!^BXe764+R|YUfPTYY8U)Ke__E}csUu!%8Qyjh8Q#a)gKzAf6F+q9+LfOU
z&Hn6I>{(Rs^`lz~$1YFCM*en;JJqA_vA$_N^JLAA!4reOyfc5{`o&YW4#<C?;{0f~
z{|?vrex>bsU2rvQc;ULfo4tJ2ZL+<c^O`nP?DOqewt6yu?DNvi9|lf$Z<}%8TGbhI
zS!HKpl-e<2?hkV9ff+Avcnqu%+uhaszxd<OxQ*@yPlLw~R}9<N{_Xah^);7w?EQSv
z+uPf|U$b=WiZ1?<vwwOnqs5n!FCG{7OfEfgu(!FeyYW|X@8lnQpSV1|aBKLhZ`L*(
z>H7V^g`CRyl?yJ+br}mzY_92=wRhd&Gvm5Hy?S~@_g@{)2|u3{j!)V7+9w}(eH+T3
z+&ipb)T>9^*HK%qFFSFnv2%9krA5sJ#L;tYZ2hdK7tj4}KfPz);g*~={d3k-ES`O-
zI5%%j;hfx|)2dh2sABJu!qX+M1kTRdnzJKsIp|kA|BHuLt=n~^>b&QJTr{-j)b#hv
zE~8`Rc_#79oQ{t-U1=Frv$Lc8{Z&J9*j+6%(U2Z%SM5x&CEj`E%PYp}i%UwzyxCTg
i&u7d3{YR(fxvp;Bo>#f8Wtj7Sth~4)xN*YFm;MGWo_j(7

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/compareTwo.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/compareTwo.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/compareTwo.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/compareTwo.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/compareTwoGreen.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/compareTwoGreen.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/compareTwoGreen.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/compareTwoGreen.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/compareTwoStart.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/compareTwoStart.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b7641dc84f2e5f877cef99e298e26dd4da31599
GIT binary patch
literal 6724
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/copareWithDatabase.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/copareWithDatabase.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/copareWithDatabase.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/copareWithDatabase.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/copareWithDatabaseGreen.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/copareWithDatabaseGreen.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/copareWithDatabaseGreen.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/copareWithDatabaseGreen.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/copareWithDatabaseStart.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/copareWithDatabaseStart.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a287fd89a0de0f45d2f749a487571b0509f0e63
GIT binary patch
literal 6318
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/divide.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/divide.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/divide.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/divide.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/downButton.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/downButton.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/downButton.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/downButton.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/downButtonPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/downButtonPressed.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/downButtonPressed.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/downButtonPressed.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/exportModel.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/exportModel.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/exportModel.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/exportModel.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/exportModelPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/exportModelPressed.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/exportModelPressed.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/exportModelPressed.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/exportedModel.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/exportedModel.png
new file mode 100644
index 0000000000000000000000000000000000000000..205cc3f16bac17d7dd719768f0585c2ab03a77ae
GIT binary patch
literal 3290
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
GpZ#xb70agp

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/home.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/home.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/home.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/home.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/leftButton.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/leftButton.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/leftButton.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/leftButton.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/leftButtonPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/leftButtonPressed.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/leftButtonPressed.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/leftButtonPressed.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadCanva.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadCanva.png
new file mode 100644
index 0000000000000000000000000000000000000000..d360ac7701f606fc431474c05b541e6b69c9bbd0
GIT binary patch
literal 9309
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadCanvaClicked.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadCanvaClicked.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa11ab847494e7d262017e620c817beec68adb05
GIT binary patch
literal 8512
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadModel.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadModel.png
new file mode 100644
index 0000000000000000000000000000000000000000..1addcde3aefcf68f39a421c712e600566701577c
GIT binary patch
literal 3891
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadModelPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/loadModelPressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..fee6376e20ed3e23b62da7822fb499253891df80
GIT binary patch
literal 4422
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
V&YZmGshWQ}=x!Tb^PP9>`8OL~Hh%yB

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/logo.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/logo.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/logo.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/logo.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/logo2.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/logo2.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/logo2.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/logo2.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/logo3.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/logo3.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/logo3.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/logo3.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/maximize.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/maximize.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/maximize.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/maximize.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/minimize.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/minimize.png
new file mode 100644
index 0000000000000000000000000000000000000000..f755ee7b36e01865fd48853e9de991ad6ef1ab2b
GIT binary patch
literal 2163
zcmcImTWcgm6dpy?4FnPQ$)~0x-gaxcs;^URW<xR)lL04&>@11MqSe*aGfif?+U`zf
z5@hkRKKL9Eg%wsobYT@=L{<gCS49zD^kKydJ}ju~KUh!CEr}%ARdArEd#b<s&R6Gr
zr)pkZURs!(xPPKhC`{HCt1ECX=GWbK!uRTx6As*t#fwj+FgBH6xAoqc*(?<9x)?Ur
zvbFjXE|;Am^Q9+>y-p11LScHQ7c;&tGQ|_kFe<CpKmA-)Lcgr8T6J8HE20%HZYSdO
z_ELjyuXF0FGpCg4o(lvWkujy$X-BEsE31887oPKBO;!4kY`v_`<^h$p`m$1yiBPPf
zjW{uN#i2!FW2&1c6&({t!;VG_go%r7*PzPqqe8UA58RdN<HK0+tE{%NEOs@m+wB&+
zMo}hBjZjK8tZTZC0D;o2C}TYorBfq@sz`Yf##tyMC1+%w+{nr*C><=J6OU=5beJYc
znAT&lMv6FJ(g;|u9}Vqv#^^Mg--IYby$2GfjjdQ{D<YK}2^aI5BFd&l!Qz(8WZII4
zXdA!Yr_kr)fbmAs?x)A+nrMp-aHoJJeSNW8Nd(Je(vY$}D%A2QqEe|S53h!iFT3d@
zxt<|hR9Pm<D%6Z3q9bfJNXfMf*Dy}x#lr(=9bDkEjE%rLM%X|)fDPBeE-CE;OFs;@
zZUtJeyR|6ISj0uGT2?_+F${ed6O2n93y>`sN4{qo$m0PRO<;;GlTyR7`nq6#Rq~BI
z5BdCoX?@9oW1LIZVvHHgagd<AgbdGgkmq;=1(wN#?s<ZeV8r%h5<=gw_FmRpl@E-9
z>fGjzg>)VWM2Lw|$)qI|cm{DSor=KmRb@ABMYd&9mp)|I*gIaURF)GNgl%|{t}M(c
zwfTxosBI&?NL0n=ZXlBm1Dk~%))ZPCHFML03|Q`Bm_miOhHZ3OJU4u5hf3d@F5`Ji
zlvSR4L4csaaCktPZ*4(?`Q4TP(j#0lfTc3Xx-1d1O(@AtJg6NeJ!P9m3-?5z2ZUmz
z+px!gKcEtpLy!{$h8cKzz<oMe`2Qe$m{Q(iQB%O)s;U2dDYs_z{WUnW`Tl(k4ql3u
zZ>R%rY5%m{uD?e;G7H_Cn=&2NbB;B~l|6NEOL`vmOk!Ke5d>PYWCn<Nu=@yVnAoJu
zBE*^Qt7wNe;}Uw{ab{7(EJH^gF@3}WDv&3LR|>H06GHZI^;riJwWHV4NA5XhKuCWG
z&aV7%d}zXt@v$o+@IwNJ>L)v2UV;O8t5%(Dv|jw<dou9?K7PlyXO6coe|F>E_uIe!
zGI{>_tor&jXZqY5Z+-OIjD2qMy$3HWmEMfqpR+Hno&WCGyZ0?Ubm7mB|GM<y4?8FC
zdF<;4p8n?I?a%Cd^~%+=SFfM>Y2n8!z15d*JR0wU_sl-~+vN%2zCH76{<okuzf}ET
I?%9|A2K2nU>;M1&

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/minus.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/minus.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/minus.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/minus.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/minusPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/minusPressed.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/minusPressed.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/minusPressed.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/modelView.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/modelView.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b86c272720c301cfc948a613429c1895150a211
GIT binary patch
literal 9348
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/modelViewMoved.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/modelViewMoved.png
new file mode 100644
index 0000000000000000000000000000000000000000..778ecff09f0e3310bb2389126bff3fd3af804d1b
GIT binary patch
literal 9788
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/n.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/n.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/n.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/n.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/navigBackground.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/navigBackground.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/navigBackground.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/navigBackground.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/navigationBackground.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/navigationBackground.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/navigationBackground.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/navigationBackground.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/new_project.jpg b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/new_project.jpg
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/new_project.jpg
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/new_project.jpg
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/new_project.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/new_project.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/new_project.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/new_project.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/new_project_opened.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/new_project_opened.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/new_project_opened.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/new_project_opened.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/notLoadedModel.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/notLoadedModel.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea10626859ce6772f5a5b5ec82c702662586701a
GIT binary patch
literal 3378
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/originalModel.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/originalModel.png
new file mode 100644
index 0000000000000000000000000000000000000000..125fd6fea4dafa1ccf428eec9f45a57e38ba0460
GIT binary patch
literal 4999
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/originalModelPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/originalModelPressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..b9e7ca9a2c00e9ecb776df2d99948284923052b3
GIT binary patch
literal 4670
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
GJ^uoOU7O(m

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/plus.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/plus.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/plus.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/plus.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/plusPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/plusPressed.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/plusPressed.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/plusPressed.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/resetButton.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/resetButton.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/resetButton.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/resetButton.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/resetButtonPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/resetButtonPressed.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/resetButtonPressed.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/resetButtonPressed.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/rightBottom.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/rightBottom.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/rightBottom.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/rightBottom.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/rightButton.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/rightButton.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/rightButton.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/rightButton.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/rightButtonPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/rightButtonPressed.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/rightButtonPressed.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/rightButtonPressed.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/selectPoints.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/selectPoints.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4e6c251c13fee841185bb1d6005015ae3e20a39
GIT binary patch
literal 4035
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlane.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlane.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb223da1ae986d266950254055cad86d5fb96222
GIT binary patch
literal 3359
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
Kfrk|fSN;o`o%s|1

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlanePane.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlanePane.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b233935c9cd88b33810b0fab32abb82b338a323
GIT binary patch
literal 3255
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
NP{k%Hw#B3`_%}$V#8ChM

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlanePressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/showPlanePressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..c92818e64874dd61c0170c19d1be4adab470c486
GIT binary patch
literal 3133
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/symetry.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetry.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/symetry.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetry.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryCount.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryCount.png
new file mode 100644
index 0000000000000000000000000000000000000000..58864d8fa5b9ab740c3bf9d5c1e77a9bbf76f820
GIT binary patch
literal 4915
zcmcIo2{=^y`=6*t3-Xf|GDZt(%$za9%wV!5$`&f*rZZ<2lV!%t*hwncmo{2tDW>iX
zp|X^?vPB{)B1BozST2$5|3k~~-rsZY{oVindH(Y}XU>`LdC%wlyzl#Y-|u-Q+{$9l
zYKe^!2n1rasfm#_e7+AKdg3DR_Y3z_TllnsV`9%kAk>u?jwL?nySxwxu@siA9pBE}
zj0~~e)Il1XN>}%B<G|Jkgw8G>4hXr>`A90A$#U044L>YFAz3tC)FFa7)|_KVcV?OR
zap^XG7PgR|3q+!!c2STzK4cicjm`&=K5nk=JhG22Y7v(VUoR|UP{>6SzKbqOf59Qr
z&fE%V$mY_K1a(a`1mJN<Es{E*i6!CiJCQgnpoPI|VE_#@79e9a$r>c&w+{;T#-%aH
z)<(wPe8InTQO<lmhm65^dwZ*UYpAoiObkFGkuX>s28Tn#7HFQYJ0J8xyYrO4BN)+n
z5SPW_v)Jy)1w@d__T=lLV5VO~aO3=db?1Fc6Pz%N56Hm)>ez*lz8jjG|GlZ3+Yf6V
zf43Lx<s08W1?JiMa_AUqI*;wih3LDz=<a;w@6I^RY(AUk%>D~*KW_hlAr1QBkmJd9
zT}%%R!q8pmZZI|vwgndXama>TI>={pZP{$s?}f7Z?h$Edh*UYma;LGqd8!M1zM0dF
zKt5d;1=oy(25@LB-WJdz6YyjJ*s)MN>{nBBSOqkY4}LesVbNF(G!APE5Xk_6jMMsq
zF`LF>`2G`9b91t(JC6^#Lv&LkT@*}8oyDS&AuR|`1PCNFg8&lI1PHH%1~p+7&<R8;
zgab7+@kGWVFZg*QHsraGhlS_Aik8NPV2mHRBts+;1dt#tG+k2@k0#LZ0Gf!$YoMtl
z8lDCb88ili_8rZV%Yyp`bp1W*0xKGfh$m<fAw0-{31I;=jfy9rsWb)&O(1A#K{ySX
zCKg9RA^+{yknPImnzLzeb~S##Zfa;~#bq;CuJ8?>^&SJH>25<!fTXF3#;F4+Bn=`n
z*jzUdmKn<pWYRGlcjkiVVH$9_CM+IYVc&0UWJCA(cIC=KE^3nuLJKXSi-H!kK!*eS
zy3G2MH2<@JzCQ2mOou`LMkQa(cx(pW8|2dUnQ%$|iv}@&MV$wF{XKD<7Kuj0LO3)P
zgkTj?;fhiTR6JZ05|%{OAQC|U`X2cI1MzPug`7cmCLNxw7}Wnglz%4mKi1$co9};L
zgFg=ivoKJ<Y76t9virBbzxRkf+`S8;<bA8B0m%GOS<0WcB$bMVi>66HYtaEBT7!sZ
zpg}4;edr_&JQhy^2>_s_v&h1g_201QI0h90;b8$1G+;#lcp4gHkmzVC9iS2!SWOxL
z0KdapMEyz;^Y^hVTK;aEfr%_G!F$)j<&RAh{_$hmrMts=;KG|~OrsRMajztq8tL2m
zBn~F}b7ZO%st##tHZ6(Q6OorXcS>KyT&B<>#aT*x;GkJ#WV;eW&pdspyu<l}OD)UN
z3JwT1Hl|s<L~VSM=5<o1)Re>8NyQ<LZMBe3)XVtdqlS{&7w@)t?GsG(>(?I@S5_(6
z_dS$39@kR;L9)GLXzsZG#H04NL%PJ1&vqk%!}K3JYoA#E0vU+Br8lK#6+9N4BGNCa
zzpPR0q(qwJQdtv4akV&#lx<XGNyO4M%+j(A`+Do9OAR${-V{))tFP(mc5G_4yzk@k
zQ(t{vUO8I?a41iYy^xl+Ix<04EupUS(~Swrc)1AT*TTG}N69mHa=XeigM)osm5i6I
z5l&+w`|932>TSMWZS#RfX>Xhf2<dS=yhHnNSOZGhrk1&XV4`JL`;CT?g7wd4UfB4$
z$f*<;awi|Zdb+b#$#|vaNPm3Kjw5xmTSLo0TeYpK{e#S;=@v;vCMXR!V4JEio97!~
z3%iZ)IUNCh*Z6)LAHEAa8+w_tEyi-vzqHk7z~lUR^V>nPmaD_gp1w>;`stn>7NjO_
zlcOZ&*iM-wUPKx%XH5C1xs(RxJn$-gJZ&vWEdWzut6!hq!>ldB9F(g|;yHcPU!}Eb
z>@489v7$o*-LY$K0x|Qplhrylr_FRI%E8rlTP6`HA;qk6=Tbez_vg<oH!mSzt*j3e
z){cD)K7#>ko)s6*I&F4h_<0J&E(Xrdo{HZazJC+dtn_H0u1EH=*kI0=%lU70xSwsu
zvN*(<UZ$dd)-<}_-NY>HU#J&7GUc~^O__I=47o1jH2L9q$~z>H`}x8M=Ky~ydPsdr
zAbn$*XrQC;W0(mEPV$}D*wyx&;q8QiW<!e=r%!(HY8PE{YNX=rD}}SUvmd&SZ@lS?
zl<)8uyW!n5A8#_^>D8F?q>nl!@0p~t4<)tSK)<L3s!-?|_Z$l}E?*%U*jDtaZ+HmR
zRF%cQr>O0HhS37`)!$n#QVt;!v|B@WqU6FQ*Y!_2W;FHOd$)!nXJbkih?omZ93AcT
z-wyg%nbHH)85Ii3P|UKjL8ZHWyVUc=!~^X-#Abo(K}S2wY@Fs9)wlxR`^wx~5ta8G
z%KE56bh^>|Nk`YdW6=jwT}P*Dy*4S=w}5KTO_mzCj8sZzSHyIEj?<qh?cz*{JudI9
z9##i(`MLe>b0emPAFPuz<0H!%52FL<OAYiPPg#WC){6ix`snKRIcUORFxNLWEqyfX
zUq$Jc&!$)QK2-V`QH2xc%}mbTDSqvys8bXok!=*R(Y@qOQLzO|YOQMb`ij8`dymk<
z%5~z)x{f5XV&4q=zmpX`TasF?A}t=`txmiICbSD|RC-Xr(74@4VU18Y+HFsN@YwF6
z)OzlxR92htXHQaUfJ=naIq}oHy>ohXEmqW3r%#du&8VG^=izK;t8G4`aEx!XD#am$
zYm-O59-O0ddbJ~4mC)U5Sf!G<VXX6f>Z>5Ly{7isK}z=Wh!ZZ?3}dAyx=XyLl=t~N
zx1$bZ)b@)g4UHGf7JvAu;-c*B4s6+cfVx+<$(;i#nFXRTMh+osjnQKY@4-tJsrNca
zI|L%pj$5)kNzI4%cHMJ%l+J%1R%M&gz`UK>zpcbFIa9N{R}_&E4Hxx=+65zvOaoPE
z@yzHL=g45I=e8-TFJym7!$F>}QjJ3ork)<x8*4dc6D(*DDrrd}^ajDpSyGJkjT??R
z_bY?h_cQ8}Hk0Wq9<V!Bg_d<+2s6j64UVfLHTB)<LFE)yGBUDq->rc>FBVpAlM5dw
z9h-_7DYP32mblw~@Q9O`_KBj}3_TU`Q&hwWS?`w*5*wD?mq>pzd`i&ubIo~X=}c#b
zzSP`yG3(R2dC{v8aog)1n5y^R#k{ML$bY-%!o|q)Gi?C|v)-F7WePq&cg>eQbkNSD
zDz47TaG#=ruC8uipmcck`%4vh)#2|^O=kVI)LZ*a>A_ZU^0%)H=IN<CQPK054lEyC
zrBm}8{)Ot3vY{haDnF{JVDjG{5^^7Vh#?TnBL~~``JuGP-*gIRDO{$iTzL3$5yTT4
zzbmV^JP1{~mU<?h^0<q0YWiVVx$5hsa5A=8hSdhOZqhgjV;il~4|d$*E@{kgkz5}B
zUOQtT_YDF8SE&Bp&D3)7JzEP_CVAe{$TV2N?B8jor|?^$U6M}Zm%`a%zV%W~mF{KL
zK8dN?K|i|^rO%!N+{n*z<63NP8m9&Ld=%PUzB)rGG}*afK;@DIe)U#kV?k*6=+uMl
z`5QXFh#;`ty+PyKl`k-S0~I_j-cG}<KX@0r#M4T!W6L~MVS~gjdu>DSs4ubayCa_-
zs_nMiX1y-0es1QlTp%VWF-gB;=H0`{WTzsj9lXq^KcB1NOKcs;S+PY#Nq)R*+p0R{
zno;adDk<m^>_+UQ_Z}@`>hr!^u;i8?u#GR(E~xz+HGYMCquDUYE$7UA4gPd&QgLx#
z&C?F;$=$c|<pkY2qbkaBJX-!Ir@?{O-ZOXmCWdc>Sw8c+`eqoGWw+Id`ihQ5S&_z~
z{HC669uWAs-PtxdbK696L33Fd7WI<u*R%ip_WH)Nz00!Ylw3=nnYSFnzBanH&F8Kd
zLeCwU97(vazFJ0}ob7c+Kg#!de`B~{Uuj2&XJkAAv5t}mFk8picaEgmc-7tOkBE9x
zA2mpvYIsw%OCk3Od0&4iD)4fa6)b||B3WA#nwzB)G72jN=W51C$0%pIo^77onR76;
z{LyBjDgt4*N#RV}%(dHu(2WXfgRO2_!Q*!7?pucho7+}bB=DT*UDP}2#dUF4oor^-
z>b#TwbkZR~X2P%YiiB{k)-^wU<!K|)ts>wN#yZKeu;0$N8gdO^lghr#?j2oeQIDCe
z?iHQxztDQCMrkgHmmX~)-6r(qUM-Egib?kLC(8u}sY^*@wYr=ULQ}2;dHZT11W(D>
z_BBJCJIsXkJk`VIPKvOqiPtl0Ya=LARswQJqixC(1UymTM#}ZSuYS{Ui=ePkYGr}(
z^>Z~xMK?W4@{G5po=*Q9w@RD2zQn1}XQ)UrLbG&!R#fz<_n@<@SDE?d1pkqX*AOS(
z%V9DCW)+Rj*4m%DarMZS&C-4Yn8R;cMWdo9DZhrigw^<=wxUv?5j8DY)FQJcv}><1
z)xZEw?reR@<U=ZDK=~3e$Lx?vSXuL{$wzWx@?wV=jOyJ~cm#cjP_}^m?`m$4AzNJW
zHW7&b5^*GKJU-8P^ujOK<+j)?HLB@)5p9O1aBijL;(h`j=sD-TG47>&`i)f9J3HG}
zr7@v<H#o7eL8kS1cebo|;_=BlUnx&c2wi$HZBw5vc9&A**X+n=-`Eg@tQ2t_gSVeG
zZf$0@d&K?x{B6#iUxH9bwX&w7v`8dW+2Q1%2R)ts8G*Z_bX+^$N`{tg+VT0P;h2Cn
zY)=f*y0FdJBhhVq;~E7TxCV&Go|&`z6fLw&7)+m^d40bw<^X#jrnowE{rl{BN;|Aa
zv{u%O+O|&CsAq%Uwhe$FOgJ5~Vn18A0`++>nQA7JKsmQoX4v1N{1Qq%@aTSh=NXbT
z6j3l%y5xgG>o93x98gyRttHyo_~-MDO7OeK5k;Hr>6KGnhIp1v2eGwuCw1W0(dnCr
z6IoYvhm$gfg~OKndPZ_CwU<riH8no4JU-#>J8?}cQc6;4pd{JMIR0~-<CggJXPwY`
zEmhUmZ-m1`<mRTS`&I4TCF_D_!y4XE0+JOGokeZEMNvZ!0wwi<C4YSF{LlB&iuonT
X<@;M*qF9UnYnkr0Fv>DGdh&k&jEgjJ

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryCountClicked.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryCountClicked.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d4a9d0303d94c7731a6f5a45d5c31afa0b783b7
GIT binary patch
literal 4839
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
B13Lf!

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/symetryGreen.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryGreen.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/symetryGreen.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryGreen.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStart.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStart.png
new file mode 100644
index 0000000000000000000000000000000000000000..9423bccd70b3d9bd3002e620851aa3b7973f8dff
GIT binary patch
literal 5559
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
aO)g_zt|oB7Cu{bvRTn1@$E)jtlK%xcJ~@^E

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartMoved.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartMoved.png
new file mode 100644
index 0000000000000000000000000000000000000000..182a20e18874970e67893f21607c840cf3587af7
GIT binary patch
literal 5564
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartP.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartP.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c6b58dd1f579b11290a69a26628ab08a228353e
GIT binary patch
literal 5510
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartPanel.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/symetryStartPanel.png
new file mode 100644
index 0000000000000000000000000000000000000000..39658d54cc1a8267ef87ab6374eacc82ae4e292a
GIT binary patch
literal 5564
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/texture.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/texture.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/texture.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/texture.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/texture2.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/texture2.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/texture2.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/texture2.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/upButton.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/upButton.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/upButton.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/upButton.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/upButtonPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/upButtonPressed.png
similarity index 100%
rename from GUI/src/main/java/cz/fidentis/analyst/resources/upButtonPressed.png
rename to GUI/src/main/java/cz/fidentis/analyst/gui/resources/upButtonPressed.png
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/whiteBackroundCanvas.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/whiteBackroundCanvas.png
new file mode 100644
index 0000000000000000000000000000000000000000..2392d79948755cb2681db19304b6fc23faf15392
GIT binary patch
literal 2647
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
YsOpud(YlR{N%-{Br)TS0mlak06Le$ESO5S3

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/whiteBackroundCanvasPressed.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/whiteBackroundCanvasPressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbf866bba082635034362ab1345cd33d07ffcc2d
GIT binary patch
literal 2667
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/resources/wireframe.png b/GUI/src/main/java/cz/fidentis/analyst/gui/resources/wireframe.png
new file mode 100644
index 0000000000000000000000000000000000000000..28efd055ab3380bf32718c9a8392a08367b32945
GIT binary patch
literal 4143
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

literal 0
HcmV?d00001

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/close.png b/GUI/src/main/java/cz/fidentis/analyst/resources/close.png
deleted file mode 100644
index 39524575cd12b20d0f3745dd77762df8b4512c8f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2314
zcmcImU2GIp7+qR{0)jly2M~0eCJ4gp%$=G2nSrI0-9neJrM9ark{IsH-04o(of&7Q
z-EEa1)QVsT1jWP{QAh+-C<LR{pdpk-`_{^j@c{`nMiQ}54GIsYdT0MyuwY-@WOnY}
zIdi`Aec!qF?#{Z}H8ZEro9^*=W=3lw_4w{}ud*rlyYY)90eqWg)@-oxT!nj0%6w4S
z>hVl%(&9}{Q*50m8!0bT3<-HNDHEeTp5>Jp6Uv*BLrADu(?jIV(`QIRQ$l2;FUG{o
zFiL1O?G|ciuZ_#?n`J>ED_0Q9Ga@EPAqNtfR8qIaOo+_#ig@f!(<G6FIGaOcl^c*~
ziq#Qe!$O45>!)PEvqV7f0zV_L{8EBtK!9cfG~g%(h>Tz41S0<-aWqR&#rnwVd@TGc
zL?#@^6lpr0PJ7dw*RYytAP54@ur$k37(v->x&t$mZdVi-BFL64&2%(FCtOA-87)qT
z#7c81q|73%Zs*H{3r1(4NdqtArc?mNVh@I<Qbn}wRJY<NdA;Kj+wnFN(e=nSS}Yk=
zw<6uCC<HSThGW<X<38GokMB~b$i;wWi<QilN0DiiL@CT|V=Tz(GsUolpkr8Z!$=ky
zRab~egu}$5Mom|Yw7uBXlZT@SbWn)IJrgLvQVbslLD9#F9Jj=69+QK{unQFEz=?qk
zMN``*0*%GQsBSw@mr*nlBC#m1rYWL?R8|E7L$QABAw}XDD(DLUDxj(yuS%>cD?(Nm
zem`Q!Ep8p$_j9II3>kA2YbnA2iv$1=#Y>z@A(rPUK?*{Okr^%sl%T8tuE4h5((t;0
z$+4`iDg`qlftCGoz(=vNiYNeFRlE?SREYxtA1fd=ppe99+^~@}teBzT>SF%U`Di#?
zXBn!N#1HKHHLHkdb=VICzn@~gfFu-IR1GTyvCXs;Y(})HH@l|CGH|*znvFZ$mS08<
z=!N_!sS#Okicof!M2M7KFCZ)^H?56R=7}Ygdq15(nDhZI$-!(xb<)s6Rn531|KUOU
ze$s8&`e5M`^T+=tJYP~d0rh5t_g0#8Q=#2mDAy4B-d>G1KaMiaI@pFRJD>e3*gRT?
zQCt>N3scx5*&%_QanDni3U7GD*f}P86m?gu(dmM>tMICG%`~2p72_`@Nn#`(_<d9W
zfgr^Nd6j|^-ZhZG@eD6O9{_<|A(C1#tNU;vR+VJv6Da88SV{uCLP1qPl!Sm3R2jbl
z02srSE$_cl950tFa?J5i=nXz|++p#s!#|40CDL&pEqoY0Q}I#S<C)YHja0=G+lIa$
zOm#4`Uxi)2lpGr<Z+c>hGx^!RrOqo|d&~REHXK|qIP}O-r{$!u?59QhDtA6Udsbyh
z$57e8d_ccgy0&5P%7^C7cz61#%gc6jo_TA|&c21aOOL<y(#Koup>TSBV%v;?@{51Q
zE?j>3_W7?r33NX8_V4>UrnZk9?*DYo+0t7JHcj60+);VOh;wJ-LkD_G7hJe7jqASr
zTW8m)UF+ZfW}m+C;r_En23B65_4(D~iF9|**44ucZ+Xp2!?VwxIF#;ubogn<``281
z|DIl>G1Oc6=I+yLf33ba_p_79DS<<8WYU?EP|3Bjk)8wZg%7VEq_*qV?4IbQAA~OR
z$BzE<S5NIqZ+mj!+r>BLU72y9(|@)9`QhPCo?fVa+4aXe-%Yu5th}yn*-`oD7~ebZ
ztEQ33ulM<Giz|;@x0Y59|GoFz$cg$f1t`Dq?zx_=o`XBOFQ!PY!Tq-qt*(u9t=hEx
EA1Kxu^8f$<

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/loadCanva.png b/GUI/src/main/java/cz/fidentis/analyst/resources/loadCanva.png
deleted file mode 100644
index 665b6d4ebf2858ff5aa70217759209eaa66b6c91..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9393
zcmch72{@E(+rJ?#M4L#qG37ywS<GO@nk74v6q04k3?|GlGZ<^5h@_;HN|sbSS_l={
zQ<jpgQAl=KLX162efMa2pZER0&-*;z@&CTham;pI=Y3x1^1IIScU^}wI4ffzf!zW;
zJUl|CCWbb^XEXP;aXs)JaC?#gd~EVHaiH_?sO;gsK+HS30e~<M+18$6Z)t%gP<>SJ
zM5-G}h3Vr9Nb~S$=`wxs1TPW;>_+k+Q?wzIB^3}bnWzo1LtDZveGN#SWRqYT=}@qh
zEg{&8fFVM3b--FoETF)L#K41@KHd~MmZ=R{(~AYZbBAFN@R|t2OB=GEyCB%!5(hS*
z(nw&miW-!FKq0~E7!`yX9D_tDgOPBAIt;E3L#RUG2rOI;tBL{t_=5ne(TMI?8^Z%X
z)&hQMLp&J_Un~q37#OG$sH#GxdB6}D3<d^A!jMQPAOWQZQ5bk8ltSP0Q-dLiPN0!}
z8DuI2%+-i@qxv(nA%LadUGVY!rItef5hfsDFecs?hERcXUHU0#Y5AW;eSCgN(-}qq
zz$!oN{kMwgwn4rmm<@?e^`{X?Mgb%WW6#gU=nNauKivHrj|1Yr9`^O5GN^P<>Yq6F
zYx<wuBNBdD>+4VRUW+Y}03&&md;r7ffGpyda}2WkpBTrT`6sm`Cizc9xih~+eX#~K
z5}rY&*;1+AKe2=R=?B=r0IXm~rVy!tbVY86eu$F{@eGnS1b`6+ia<i)C|iU&7LCFp
z5K3G;!M}@I0>C8V8Tg;VNH~BtC<0-Ngkx0^0OtNlm`WtO2mKvUOG~UNh0efJ2qaTO
zZ3tkL3YkpA64i(Z6ahhks-p33P>ebX0mZljZzu!_=|+O9s=5>KYjy$88&V1W+~{(j
z|GtliR05#mSB9`^?szx`g;9fI;HoGn35h~N@o04v6ptXd;nmS<?nrmUPi@vTGO(5L
z-hb4}wTcL6M4{C+2q?Te6ionpC%U1~P&cAG28u?js}qo_L^U`P0|EbIT?48&m1apL
z0?}3d<G87T0ggs>Cwl`EbQ@!Ru&I%O8UmxH21Tj>h7bu@cPh;X4<MiHgZCi8d?_9f
zFc%b9z&gNFJa-#vLjcjWL3=Lxz5Txrs>0X)U<mHV4*`e268OjbVG0>o76}1!frVXj
z;1E#b07HS**2ZvTCdu30kPL*J{@n~T`j1l%f0$B3bL$5XJ|ImdWIBM%pdS_K5XtYy
zH*Yd{ZJT59gzp{@xELl8AwP!6{{|j^FA?9>26~c!Sp5fde;1=u-5G&+8fm`=5a7Sq
zJFq`9osJLq&xRw_F+>eG0SR@(6I7u{HvrOZXg3sqB@7(nrmCR<K=P;K{|koy2r0o6
zPw^lDZ3+hYQ&)&28u<^-_~L1Jpf{0dbZrQMN(ms*fE0n<X;dHZFN}g2R50Gx*PBdO
z11KzjLj2JQer<_AU+*tNr>cfRyAk08s5{Ax1a%{EHy;{Bf@-LdRPm|=3|s^6_OGG)
zUZmjawnzjPjld#Re-^3#e$M|Jq5Df$2zXUAf<Qn(RW<N{11J<6ib2AOP&|sHfmc^Y
z<I$=>9r<VY{%O7aUv=eIs(+gEM;xqW|1T2G#l$aw{CW2OKHC0g*89s8{k;bCf1Dy1
zmwA1!oUnf_s^5Pbe&4kRxchRA{b2uH`TV>11LzPI=%s(rUEL7`b&Q6a8r0nl4`5gw
zg@<Y&2x?Gu1c9W1g5xm&x#Yr!tBv~q+g-W!>Q^=S)%y1X^nu%5=syaxKHlS3iPrh|
zoB*SSKmkS94T^@NRiVHS62J~f8c;P73WG+vA>nW$Noy_O-sHd1<>m$lD!CdOs!l>^
z0Gk@+4#m3xREmUAMZr-RJQ{&e|GT<KNOv~^9*qGQiYm}15GWv|?ig;tL%3<U!vS7|
zK>R`1nuXuph5hHatV#ZX#sf~R4FP8Z?$=+365z+LV-1M{Gzl7TXt~U|?Zd+(W@l=+
z-<Ek}qAP^4^KDrrXR^k`-0`9wE@oQ9me%?H?fcpXDxCNyAH0(G%bM+%%aGlwU!@dz
z--{e#{-C>*d3CF_EOb4TcfI+*U6p%bxSYVek>g^vLe!1mEkUSFK6&Z1Z|xqmp;8xB
zkH&!o2c--2M(X^^5HZ|i=ykX1Eu`1oCRbc~@3&&5d%yL|-OCx$=^cKxb2zhm;_mM&
zR{~d9q{o3b+lMGe#Vblf{Juic7H?ek4~*EB`+7zr2v4cDD;wB=Zao3I(>-e$eQ9_|
zdG<_29{CI0wJ^xR>D%0ml(Js6$;D@0M>ZciP+Gfr1f%LzZXHUQd8O=HVLX#FYSnO6
z{e|Y&p)125IGOW1V=q}>S$@H{xvSZ?CWdqLe5bXR^ScQt-O|ULxS;)(hq}5kKIg4h
z>co<Td9F!Ye>zhhFrM&cM>pq|+5;UP;=U$(7FFgNa#?C}u_d`}Wz()t$vQncsHZRF
zzrIUq`^1cQ<%f^DK6_nQHbCus@)_DY^V#TgO3Url9cRP(Ybn%s9Oq4n%nU+RTwCeD
z%zH;?P&xT)=R8MvyMCm#fJw|QB2znD$Ww4@CupU)X-16qh0J4xuQsej_O_Zp{+J54
zgDW3-I1z@stuHLri&pFM&Cbn)+C_4*_+GT}twLjTcZ16})#ZW9_vnQRE|nEEG4)CB
zY%AU@=V#o>%K!A1XNO?I{PcUr&vv-Mxib5WvXNW$xo;4S%MORa(w4VLX<t5Ed&Ar~
z=Eaq^ZlulrR6h|FzQw1bb27YRl6B@WM1-{cajgpp8}(o4aqTq$ZQ91C2$prb04ntg
zmh?=|+Nxi|@@V*_SwAup0Kp_px8Kv6bU2;u6=f0<Gy#1oaNt^Pm5*wf3ZXA@ql%2U
zpnN2{H22jWN!p>AS7W&2Jh96BX$Bnes5fovZA0(ll5i^q&w36rWMIn6b)z?;L@p3c
z-*-Z6ukI4?7mL-5=!>i{o@$vocMmHvZj@(!vl}~apB)GBV~OA-g`CSm;bxY$@J&T~
zPG=%nu;OrO{+x56d817V??t>dmrTe>{G+k(I{PAxA^=?v6kbJ~shm@Ltq%$;4iDEl
z&i*tZu=~74N}28p281R}=o_5&RV&87%}-A3-;geCcyre1<>lqwqp$oyjDf1jS1TpU
z=pK!x0IdNn=Mbq@>+=?h7|9+vYZ)6owOy@6_j6Bf7ZFU%ka0HJUdzkddiaige8&9L
z;KdU)GhrqhZ1hAWT5;cu5|7*XDhUt@28f_hNfBd_*BI2(L6~2N>KoQ9pMxjPV0CkE
zTjc|*;r?1^<vqfaoRm=pB-`+bo@kwe!wKzJ?43pF-lzU1H=q|nq^C~Wth7Cgc6WNb
zTxRNz6jeEZQ5su{IBw(@kJLH8y@G{{RmX`)DPMrZMlRSF>5Sz0)>xO*v*pqvls+wi
zU_1*NDdr+Ie9*!t4+;hz2Jfq{wN;&#QZVDQYjuj2W`-29pT2O_n$oqBPk4Qsm9em=
zSJO%!A7KpagPhjUy%#Tw;6&Cd=ce%7e$#SauF%JEK`85z$pIU^ZMz@d4}jyw7}BC+
ze5kIkW_0&DlfIi<eBaFO7+GIdHIb!vg>Bm2>z@7!P*W*qf!?#Kw{6$M`}1R!xwCzv
z-Or!RN@rT-Ja13U<ul8UKN#xq?Ns%o!)o`PeH~F}E$*;4wU1-dtAK~kh~Tc~k9k$-
z(dHKnKa~`I%g1bshRE$zOrO&J#NhSIVAbBRf;gCfqGU_Thp?_E*+DN3K5L(7pgp1O
zLIOChXkIq)E6&O{Yc!ji+X=26-P`ZEb!q&ala>5MPhelsL<V;g`j9Mj%iMbZzLgRs
zhRG}OXpsxL{B{0)kbo@qCJnGu62{F&uTOl8!7FT1OFDm51h>(_AKi8{WR%@-A+NJ-
zfsQ?6D9<nQ9?aN4z?x<8$sc^F7e9)qv)6D*qhmoENCQv9H!j#~@F0Ul?ZVzZBVLRc
zuZeM%`eKyKvaBI=L<vshpPKn9);!R=Vzkjl@1~QVZ}+{3ox+XZWP}?v6#@T-TFn^J
zp6lN6$xFVv*?IHJZ$gUc%{Q<QZ9=ABPFJLbW~>NI#Tj4#Nid;Lf5iFG;_-m61|wHj
zNso}N%$C{3B)v^jcQl5Y%O)elWorGxO`nA*ACsB2*BHpEeA>GGXsNF4mGW<cAG$T0
zQ*Jni3u#*+QX6Z7!e3_a9BQajImT?P@pIPffn8sgn3T7+fOYbhO4n*NR{J@dnhPjs
zah6c!>sK`D#&kjbj~(as-x#{odYe_XBlj|SEIZ@r38C5kGqv@?d=LCy83puJf%!#J
znd6Nsf=sozqTt?1wP9XPmyhMqux9P9n)pj8r_U%$^FLZ@je9CP8Rxgc$)C|Pkep6{
zUN~U~e`|4|ssC=Lq?Lkr`zqO+as9Lx6fRZwSWd!{LLV?T4sTiSdWvHYtTI#HFwvH}
zFI8-w(!r_9-?E7s2ot4kmE8=a6GI?$cBf?a1&cFl`;WaI)Wq!q>}@`rSG3{bm~fl9
zwOG@#0^@4d0DCC(<Y>RB=<?OYKxuh70D2vq6xZR=Ycru(%ja(~K8?b?g`z_Qjf%;L
zers<}^^Zj2JKHT|VYf#<W#7M8V6$2f93}9UygTPkWtn}*`!60qUpcZYtx)ccPga!8
zExS{3(tF0fs4FuqyYbGItNEXf>s)qnnbCmP^k){PUc>0RW|51qGRXy7+P(MdxTo=%
z)lyv2a@tOAbl;bGJ)ypEDZ$~8ww2;<CwB{mN{@JPl&dCCLU!mW@RYb<=L!feKWR4>
zcx!}b&K-zNnzFa9TwNd-b`AaZX{G3_d_z)RIg{r|+BI}f{-kZKw34<U%HeJ5OTAuQ
z))&3yin8}eWhQeefp;4HerSFVpt|k&_(aLU$_ce6X^FR4p>u^#SKq73%|K=91IAn4
zoJbG+I8Lm6r;+^<z<)sZJo3F2+qZ1pcwt^xA6nGvbHXRNg3P6o%BIlCu)7uudgqp;
zv)PS}&RhK}tThg-W{f&2%(*2lm`toL;+)yV;U}icmd}R!czk_%AfPYQNNXS1LepSp
zljT_2a`3~pXziY>nk!#wsO!#RmP|$+D`jrg!6Z2v=OEc8pfC9Y`ln?zEvd(yv-PXf
zVbv==&mAQUCNRqW4eaA@UVb(bs7sO>{_4HzI)4(ElDQ>)OLFuy$<^&4>((KUZ#&y}
zyHgS_+`AnNcu$(U*?S=+^J#<9GH*|OdPCM}>an@(t%#=LA)h;kL<^H<xdo>nSVmE0
z!S=|VxrCzB>cdIE&=#H}DV{}3r{3`2#9E$>Fu^KD^Qy8ANALm-Ds1UW(ve*Lp##kn
zcx`t{McvD>NcqUp`77lDOF+M!P+zqOR4#ZieZ^=Zavas*R7eBEVX;q!&$SorYps@+
zc=-8IWFhppe1|1a-SY*9U6PF^TElV0@YaNTMtbfdJ|4xHLL+sF9ZAh%vU&Pixu!{|
z+pLulhhuZXQ%Sp$H+7J)#ID#DJ^bbw1xZfTU7SJu(TL}W*L<@b*%fE=&L!^U7qPFL
z6vH14rZiUJ!pzK@qcd+^j*v!6H76*_$=rn1?K&$2R5Ck)_Z~S@5dXYaZ<#_?S5S^O
zzS)W`>t(m1>Fbg>k-R!wCw9GDT)B5@!OVF>fKkU+epjbNcBYnMIuAfLb!3a_0r~;g
zg&hj?@e^~K!?mWXGjS>RbYt@;?w(%}r`>wMLsUM-Exi6_9Q$>IK4(oAXO7`Rwdnf}
zoUO43w69I?$_hAM^FcNuQ(``J0M1`>ka@n4{Vh={<k9R$*BPk-Qp177B`a$8&DyF}
z?;bwYRDpNy#g}*m41h{mmQJyYl}z7S%>wf?gzkjj?9Cc}CF(p&@tV56GwsM!g#zVC
z5v$wSZz0dvOm{YwGCPFkI~eNnY|nv@8x+#b6^=#}nEAQ(@KsmDPeaWmXl8-CiuZ|r
z11<7Z0-U)dLhNLuQt!duuM$U~AqN!IfE+c4?!V~P>n`!8wBv2SB<Tb-i0m(eW3#eY
z_w{yMf8G7fm6NPCcqJbwO@m)~BI$<v1j9~tj;X6bzX??KzOAP}q!3xUbmP?w^43ad
z@{tq#U4e%znbkA0Qz6SX=9c+_Vo{)auM=5`uTDK|+E9GDUyi@+R;xkT@F)8cL61i>
zNHeFy@M@;)>zRmo>8mJussE%+@P$0z7R=^Bqpi6yJ#x>bV`*4Tn9B_$QTYa1SR;ic
zG)URpckO&!)Y*>xSvwv^03-n*50_&36Js3@cbbBXhQXYY4r*z8(7nV&Iew9-3h3`E
zVlDBP%nil1SX>YK0Ce>P5!`HmW(q6n_6*8QT>I=j-g(WK^l(0{QO0)B1YUtdK$*f?
z++vdiMaok23fZRi=^Iw@;0&N?+&McV=2YEXKU-5j#COR(bG2GO16U<_Ztp@%QG7%i
zCdCkWi8uCH^_R0&H(?{G_tm77uLg1H%rz0*c&Z!*78D}>JJ7F*NkGw@kT(2%5pPYp
zeB+yRgy4*5N|S?w%h|BP8-?`+8wA~7^1Rvj@p0j6+lQ@MS8ZS9h%bMRag9#VJIgk`
z&8r9&Ja*O2Pbe(o#$h|qW43tuY_CDV#V@_aRTp^k>!P0S%xaOkcP4c8QGMkjgDp+@
zGtPI(K)KN$u2%{G38pmeVQp!t-tkFI3Bn5yNC3=vJDD}3S}XPpPufc>fNG(|ncc<5
zf^R=)*{B5?#HPg52i-4m4KMEG@m7;2&MN1aMRAU8`WV_#Wlixs77+15F})yKKB?WW
zzV;D2!G*!k?iweFHR{l+Z=t~a#Iz<LeWoX}c9<Nt(VKtTJ-W_faMF865MhGdHo7iy
z707Uy&IE(^w>C_Q-dz9&oJ%H36CNp6;KQb%4&x*50VR74H{WJ?!+-a4&?wxoO;Jxk
zL3^)FnyuOBDQQ8E6>ncua%+O8l6TDr)NAnho81!dw{dY%1;!aWw^s689Ehxl{Eg7p
zPe^BPTJ$@`-gFzH2oCu$!r%>$3&2L$?&T-On^3;(f(2@%=<U16n_pXICEpwUL9czi
zIMA#<YhF@J9nHS~zV{gRB^4mk(8{(OjnCst5svQ$rLG@))5n0kRL(6U6`#y{4RAV3
zUF1oP06JiQ%oi*93%pBicf~uR3YybTFKI@+v>M*_A`;=));+=4o^2>l2f;MG^#I*7
z8DFpkodc+OgC91*HlgmsIPnty4S(zz_#m$;Ks67WfE)&^KEw`Go~qR9jV$O`$JiOR
zZDn`X4%40DOlia?nnHY{Z+U6|?uS9RfqXTv%vIhG25zCa)osjA&Cd&ju_-1OJJ*%E
zYh5shb&S_!lGItnV%6FL<#9Fyk=gwqfyA%I-((Z}0p<guE@_Q_slf{bjFB&U?GBU}
z3OJT4wPDWjPCIQeMDE0sFgzP~8VF<Y7BjI_KIec{II|(v8f4(4i_ueCTH3U_adn|+
zowqTyMdcQ?WpUG#_3Y=49u|AVsV>Yo^YxX8s<pGEKGOy%Y85jT6dzUpgSN_^RIRB3
zooUgPHGFfCcROUgjoy#*Bfx28A?)>~K-j)N3>+Lyko$m!ZvEM~6=-}uG`NiH_M^@r
z^|t&whw^+4EOQqEA&RmWO-=v@0jcc&_Z%A9IlK7i(3y=1d$nq+?$r4Ay+3Nq<H)0+
zuyVTKWn}Za;`+HxqJV&=RD;~^Bc*LGXBPxyF9-A;08p~-qN3f2`*pe<J$&HD!11=|
z(obW-dwgoE9zX5|S@6|dOYH)A-%j_<O<N4LTS;p6_#BYjAGT#ZvnH_EO#)Kaq|pwS
zRxs|Fkd<iXL)qYpp3jj=Uq9NMQppBQ$9o6Op-7eMX3OG>BV0fdrv|keFE=F}YZ~`^
z+#}6!xD>-ZeHFnNI*AN%!7RHt^=2gzRvxb<Uw8Tg|Lb<4(B?R2#C%bIL9<f5M9$6*
zmlcg!v#yWFLzId)R$ZRB?tcAVij`fm<1zkX{<4#S8Fo{CIiXrqvdrl8C-M^>bC#w>
z{lgcJkCo4AJ?RaPpDzlh29(KUSM3s17uj_^JkX<AscrkLfStwuK4G@k7d<JQx#O6$
zfWShr&f#-AnOgi&U73qWJ4bVtTO0jAsQQ%eWLAiymuT^>d`R89nAPCP(5@Np17cN7
zwwHOckrU;WeE!F`O%jfGtzJiWHbkd2%pzfaA7>sarYYN{vOT@J63iSS2H5Zo`vO;c
zdh?K=99`d2c9ME~g4^nr17vGH#|0JEEuyGX?dUgbl~{<&<QK~30rZTh!u5~nD}Chn
zu0yNK>~I>YHZZxrB*IL0A}emTllQ4zj$Yd7iK0L!-v<m$Pp<}A7&0Edy2~*p=i&P{
z$46F>F}{w0w+9Nd&uNEeO^I|&e|m5_p+{Jk^EFj<=-^ObU~>%Ft6_RZHnH_h9t(2I
z?sx2L67v)%WzQS8O0?77{8JV?#vgl<Zt3pAuI7w?=AD;s4#B_hAcU2lf5r3LHE9|D
zeF^KHtaH-RY%ZaNSS&B@VL3&}&naD;)Uz6)t?E`yiasxknzl0>IOHQZV5~WHo&&z+
z;di*$X)gs9%wK0L7Fig2NOI)XvGfX7NUr2p9Y4Op+=}Mfkd5ZV`g?`&kd_kCz*N_q
zM0Bpy$mISVQ#!972<AwRWTZFutXwh!+8){BR1TX1KDlgOpc6cpDU%dZEuQwMJ8w_3
zqdc`n!1lABMn{>_E^2}btSAY8rdD>Tx&GJ?-NXe(7f+BXx89vSFXb7T&G#nFN<cuK
z{cZ^rY}DTWK22T6@0@P<ozaa)`Id0r1!I>w7Q5-uUd2|gm7+iQeuycFC&7XX>qc-B
zzonM=Ema!rtrz5vl5mPHss)vJdZC3S;|!=iT4xQLZf*bF2sR`AVb#W=QdmG>RjSN9
zIQtPl61&@gU9x?Eqdi`-txTq(MWj>MqNc1r&Oppijz4Muffb(<t+|@Hy=x1>;?l(N
zWqjMCzSNqn$|}uX<xR%<rJu>a-P+<HQNrrTsjUVL<!xKl5tsTsuqZs2@pvcYt9}gQ
zCcve8Xu28MS^0Mxo`pu5cmnrQ`~qeTZBfgmqjQq-7q>&s47%REX1gT3*YJbs&zr8b
zwgq&ztqGi6z^&Ey3pD+W+eCpoEW>r&iM)h7UwwO{f4Lvi!UuoovxVsIJ)_RrVI}|b
z>P<gpFZY_%#ZPzbitg}+nQf4p08RLin_j0S`Z+nXtt9{Wz0vtYh5%RH6TuOH|Mspm
zDks(~4fH$TmA69~9~N2<))>YLiVef2&j5@g$$T<}H!(;$N#*r}sizzc(4Zs}_f1(w
zoBzB%4HCw=#;SfTp#{vJ6zb-jYP&y@>v|XS?&GU#4l`l>^klnv{>%{6<n_<3aY19H
z15`>-qZIYH%T0|h#HZF;mCZszs^@m)er)&c=j1DObAU6D$91t*)Z5dIWO``7ad|sR
zYGjOaJJpj7uv=JAZT$O3!PsWIpc-CpERyuZdS#@+E0cFMjGZ;nJa|#Cn^Ra`dZadF
zof2#Q6u+u<NNvv(A1Ba-0q4PP@yC;C_TxKr140VUFPND;laSisE;)0)$&30_rc8M5
zUED(T$4LVhzK)(F3R~<y4Sxv)o!C=k>>zSt`&8iY)UmVuAuOTr)TZ<Bau*hp=LG*Y
zvey27bv_;bZAL4H^fJ?iUHC!;AhC-AvkgIIWkQQ0xC@Jc@GiF(w?&$swY1cv@tpq>
oRKBrE=zN^vR){FKbM<}$G2%t?srrlM+<z)EHL^0y(RV%hUn^(w7ytkO

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/loadCanvaClicked.png b/GUI/src/main/java/cz/fidentis/analyst/resources/loadCanvaClicked.png
deleted file mode 100644
index 8648dfe9fd3a26ef901cbbe408143720d2fefdd2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8635
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
PUSV(Jguh|sbNIgiY2G+e

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/loadModel.png b/GUI/src/main/java/cz/fidentis/analyst/resources/loadModel.png
deleted file mode 100644
index 53d92580986073567672051e38e6134bf31ecc06..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3921
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
DIhP|C

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/loadModelPressed.png b/GUI/src/main/java/cz/fidentis/analyst/resources/loadModelPressed.png
deleted file mode 100644
index 39184cb44fee42d05a9646ff27ae9f76ba913949..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4545
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
R+qpkk=(Oz?#pYf={1YvfShfHF

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/modelView.png b/GUI/src/main/java/cz/fidentis/analyst/resources/modelView.png
deleted file mode 100644
index b221b1d41c09de2d8983df6ec7869e9f2cc8b444..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11398
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

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/modelViewMoved.png b/GUI/src/main/java/cz/fidentis/analyst/resources/modelViewMoved.png
deleted file mode 100644
index a757a2e8e8cdf13eb49632995b882207653151a6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11495
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

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/symetryCount.png b/GUI/src/main/java/cz/fidentis/analyst/resources/symetryCount.png
deleted file mode 100644
index 23258b99ccf99d67df91f23d777c7ce8c76a24e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4912
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

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/symetryCountClicked.png b/GUI/src/main/java/cz/fidentis/analyst/resources/symetryCountClicked.png
deleted file mode 100644
index 2b4a69b0ce341c75a889905b96e078b121a4d45a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4845
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
F{{jIh{7(P?

diff --git a/GUI/src/main/java/cz/fidentis/analyst/resources/wireframe.png b/GUI/src/main/java/cz/fidentis/analyst/resources/wireframe.png
deleted file mode 100644
index 69247e62b2f9d898888cd7e2c3a6467b99836c7c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5000
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

diff --git a/GUI/src/main/java/cz/fidentis/analyst/symmetry/AproxSymmetryPlane.java b/GUI/src/main/java/cz/fidentis/analyst/symmetry/AproxSymmetryPlane.java
new file mode 100644
index 00000000..6ddae7b0
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/symmetry/AproxSymmetryPlane.java
@@ -0,0 +1,42 @@
+package cz.fidentis.analyst.symmetry;
+
+/**
+ *
+ * @author Natália Bebjaková
+ * 
+ * Respresents plane with added atribute - votes, that play role
+ * in decision about symmetry estimate of the 3D model
+ */
+public class AproxSymmetryPlane extends Plane implements Comparable<AproxSymmetryPlane> {
+    public Integer votes;
+
+    /**
+     * returns number of votes that were given to plane while computing the symmetry 
+     * 
+     * @return Number of votes 
+     */
+    public Integer getVotes() {
+        return votes;
+    }
+
+    /**
+     * 
+     * @param plane Original plane without votes 
+     * @param votes number of votes given to the plane
+     */
+    public AproxSymmetryPlane(Plane plane, int votes) {
+        super(plane.a, plane.b, plane.c, plane.d);
+        this.votes = votes;
+    }
+    
+    /**
+     * Enables to compare two approximate planes due to number of votes 
+     * 
+     * @param other plane to be compared 
+     * @return number that decides which plane has more votes 
+     */
+    @Override
+    public int compareTo(AproxSymmetryPlane other) {
+        return this.votes.compareTo(other.votes);
+    }
+}
diff --git a/GUI/src/main/java/cz/fidentis/analyst/symmetry/BoundingBox.java b/GUI/src/main/java/cz/fidentis/analyst/symmetry/BoundingBox.java
new file mode 100644
index 00000000..0a1f577d
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/symmetry/BoundingBox.java
@@ -0,0 +1,147 @@
+package cz.fidentis.analyst.symmetry;
+
+import cz.fidentis.analyst.mesh.core.MeshPoint;
+import java.util.List;
+import javax.vecmath.Vector3d;
+
+/**
+ * @author Natália Bebjaková
+ * 
+ * Represent min-max box.
+ * It is automatically maintained by given point array.
+ * 
+ */
+
+public class BoundingBox {
+    private boolean isMinMaxValid;
+    private MeshPoint maxPoint;
+    private MeshPoint minPoint;
+    private MeshPoint midPoint;
+    private double maxDiag;
+    private final List<MeshPoint> points;
+    
+    /**
+     * 
+     * @return max point of the bounding box
+     */
+    public MeshPoint getMaxPoint() {
+        return maxPoint;
+    }
+    
+    /**
+     * 
+     * @param point new max point of the bounding box
+     */
+    public void setMaxPoint(MeshPoint point) {
+        this.maxPoint = point;
+    }
+    
+    /**
+     * 
+     * @return middle point of the bounding box
+     */
+    public MeshPoint getMidPoint() {
+        return midPoint;
+    }
+    
+    /**
+     * 
+     * @param point new middle point of the bounding box
+     */
+    public void setMidPoint(MeshPoint point) {
+        this.midPoint = point;
+    }
+    
+    /**
+     * 
+     * @return min point of the bounding box
+     */
+    public MeshPoint getMinPoint() {
+        return minPoint;
+    }
+    
+    /**
+     * 
+     * @param point new min point of the bounding box
+     */
+    public void setMinPoint(MeshPoint point) {
+        this.minPoint = point;
+    }
+    
+    /** 
+     * Creates bounding box that is automatically maintained with respect to given array.
+     * @param points array of points
+     */
+    public BoundingBox(List<MeshPoint> points) {
+        this.points = points;
+        this.ValidateMinMax();
+        this.ValidateMidDiag();
+    }        
+
+    /**
+     * @return point array that is managed by curent bounding box.
+    */
+    public List<MeshPoint> getPoints() {
+        return points;
+    }
+    
+    /**
+     * Recomputes the BoundingBox from all points
+    */
+    private void ValidateMinMax() {
+        minPoint = new MeshPoint(new Vector3d(Double.MAX_VALUE,Double.MAX_VALUE,Double.MAX_VALUE), null, null);
+        maxPoint = new MeshPoint(new Vector3d(Double.MIN_VALUE,Double.MIN_VALUE,Double.MIN_VALUE), null, null);
+ 
+        for (int i = 0; i < points.size(); i++) {
+            MeshPoint point = points.get(i);
+            
+            minPoint.getPosition().x = Math.min(minPoint.getPosition().x, point.getPosition().x);
+            minPoint.getPosition().y = Math.min(minPoint.getPosition().y, point.getPosition().y);
+            minPoint.getPosition().z = Math.min(minPoint.getPosition().z, point.getPosition().z);
+            
+            maxPoint.getPosition().x = Math.max(maxPoint.getPosition().x, point.getPosition().x);
+            maxPoint.getPosition().y = Math.max(maxPoint.getPosition().y, point.getPosition().y);
+            maxPoint.getPosition().z = Math.max(maxPoint.getPosition().z, point.getPosition().z);                    
+	}
+	isMinMaxValid = true;
+	this.ValidateMidDiag();
+    }
+
+    /**
+     * Recompute mid-point and max diagonal length.
+     */   
+    private void ValidateMidDiag() {
+        midPoint = (minPoint.addPosition(maxPoint)).multiplyPosition(0.5);
+        MeshPoint diag = maxPoint.subtractPosition(minPoint);
+        this.maxDiag = diag.abs();
+    }
+
+    /**
+     * Return volume diagonal of the bounding box.
+     * @return maximal diagonal of bounding box
+     */
+    public double getMaxDiag() {
+        if (!isMinMaxValid) {
+            this.ValidateMinMax();
+        }
+        return maxDiag;
+    }
+    
+    /**
+     * Returns description of BoundignBox.
+     * @return String representation of the bounding box
+     */
+    @Override
+    public String toString() {
+        String str = "BoundingBox: ";
+        if (this.minPoint == null || this.maxPoint == null || this.midPoint == null) {
+            return str += "undefined (there are no points)";
+        }
+        str += "\n";
+        str += "\t" + "- min point : " + this.minPoint + "\n";
+        str += "\t" + "- max point : " + this.maxPoint + "\n";
+        str += "\t" + "- mid point : " + this.midPoint + "\n";
+        str += "\t" + "- max diag  : " + this.maxDiag + "\n";
+        return str;
+    }      
+}  
\ No newline at end of file
diff --git a/GUI/src/main/java/cz/fidentis/analyst/symmetry/Config.java b/GUI/src/main/java/cz/fidentis/analyst/symmetry/Config.java
new file mode 100644
index 00000000..63ce184e
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/symmetry/Config.java
@@ -0,0 +1,157 @@
+package cz.fidentis.analyst.symmetry;
+
+/**
+ *
+ * @author Natalia Bebjakova
+ * 
+ * Representation of configuration for symmetry estimate.
+ * Default numbers are given due to the best results on tested data.
+ * On many different 3D models, it exists other values of config that will have 
+ * better impact on results in estimate of symmetry. 
+ */
+public class Config {
+    private static final double DEFAULT_MIN_CURV_RATIO = 0.8;
+    private static final double DEFAULT_MIN_ANGLE_COS = 0.985;
+    private static final double DEFAULT_MIN_NORM_ANGLE_COS = 0.985;
+    private static final double DEFAULT_MAX_REL_DISTANCE = 1.0 / 100.0;
+    private static final int DEFAULT_SIGNIFICANT_POINT_COUNT = 200;
+    private static final boolean DEFAULT_AVERAGING = true;
+    
+    private double minCurvRatio;
+    private double minAngleCos;
+    private double minNormAngleCos;
+    private double maxRelDistance;
+    private int significantPointCount;
+    private boolean averaging;
+    
+    /**
+     * Parameter which denotes how similar the Gaussian curvatures in the two vertices
+     * must be for this criteria to be satisfied.
+     * The higher the value is the more similar they must be.
+     * 
+     * @return minimal similarity of curvatures to satisfy the criteria  
+     */
+    public double getMinCurvRatio() {
+        return minCurvRatio;
+    }
+
+    /**
+     * 
+     * @param minCurvRatio new minimal similarity of curvatures to satisfy the criteria  
+     */
+    public void setMinCurvRatio(double minCurvRatio) {
+        this.minCurvRatio = minCurvRatio;
+    }
+
+    /**
+     * MinAngleCos ∈ (0,1)
+     * It is the angle between the vector (xk − xl) and the normal vector nij of the plane ρij
+     * (which is the vector (xi −xj))
+     * Returns parameter which denotes how large the angle αij can be for this criteria to be satisfied.
+     * 
+     * @return minimal angle satisfy criteria 
+     */
+    public double getMinAngleCos() {
+        return minAngleCos;
+    }
+
+    /**
+     * 
+     * @param minAngleCos new minimal angle to satisfy the criteria 
+     */
+    public void setMinAngleCos(double minAngleCos) {
+        this.minAngleCos = minAngleCos;
+    }
+
+    /**
+     * MinNormAngleCos ∈ (0,1)
+     * It is angle between vectors (xi − xj) and (ni − nj), where xi, xj are vertices and ni, nj its normals
+     * Returns parameter which denotes how large the angle αij can be for this criteria to be satisfied.
+     * 
+     * @return minimal angle to satisfy criteria 
+     */
+    public double getMinNormAngleCos() {
+        return minNormAngleCos;
+    }
+
+    /**
+     * 
+     * @param minNormAngleCos new minimal angle to satisfy the criteria 
+     */
+    public void setMinNormAngleCos(double minNormAngleCos) {
+        this.minNormAngleCos = minNormAngleCos;
+    }
+
+    /**
+     * Parameter which denotes how far (relatively to the length of the bounding box diagonal)
+     * the middle point of the two vertices can be from the plane in order to satisfy this criteria.
+     * 
+     * @return relative distance
+     */
+    public double getMaxRelDistance() {
+        return maxRelDistance;
+    }
+
+    /**
+     * 
+     * @param maxRelDistance new relative distance 
+     */
+    public void setMaxRelDistance(double maxRelDistance) {
+        this.maxRelDistance = maxRelDistance;
+    }
+
+    /**
+     * Returns number of vertices with the highest Gaussian curvature.
+     * It is optional parameter.
+     * 
+     * @return number of significant points for computing the symmetry 
+     */
+    public int getSignificantPointCount() {
+        return significantPointCount;
+    }
+
+    /**
+     * 
+     * @param significantPointCount new number of significant points for computing the symmetry 
+     */
+    public void setSignificantPointCount(int significantPointCount) {
+        this.significantPointCount = significantPointCount;
+    }
+
+    /**
+     * If there are more planes with the same highest number of votes while computing symmetry,
+     * we can average them all together. 
+     * Returns parameter that decides whether to average them or not.
+     * 
+     * @return true if planes will be averaged 
+     */
+    public boolean isAveraging() {
+        return averaging;
+    }
+
+    /**
+     * 
+     * @param averaging new averaging flag  
+     */
+    public void setAveraging(boolean averaging) {
+        this.averaging = averaging;
+    }
+
+    /**
+     * Gives default values of configuration.
+     * 
+     * @return configuration with default values
+     */
+    public static Config getDefault() {
+        Config conf = new Config();
+
+        conf.minCurvRatio = DEFAULT_MIN_CURV_RATIO;
+        conf.minAngleCos = DEFAULT_MIN_ANGLE_COS;
+        conf.minNormAngleCos = DEFAULT_MIN_NORM_ANGLE_COS;
+        conf.maxRelDistance = DEFAULT_MAX_REL_DISTANCE;
+        conf.significantPointCount = DEFAULT_SIGNIFICANT_POINT_COUNT;
+        conf.averaging = DEFAULT_AVERAGING;
+
+        return conf;
+    }
+}
\ No newline at end of file
diff --git a/GUI/src/main/java/cz/fidentis/analyst/symmetry/Plane.java b/GUI/src/main/java/cz/fidentis/analyst/symmetry/Plane.java
new file mode 100644
index 00000000..b4a30323
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/symmetry/Plane.java
@@ -0,0 +1,88 @@
+package cz.fidentis.analyst.symmetry;
+
+import cz.fidentis.analyst.mesh.core.MeshFacet;
+import cz.fidentis.analyst.mesh.core.MeshPoint;
+
+/**
+ *
+ * @author Natália Bebjaková
+ * 
+ * Representation of the plane 
+ */
+public class Plane {
+    public double a;
+    public double b;
+    public double c;
+    public double d;
+    private static MeshFacet facet;
+
+    /**
+     * Creates new plane 
+     * 
+     * @param a a coordinate 
+     * @param b b coordinate
+     * @param c c coordinate
+     * @param d d coordinate
+     */
+    public Plane(double a, double b, double c, double d) {
+        this.a = a;
+        this.b = b;
+        this.c = c;
+        this.d = d;
+    }
+    
+    /**
+     * Normalize the plane
+     */
+    public void normalize() {
+        double normalLength = Math.sqrt(a * a + b * b + c * c);
+        
+        a /= normalLength;
+        b /= normalLength;
+        c /= normalLength;
+        d /= normalLength;
+    }
+    
+    /**
+     * Returns plane that is represented by mesh which can be merged with model  
+     * 
+     * @param centroid middle point of the plane 
+     * @param a a coordinate
+     * @param b b coordinate
+     * @param scale distance of points given by bounding box
+     * @return plane represented as mesh 
+     */
+    public static SymmetryCounter createPlaneMesh(MeshPoint centroid, MeshPoint a, MeshPoint b, double scale) {
+        facet = new MeshFacet();
+        SymmetryCounter planeMesh = new SymmetryCounter(facet);
+        
+        MeshPoint[] points = new MeshPoint[4];
+        
+        points[0] = centroid.subtractPosition(a.multiplyPosition(scale)).subtractPosition(b.multiplyPosition(scale));
+        points[1] = centroid.subtractPosition(a.multiplyPosition(scale)).addPosition(b.multiplyPosition(scale));
+        points[2] = centroid.addPosition(a.multiplyPosition(scale)).addPosition(b.multiplyPosition(scale));
+        points[3] = centroid.addPosition(a.multiplyPosition(scale)).subtractPosition(b.multiplyPosition(scale));
+        
+        for (MeshPoint point : points) {
+            facet.addVertex(point);
+        }
+
+        Triangle[] triangles = new Triangle[4];
+        
+        triangles[0] = new Triangle(0, 1, 2);
+        triangles[1] = new Triangle(0, 2, 3);
+        triangles[2] = new Triangle(0, 2, 1);
+        triangles[3] = new Triangle(0, 3, 2);
+        planeMesh.setTriangles(triangles);
+        
+        MeshPoint[] normals = planeMesh.CalculateNormals();
+        
+        facet.getVertices().clear();
+        
+        for (int i = 0; i < points.length; i++) {
+            facet.addVertex(new MeshPoint(points[i].getPosition(),normals[i].getPosition(),null));
+        }
+        return planeMesh;
+    }
+ 
+}
diff --git a/GUI/src/main/java/cz/fidentis/analyst/symmetry/SymmetryCounter.java b/GUI/src/main/java/cz/fidentis/analyst/symmetry/SymmetryCounter.java
new file mode 100644
index 00000000..19fbd548
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/symmetry/SymmetryCounter.java
@@ -0,0 +1,812 @@
+package cz.fidentis.analyst.symmetry;
+
+import static cz.fidentis.analyst.gui.UserInterface.frameMain;
+import cz.fidentis.analyst.mesh.core.CornerTableRow;
+import cz.fidentis.analyst.mesh.core.MeshFacet;
+import cz.fidentis.analyst.mesh.core.MeshPoint;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.swing.ImageIcon;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.ProgressMonitor;
+import javax.swing.UIManager;
+import javax.vecmath.Vector3d;
+
+/**
+ *
+ * @author Natália Bebjaková
+ * 
+ * Main class for computing approximate plane of symmetry of the 3D model. 
+ * Default values of the configuration are given due to the best results on tested objects.
+ * On many different 3D models, it exists other values of config that will have better impact on result. 
+ * 
+ */
+public class SymmetryCounter {
+    /**
+     * Facet of the model on which symmetry is computed 
+     */
+    private final MeshFacet facet;   
+    /**
+     * Representation for areas of Voronoi region of triangles
+     */
+    private TriangleVertexAreas[] areas;
+    /**
+     * Represent min-max box. It is automatically maintained by given point array.
+     */
+    private BoundingBox boundingBox;
+    /**
+     * Helping array of triangles computed from corner table 
+     */
+    protected Triangle[] triangles;
+    /**
+     * panel for configuration of symmetry counting 
+     */
+    private JPanel panel;
+
+    /**
+     * 
+     * @return panel for configuration of symmetry counting 
+     */
+    public JPanel getPanel() {
+        return panel;
+    }
+
+    /**
+     * 
+     * @param panel new panel for configuration of symmetry counting 
+     */
+    public void setPanel(JPanel panel) {
+        this.panel = panel;
+    }
+    
+
+    /**
+     * 
+     * @return Facet of the model on which symmetry is computed 
+     */
+    public MeshFacet getFacet() {
+        return facet;
+    }
+
+    /**
+     * Creates new class for computing symmetry
+     * 
+     * @param f facet on which symmetry will be computed 
+     */
+    public SymmetryCounter(MeshFacet f) {
+        this.facet = f;
+    }
+    
+    /**
+     * If bounding box is not created yet, it creates new one. 
+     * 
+     * @return Represent min-max box of the boundries of the model. 
+     */
+    public BoundingBox getBoundingBox() {
+        if (boundingBox == null) {
+            boundingBox = new BoundingBox(facet.getVertices());               
+        }
+        return boundingBox; 
+    }
+
+    /**
+     * 
+     * @param boundingBox new min-max box of the boundries of the model. 
+     */
+    public void setBoundingBox(BoundingBox boundingBox) {
+        this.boundingBox = boundingBox;
+    }
+    
+    /**
+     * 
+     * @return array of triangles 
+     */
+    public Triangle[] getTriangles() {
+        return triangles;
+    }
+    
+    /**
+     * 
+     * @param triangles new array of triangles 
+     */
+    public void setTriangles(Triangle[] triangles) {
+        this.triangles = triangles;
+    }
+    
+    /**
+     * Representation of areas of Voronoi region of triangles
+     * used for computing Gaussian curvature 
+     */
+    private class TriangleVertexAreas {
+            public double v1Area;
+            public double v2Area;
+            public double v3Area;
+    }
+   
+    /**
+     * Initialize values necessary for computing
+     */
+    public void init() {
+        initTriangles();
+        initArrayOfTriangleVertexAreas();
+        boundingBox = new BoundingBox(facet.getVertices());
+    }
+    
+    /**
+     * Computes triangles of facet from corner table
+     */
+    public void initTriangles() {
+        triangles = new Triangle[facet.getCornerTable().getSize() / 3];
+        for (int i = 0; i < facet.getCornerTable().getSize(); i += 3) {
+            Triangle t = new Triangle(facet.getCornerTable().getRow(i).getVertexIndex(),
+                    facet.getCornerTable().getRow(i + 1).getVertexIndex(),
+                    facet.getCornerTable().getRow(i + 2).getVertexIndex());
+            triangles[(i / 3)] = t;
+        }     
+    }
+    
+    /**
+     * Calculates new normals of the points
+     * 
+     * @return new normals represented as mesh points so that math operations can be done 
+     */
+    public MeshPoint[] CalculateNormals() {
+        MeshPoint[] newNormals = new MeshPoint[facet.getNumberOfVertices()];
+        for (int i = 0; i < facet.getNumberOfVertices(); i++)
+            newNormals[i] = new MeshPoint(new Vector3d(0, 0, 0), null, null);
+        for (Triangle t : triangles) {
+            MeshPoint triangleNormal = (facet.getVertices().get(t.vertex3).subtractPosition
+        (facet.getVertices().get(t.vertex1))).crossProduct(facet.getVertices().get(t.vertex2).subtractPosition(facet.getVertices().get(t.vertex1)));
+            newNormals[t.vertex1] = newNormals[t.vertex1].addPosition(new MeshPoint(triangleNormal.getPosition(), null, null));
+            newNormals[t.vertex2] = newNormals[t.vertex2].addPosition(new MeshPoint(triangleNormal.getPosition(), null, null));
+            newNormals[t.vertex3] = newNormals[t.vertex3].addPosition(new MeshPoint(triangleNormal.getPosition(), null, null));
+        }
+        for (int i = 0; i < newNormals.length; i++){ 
+            if (newNormals[i].getPosition().x != 0 && newNormals[i].getPosition().y != 0 && newNormals[i].getPosition().z != 0) {
+                newNormals[i] = newNormals[i].dividePosition(newNormals[i].abs());
+            }   
+        }
+        return newNormals;
+    }
+    
+    /**
+     * 
+     * @param pointIndex index of point for which we are searching traingles in its neighborhood
+     * @return triangle neighbours of given index of vertex
+     */
+    public List<Integer> getNeighbours(int pointIndex) {
+        return facet.getCornerTable().getTriangleIndexesByVertexIndex(pointIndex);
+    }
+    
+    /**
+     * Return area of Voronoi region of triangle
+     * 
+     * @param t triangle of which area is computed
+     * @return area of Voronoi region
+     */
+    private TriangleVertexAreas computeTriangleVertexAreas(Triangle t) {
+        MeshPoint circumcenter;
+                
+        MeshPoint tVertex1 = facet.getVertices().get(t.vertex1);
+        MeshPoint tVertex2 = facet.getVertices().get(t.vertex2);
+        MeshPoint tVertex3 = facet.getVertices().get(t.vertex3);
+        
+        double a = (tVertex2.subtractPosition(tVertex3)).abs();
+        double b = (tVertex3.subtractPosition(tVertex1)).abs();
+        double c = (tVertex2.subtractPosition(tVertex1)).abs();
+        
+        double d1 = a * a * (b * b + c * c - a * a);
+        double d2 = b * b * (c * c + a * a - b * b);
+        double d3 = c * c * (a * a + b * b - c * c);
+        double dSum = d1 + d2 + d3;
+        
+        d1 /= dSum;
+        d2 /= dSum;
+        d3 /= dSum;
+
+        MeshPoint v1Half = (tVertex2.addPosition(tVertex3)).dividePosition(2);
+        MeshPoint v2Half = (tVertex1.addPosition(tVertex3)).dividePosition(2);
+        MeshPoint v3Half = (tVertex2.addPosition(tVertex1)).dividePosition(2);
+
+        
+        TriangleVertexAreas area = new TriangleVertexAreas();
+
+        if (d1 < 0) {           
+            area.v3Area = ((v2Half.subtractPosition(tVertex3)).crossProduct(v1Half.subtractPosition(tVertex3))).abs() / 2;
+            area.v2Area = ((v3Half.subtractPosition(tVertex2)).crossProduct(v1Half.subtractPosition(tVertex2))).abs() / 2;
+            area.v1Area = (((v1Half.subtractPosition(tVertex1)).crossProduct(v3Half.subtractPosition(tVertex1))).abs() / 2) + 
+                    (((v1Half.subtractPosition(tVertex1)).crossProduct(v2Half.subtractPosition(tVertex1))).abs() / 2);
+            return area;
+        }
+        if (d2 < 0) {
+            area.v3Area = ((v3Half.subtractPosition(tVertex1)).crossProduct(v2Half.subtractPosition(tVertex1))).abs() / 2;
+            area.v2Area = ((v1Half.subtractPosition(tVertex3)).crossProduct(v2Half.subtractPosition(tVertex3))).abs() / 2;
+            area.v1Area = (((v2Half.subtractPosition(tVertex2)).crossProduct(v1Half.subtractPosition(tVertex2))).abs() / 2) + 
+                    (((v2Half.subtractPosition(tVertex2)).crossProduct(v3Half.subtractPosition(tVertex2))).abs() / 2);
+            return area;
+        }
+        if (d3 < 0) {
+            area.v2Area = ((v1Half.subtractPosition(tVertex2)).crossProduct(v3Half.subtractPosition(tVertex2))).abs() / 2;
+            area.v1Area = ((v2Half.subtractPosition(tVertex1)).crossProduct(v3Half.subtractPosition(tVertex1))).abs() / 2;
+            area.v3Area = (((v3Half.subtractPosition(tVertex3)).crossProduct(v2Half.subtractPosition(tVertex3))).abs() / 2) + 
+                    (((v3Half.subtractPosition(tVertex3)).crossProduct(v1Half.subtractPosition(tVertex3))).abs() / 2);
+            return area;
+        }
+        
+        circumcenter = tVertex1.multiplyPosition(d1).addPosition(tVertex2.multiplyPosition(d2).addPosition(tVertex3.multiplyPosition(d3)));
+        
+        area.v1Area = (((v2Half.subtractPosition(tVertex1)).crossProduct(circumcenter.subtractPosition(tVertex1))).abs() / 2) + 
+                (((v3Half.subtractPosition(tVertex1)).crossProduct(circumcenter.subtractPosition(tVertex1))).abs() / 2);
+        
+        area.v2Area = (((v3Half.subtractPosition(tVertex2)).crossProduct(circumcenter.subtractPosition(tVertex2))).abs() / 2) +
+                (((v1Half.subtractPosition(tVertex2)).crossProduct(circumcenter.subtractPosition(tVertex2))).abs() / 2);
+        
+        area.v3Area = (((v1Half.subtractPosition(tVertex3)).crossProduct(circumcenter.subtractPosition(tVertex3))).abs() / 2) +
+                (((v2Half.subtractPosition(tVertex3)).crossProduct(circumcenter.subtractPosition(tVertex3))).abs() / 2);
+        return area;
+    }
+    
+    /**
+     * Computes area of Voronoi region for all triangles
+     */
+    private void initArrayOfTriangleVertexAreas() {
+        areas = new TriangleVertexAreas[triangles.length];
+        for (int i = 0; i < areas.length; i++) {
+            areas[i] = computeTriangleVertexAreas(triangles[i]);
+        }
+    }
+ 
+    /**
+     * Calculates angle of the triangle according to centerIndex
+     * 
+     * @param centerIndex centerIndex
+     * @param t triangle
+     * @return angle
+     */
+    private double calculateTriangleAlfa(int centerIndex, Triangle t) {        
+        MeshPoint tVertex1 = facet.getVertices().get(t.vertex1);
+        MeshPoint tVertex2 = facet.getVertices().get(t.vertex2);
+        MeshPoint tVertex3 = facet.getVertices().get(t.vertex3);
+        
+        double alfaCos = 0;
+        
+        if (t.vertex1 == centerIndex) {
+            MeshPoint e1 = tVertex1.subtractPosition(tVertex3);
+            e1 = e1.dividePosition(e1.abs());
+            
+            MeshPoint e2 = tVertex2.subtractPosition(tVertex3);
+            e2 = e2.dividePosition(e2.abs());
+            
+            alfaCos = e1.dotProduct(e2);
+        }
+        else if (t.vertex2 == centerIndex) {
+            
+            MeshPoint e1 = tVertex2.subtractPosition(tVertex1);
+            e1 = e1.dividePosition(e1.abs());
+            
+            MeshPoint e2 = tVertex3.subtractPosition(tVertex1);
+            e2 = e2.dividePosition(e2.abs());
+            
+            alfaCos = e1.dotProduct(e2);
+            }
+        else if (t.vertex3 == centerIndex){
+            MeshPoint e1 = tVertex3.subtractPosition(tVertex2);
+            e1 = e1.dividePosition(e1.abs());
+                
+            MeshPoint e2 = tVertex1.subtractPosition(tVertex2);
+            e2 = e2.dividePosition(e2.abs());
+            
+            alfaCos = e1.dotProduct(e2);
+            }
+        double alfa = Math.acos(alfaCos);
+        return 1 / Math.tan(alfa);
+    }
+
+    /**
+     * Calculates angle of the triangle according to centerIndex
+     * 
+     * @param centerIndex centerIndex
+     * @param t triangle
+     * @return angle
+     */
+    private double calculateTriangleBeta(int centerIndex, Triangle t) {
+        MeshPoint tVertex1 = facet.getVertices().get(t.vertex1);
+        MeshPoint tVertex2 = facet.getVertices().get(t.vertex2);
+        MeshPoint tVertex3 = facet.getVertices().get(t.vertex3);
+        
+        double betaCos = 0;
+            
+        if (t.vertex1 == centerIndex) {
+            MeshPoint e1 = tVertex1.subtractPosition(tVertex2);
+            e1 = e1.dividePosition(e1.abs());
+            
+            MeshPoint e2 = tVertex3.subtractPosition(tVertex2);
+            e2 = e2.dividePosition(e2.abs());
+            
+            betaCos = e1.dotProduct(e2);
+        }
+        else if (t.vertex2 == centerIndex) {
+            
+            MeshPoint e1 = tVertex2.subtractPosition(tVertex3);
+            e1 = e1.dividePosition(e1.abs());
+            
+            MeshPoint e2 = tVertex1.subtractPosition(tVertex3);
+            e2 = e2.dividePosition(e2.abs());
+            
+            betaCos = e1.dotProduct(e2);
+            }
+        else if (t.vertex3 == centerIndex){
+            MeshPoint e1 = tVertex3.subtractPosition(tVertex1);
+            e1 = e1.dividePosition(e1.abs());
+                
+            MeshPoint e2 = tVertex2.subtractPosition(tVertex1);
+            e2 = e2.dividePosition(e2.abs());
+            
+            betaCos = e1.dotProduct(e2);
+            }
+            double beta = Math.acos(betaCos);
+            return 1 / Math.tan(beta);
+        }
+        
+    /**
+     * Calculates Laplacian 
+     * 
+     * @param centerIndex centerIndex
+     * @return laplacian 
+     */
+    private MeshPoint calculateLaplacian(int centerIndex) {
+        List<Integer> trianglesNeighbours = getNeighbours(centerIndex);
+
+        if (trianglesNeighbours.isEmpty()) {
+            return new MeshPoint(new Vector3d(), new Vector3d(), new Vector3d());
+        }
+        double areaSum = 0;
+        MeshPoint pointSum = new MeshPoint((new Vector3d(0.0, 0.0, 0.0)), null, null);
+        for (int i = 0; i < trianglesNeighbours.size(); i++) {
+            Triangle t = triangles[trianglesNeighbours.get(i)];
+            Triangle tNext = triangles[trianglesNeighbours.get((i + 1) % trianglesNeighbours.size())];
+            double area = 0;
+            
+            MeshPoint tVertex1 = facet.getVertices().get(t.vertex1);
+            MeshPoint tVertex2 = facet.getVertices().get(t.vertex2);
+            MeshPoint tVertex3 = facet.getVertices().get(t.vertex3);
+            MeshPoint centerPoint = facet.getVertices().get(centerIndex);
+                    
+            if (t.vertex1 == centerIndex) {
+                area = areas[trianglesNeighbours.get(i)].v1Area;
+                pointSum = pointSum.addPosition((tVertex2.subtractPosition(centerPoint)).multiplyPosition((calculateTriangleAlfa(centerIndex, t)
+                        + calculateTriangleBeta(centerIndex, tNext)) / 2));
+                       
+            }
+            else if (t.vertex2 == centerIndex) {
+                area = areas[trianglesNeighbours.get(i)].v2Area;
+                pointSum = pointSum.addPosition((tVertex3.subtractPosition(centerPoint)).multiplyPosition((calculateTriangleAlfa(centerIndex, t)
+                        + calculateTriangleBeta(centerIndex, tNext)) / 2));
+            }
+            else if (t.vertex3 == centerIndex) {
+                area = areas[trianglesNeighbours.get(i)].v3Area;
+                pointSum = pointSum.addPosition((tVertex1.subtractPosition(centerPoint)).multiplyPosition((calculateTriangleAlfa(centerIndex, t)
+                        + calculateTriangleBeta(centerIndex, tNext)) / 2));
+            }
+            areaSum += area;
+        }
+        return pointSum.multiplyPosition(1 / areaSum);
+    }
+    
+    /**
+     * Gaussian curvature in a vertex of a triangle mesh.
+     * It can only be estimated beacuse triangle mesh is not a continuous
+     * but discrete representation of surface.
+     * 
+     * @param centerIndex index of vertex in which gaussian curvature is computed
+     * @return Gaussian curvature in given vertex
+     */
+    private double getGaussianCurvature(int centerIndex) {
+        
+        List<Integer> triangleNeighbours = this.getNeighbours(centerIndex);
+        
+        if (triangleNeighbours.isEmpty()) {
+            return Double.NaN;
+        }
+        
+        double sum = 2 * Math.PI;
+        double areaSum = 0;
+
+        for (int i = 0; i < triangleNeighbours.size(); i++) {
+            MeshPoint v1 = new MeshPoint(new Vector3d(), null, null);
+            MeshPoint v2 = new MeshPoint(new Vector3d(), null, null);
+            Triangle t = triangles[triangleNeighbours.get(i)];
+            
+            MeshPoint tVertex1 = facet.getVertices().get(t.vertex1);
+            MeshPoint tVertex2 = facet.getVertices().get(t.vertex2);
+            MeshPoint tVertex3 = facet.getVertices().get(t.vertex3);
+            
+            double area = 0;
+            if (t.vertex1 == centerIndex) {
+                v1 = tVertex2.subtractPosition(tVertex1);
+                v2 = tVertex3.subtractPosition(tVertex1);
+
+                area = areas[triangleNeighbours.get(i)].v1Area;
+            }
+            else if (t.vertex2 == centerIndex) {
+                v1 = tVertex1.subtractPosition(tVertex2);
+                v2 = tVertex3.subtractPosition(tVertex2);
+                
+                area = areas[triangleNeighbours.get(i)].v2Area;
+            }
+            else if (t.vertex3 == centerIndex) {
+                v1 = tVertex2.subtractPosition(tVertex3);
+                v2 = tVertex1.subtractPosition(tVertex3);
+
+                area = areas[triangleNeighbours.get(i)].v3Area;
+            }
+            
+            areaSum += area;
+            v1 = v1.dividePosition(v1.abs());
+            v2 = v2.dividePosition(v2.abs());
+
+            sum -= Math.acos(v1.dotProduct(v2));
+        } 
+        return sum * (1.0 / areaSum);
+       
+    }
+
+    /**
+     * 
+     * @param centerIndex center index
+     * @return mean curvature
+     */
+    private double getMeanCurvature(int centerIndex) {
+        return calculateLaplacian(centerIndex).abs();
+    }
+    
+    /**
+     * 
+     * @param centerIndex center index
+     * @return max curvature
+     */
+    private double getMaxCurvature(int centerIndex) {
+        double gaussianCurvature = getGaussianCurvature(centerIndex);
+        if (Double.isNaN(gaussianCurvature)) {
+            return Double.NaN;
+        }
+        double meanCurvature = getMeanCurvature(centerIndex);
+        double meanCurvatureSqr = meanCurvature * meanCurvature;
+        if (meanCurvatureSqr <= gaussianCurvature) { 
+            return meanCurvature;
+        }
+        return meanCurvature + Math.sqrt(meanCurvatureSqr - gaussianCurvature);
+    }
+    
+    /**
+     * Computes votes for given plane 
+     * 
+     * @param plane Plane for which votes are computed
+     * @param curvatures significant curvatures chosen for computing
+     * @param points significant point chosen for computing
+     * @param minCurvRatio optional parameter from configuration
+     * @param minAngleCos optional parameter from configuration
+     * @param minNormAngleCos optional parameter from configuration
+     * @param maxDist optional parameter from configuration
+     * @return total votes given to plane while computing the symmetry
+     */
+    private int GetVotes(Plane plane,
+            ArrayList<Double> curvatures,
+            ArrayList<Integer> points,
+            double minCurvRatio,
+            double minAngleCos,
+            double minNormAngleCos,
+            double maxDist) {
+        
+        plane.normalize();
+        
+        MeshPoint normal = new MeshPoint((new Vector3d(plane.a, plane.b, plane.c)),null, null);
+        double d = plane.d;
+        double maxCurvRatio = 1.0 / minCurvRatio;
+        int votes = 0;
+        MeshPoint[] normals = CalculateNormals();
+
+        for (int i = 0; i < curvatures.size(); i++) {
+            for (int j = 0; j < curvatures.size(); j++) {
+                if (i != j && (curvatures.get(i) / curvatures.get(j) >= minCurvRatio
+                        && curvatures.get(i) / curvatures.get(j) <= maxCurvRatio)) {
+                    
+                    MeshPoint vec = facet.getVertices().get(points.get(i)).subtractPosition(facet.getVertices().get(points.get(j)));
+                    vec = vec.dividePosition(vec.abs());
+                    double cos = vec.dotProduct(normal);
+ 
+                    MeshPoint ni;
+                    
+                    /*if (facet.getVertices().get(points.get(i)).getNormal() != null) {
+                        ni = new MeshPoint(new Vector3d(facet.getVertices().get(points.get(i)).getNormal().x,
+                            facet.getVertices().get(points.get(i)).getNormal().y,
+                            facet.getVertices().get(points.get(i)).getNormal().z), null, null);
+                    } else {
+                        ni = new MeshPoint (new Vector3d(normals[points.get(i)].getPosition().x,normals[points.get(i)].getPosition().y,
+                           normals[points.get(i)].getPosition().z), null, null);
+                    }
+                    
+                    ni = ni.divide(ni.abs());
+                    
+                    MeshPoint nj;
+                    if (facet.getVertices().get(points.get(j)).getNormal() != null) {
+                        nj = new MeshPoint(new Vector3d(facet.getVertices().get(points.get(j)).getNormal().x,
+                            facet.getVertices().get(points.get(j)).getNormal().y,
+                            facet.getVertices().get(points.get(j)).getNormal().z), null, null); 
+                    } else {
+                        nj = new MeshPoint (new Vector3d(normals[points.get(j)].getPosition().x,normals[points.get(j)].getPosition().y,
+                               normals[points.get(j)].getPosition().z), null, null);
+                    }*/
+                   
+                        
+                    ni = new MeshPoint (new Vector3d(normals[points.get(i)].getPosition().x,normals[points.get(i)].getPosition().y,
+                           normals[points.get(i)].getPosition().z), null, null);
+                        
+                    ni = ni.dividePosition(ni.abs());
+                        
+                    MeshPoint nj;
+                    nj = new MeshPoint (new Vector3d(normals[points.get(j)].getPosition().x,normals[points.get(j)].getPosition().y,
+                               normals[points.get(j)].getPosition().z), null, null);
+                    nj = nj.dividePosition(nj.abs());
+
+                    MeshPoint normVec = ni.subtractPosition(nj);
+                    normVec = normVec.dividePosition(normVec.abs());
+                    double normCos = normVec.dotProduct(normal);
+                    
+                    if (Math.abs(cos) >= minAngleCos && Math.abs(normCos) >= minNormAngleCos) {
+                        MeshPoint avrg = (facet.getVertices().get(points.get(i)).addPosition(facet.getVertices().get(points.get(j)))).dividePosition(2.0);
+
+                        double dist = normal.getPosition().x * avrg.getPosition().x +
+                                normal.getPosition().y * avrg.getPosition().y + normal.getPosition().z * avrg.getPosition().z + d;
+                        
+                        dist = Math.abs(dist);
+                        
+                        if (dist <= maxDist) {                 
+                            votes++;  
+                        }   
+                    }
+                }
+            }
+        }
+        return votes;
+    }
+    
+    /**
+     * 
+     * @param conf Configuration for computing
+     * @return approximate plane of symmtetry
+     */
+    public Plane getAproxSymmetryPlane(Config conf) {
+        UIManager.put("ProgressMonitor.progressText", "Counting symmetry...");
+ 
+        ArrayList<AproxSymmetryPlane> planes = new ArrayList<>();
+        MeshPoint[] normals = CalculateNormals();
+        double[] curvatures = new double[facet.getNumberOfVertices()];
+        for (int i = 0; i < facet.getNumberOfVertices(); i++) {
+            if (facet.getNumberOfVertices() > 2000) {
+                curvatures[i] = this.getMaxCurvature(i);
+            } else {
+                curvatures[i] = this.getGaussianCurvature(i);
+            }
+            if (Double.isNaN(curvatures[i])){
+                curvatures[i] = Double.MIN_VALUE;
+            }
+        }
+        ArrayList<Double> sortedCurvatures = new ArrayList<>();
+        for (int i = 0; i < curvatures.length; i++) {
+            sortedCurvatures.add(curvatures[i]);
+        }
+        Collections.sort(sortedCurvatures);
+           
+        if(conf.getSignificantPointCount() > facet.getNumberOfVertices()) {
+            conf.setSignificantPointCount((facet.getNumberOfVertices()) - 1);
+        }
+        double bottomCurvature = sortedCurvatures.get(sortedCurvatures.size() - 1 - conf.getSignificantPointCount());   
+      
+        ArrayList<Integer> significantPoints = new ArrayList<>();
+        ArrayList<Double> significantCurvatures = new ArrayList<>();
+        
+        for (int i = 0; i < facet.getNumberOfVertices(); i++) {
+            if (curvatures[i] >= bottomCurvature) {
+                significantCurvatures.add(curvatures[i]);
+                significantPoints.add(i);
+            }
+        }
+        
+        Plane plane = new Plane(0, 0, 0, 0);
+        int lastVotes = 0;
+        
+        ProgressMonitor progressMonitor;
+        progressMonitor = new ProgressMonitor(panel, "Cunting...",
+                "Steps", 0, significantPoints.size());
+        
+        double onePercent = significantCurvatures.size() / 100.0;
+        double percentsPerStep = 1 / onePercent;
+        for (int i = 0; i < significantPoints.size(); i++) {
+            for (int j = 0; j < significantPoints.size(); j++) {
+                if (i != j) {
+                    double minRatio = conf.getMinCurvRatio();
+                    double maxRatio = 1.0 / minRatio;
+                    if (significantCurvatures.get(i) / significantCurvatures.get(j) >= minRatio && significantCurvatures.get(i) /
+                            significantCurvatures.get(j) <= maxRatio) {
+                        
+                        MeshPoint p1 = facet.getVertex(significantPoints.get(i));
+                        MeshPoint p2 = facet.getVertex(significantPoints.get(j));
+                        MeshPoint avrg = (p1.addPosition(p2)).dividePosition(2.0);
+                        MeshPoint normal = (p1.subtractPosition(p2));
+                        
+                        normal = normal.dividePosition(normal.abs());
+                        double d = -(normal.getPosition().x * avrg.getPosition().x) -
+                                (normal.getPosition().y * avrg.getPosition().y) - (normal.getPosition().z * avrg.getPosition().z);
+                              
+                        MeshPoint ni;
+                        /*if (facet.getVertex(significantPoints.get(i)).getNormal() != null) {
+                            ni = new MeshPoint(new Vector3d(facet.getVertex(significantPoints.get(i)).getNormal().x,
+                                facet.getVertex(significantPoints.get(i)).getNormal().y,
+                                facet.getVertex(significantPoints.get(i)).getNormal().z),null, null);
+                        } else {
+                            ni = new MeshPoint (new Vector3d(normals[significantPoints.get(i)].getPosition().x,normals[significantPoints.get(i)].getPosition().y,
+                                normals[significantPoints.get(i)].getPosition().z), null, null);
+                        }
+                        ni = ni.divide(ni.abs());
+                        
+                        MeshPoint nj;
+                        if(facet.getVertex(significantPoints.get(j)).getNormal() != null) {
+                            nj = new MeshPoint(new Vector3d(facet.getVertex(significantPoints.get(j)).getNormal().x,
+                                facet.getVertex(significantPoints.get(j)).getNormal().y,
+                                facet.getVertex(significantPoints.get(j)).getNormal().z),null, null);
+                        } else {
+                            nj = new MeshPoint (new Vector3d(normals[significantPoints.get(j)].getPosition().x,normals[significantPoints.get(j)].getPosition().y,
+                            normals[significantPoints.get(j)].getPosition().z), null, null);
+                        }
+                        
+                        nj = nj.divide(nj.abs());*/
+                        
+                        ni = new MeshPoint (new Vector3d(normals[significantPoints.get(i)].getPosition().x,normals[significantPoints.get(i)].getPosition().y,
+                                normals[significantPoints.get(i)].getPosition().z), null, null);
+                        
+                        ni = ni.dividePosition(ni.abs());
+                        
+                        MeshPoint nj;
+                        nj = new MeshPoint (new Vector3d(normals[significantPoints.get(j)].getPosition().x,normals[significantPoints.get(j)].getPosition().y,
+                            normals[significantPoints.get(j)].getPosition().z), null, null);
+                        
+                        nj = nj.dividePosition(nj.abs());
+                        
+                        MeshPoint normVec = ni.subtractPosition(nj);
+                        normVec = normVec.dividePosition(normVec.abs());
+                        double normCos = normVec.dotProduct(normal);
+
+                        if (Math.abs(normCos) >= conf.getMinNormAngleCos()) {
+                            
+                            Plane newPlane = new Plane(normal.getPosition().x, normal.getPosition().y, normal.getPosition().z, d);
+                            int currentVotes = GetVotes(
+                                newPlane, 
+                                significantCurvatures, 
+                                significantPoints, 
+                                0.5, 
+                                conf.getMinAngleCos(), 
+                                conf.getMinNormAngleCos(), 
+                                boundingBox.getMaxDiag() * conf.getMaxRelDistance());
+                            
+
+                            planes.add(new AproxSymmetryPlane(newPlane, currentVotes));
+                            
+                            if (currentVotes > lastVotes) {
+                                lastVotes = currentVotes;
+                                plane = newPlane;
+                            }
+                        }
+                        
+                    }
+                }
+            }
+            progressMonitor.setNote("Task step: " + (int) ((i + 1) * percentsPerStep));
+            progressMonitor.setProgress(i);
+        };
+        
+        Collections.sort(planes);
+        ArrayList<AproxSymmetryPlane> finalPlanes = new ArrayList<>();
+        for (int i = 0; i < planes.size(); i++) {
+            if (planes.get(i).votes == lastVotes){
+                finalPlanes.add(planes.get(i));
+            }
+        }
+        Plane finalPlane = new Plane(0, 0, 0, 0);
+        //v plane nic neni 
+        MeshPoint refDir = new MeshPoint(new Vector3d(finalPlanes.get(0).a, finalPlanes.get(0).b, finalPlanes.get(0).c), null, null);
+        for (int i = 0; i < finalPlanes.size(); i++) {
+            MeshPoint normDir = new MeshPoint(new Vector3d(finalPlanes.get(i).a, finalPlanes.get(i).b, finalPlanes.get(i).c), null, null);
+            if (normDir.dotProduct(refDir) < 0) {
+                finalPlane.a -= finalPlanes.get(i).a;
+                finalPlane.b -= finalPlanes.get(i).b;
+                finalPlane.c -= finalPlanes.get(i).c;
+                finalPlane.d -= finalPlanes.get(i).d;
+            }
+            else {
+                finalPlane.a += finalPlanes.get(i).a;
+                finalPlane.b += finalPlanes.get(i).b;
+                finalPlane.c += finalPlanes.get(i).c;
+                finalPlane.d += finalPlanes.get(i).d;
+            }
+        }
+        finalPlane.normalize();
+        if (conf.isAveraging()){
+            plane = finalPlane;
+        }
+        JOptionPane.showMessageDialog(frameMain, "Final plane: " + plane.a + " " + plane.b + " " + plane.c + " " +
+                plane.d + "\n" + "Votes: " + lastVotes, "Symmetry estimate done.", 0,
+                new ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/exportedModel.png")));
+
+        progressMonitor.close();
+        return plane;
+    }
+    
+    /**
+     * 
+     * @param plane Plane computed as symmetry plane
+     * @return mesh that represents facet with computed plane of approximate symmetry
+     */
+    public SymmetryCounter mergeWithPlane(Plane plane) {
+        MeshPoint normal = new MeshPoint(new Vector3d(plane.a, plane.b, plane.c), null, null);
+        MeshPoint midPoint = boundingBox.getMidPoint();
+
+        double alpha = -((plane.a * midPoint.getPosition().x) + 
+                (plane.b * midPoint.getPosition().y) + (plane.c * midPoint.getPosition().z) +
+                plane.d) / (normal.dotProduct(normal));
+
+        MeshPoint midPointOnPlane = midPoint.addPosition(normal.multiplyPosition(alpha));
+
+        double val = plane.a * midPointOnPlane.getPosition().x + plane.b *
+                midPointOnPlane.getPosition().y + plane.c *
+                midPointOnPlane.getPosition().z + plane.d;
+
+        MeshPoint a;
+        if (Math.abs(normal.dotProduct(new MeshPoint(new Vector3d(0.0, 1.0, 0.0), null, null))) 
+                > Math.abs(normal.dotProduct(new MeshPoint(new Vector3d (1.0, 0.0, 0.0), null, null)))) {
+                a = normal.crossProduct(new MeshPoint(new Vector3d(1.0, 0.0, 0.0), null, null));
+        }
+        else {
+            a = normal.crossProduct(new MeshPoint(new Vector3d(0.0, 1.0, 0.0), null, null));
+        }
+        a = a.dividePosition(a.abs());
+
+        MeshPoint b = normal.crossProduct(a);
+        b = b.dividePosition(b.abs());
+       
+
+        SymmetryCounter planeMesh = Plane.createPlaneMesh(midPointOnPlane, a, b,
+                (boundingBox.getMaxPoint().subtractPosition(boundingBox.getMinPoint())).getPosition().x);
+
+
+        return mergeMeshWith(planeMesh);
+    }
+    
+    /**
+     * 
+     * @param s mesh that will be merged
+     * @return mesh with merged vertices from both meshes 
+     */
+    public SymmetryCounter mergeMeshWith(SymmetryCounter s) {
+        CornerTableRow row1 = new CornerTableRow(facet.getNumberOfVertices(), -1);
+        CornerTableRow row2 = new CornerTableRow(facet.getNumberOfVertices() + 1, facet.getNumberOfVertices() + 3);
+        CornerTableRow row3 = new CornerTableRow(facet.getNumberOfVertices() + 2, -1);
+        CornerTableRow row4 = new CornerTableRow(facet.getNumberOfVertices() + 2, -1);
+        CornerTableRow row5 = new CornerTableRow(facet.getNumberOfVertices() + 3, facet.getNumberOfVertices() + 1);
+        CornerTableRow row6 = new CornerTableRow(facet.getNumberOfVertices(), -1);
+        
+        facet.getCornerTable().addRow(row1);
+        facet.getCornerTable().addRow(row2);
+        facet.getCornerTable().addRow(row3);
+        facet.getCornerTable().addRow(row4);
+        facet.getCornerTable().addRow(row5);
+        facet.getCornerTable().addRow(row6);
+
+        for(int n = 0; n < 4; n++) {
+            facet.addVertex(s.getFacet().getVertices().get(n));
+        }        
+        return this;
+    }
+}
diff --git a/GUI/src/main/java/cz/fidentis/analyst/symmetry/Triangle.java b/GUI/src/main/java/cz/fidentis/analyst/symmetry/Triangle.java
new file mode 100644
index 00000000..6a7df8ba
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/symmetry/Triangle.java
@@ -0,0 +1,101 @@
+package cz.fidentis.analyst.symmetry;
+
+/**
+ *
+ * @author Natália Bebjaková
+ * 
+ * Helping representation of triangle in symmetry estimate 
+ */
+
+public class Triangle { 
+    protected int vertex1;
+    protected int vertex2;
+    protected int vertex3;
+    
+    /**
+     * Creates new triangle
+     * 
+     * @param v1 first vertex 
+     * @param v2 second vertex
+     * @param v3 third vertex
+     */        
+    public Triangle(int v1, int v2, int v3) {
+        this.vertex1 = v1;
+        this.vertex2 = v2; 
+        this.vertex3 = v3;
+    }
+    /**
+     * 
+     * @return first vertex of triangle
+     */
+    public int getVertex1() {
+        return vertex1;
+    }
+
+    /**
+     * 
+     * @param vertex1 new vertex
+     */
+    public void setVertex1(int vertex1) {
+        this.vertex1 = vertex1;
+    }
+
+    /**
+     * 
+     * @return second vertex of triangle
+     */
+    public int getVertex2() {
+        return vertex2;
+    }
+
+    /**
+     * 
+     * @param vertex2 new vertex 
+     */
+    public void setVertex2(int vertex2) {
+        this.vertex2 = vertex2;
+    }
+
+    /**
+     * 
+     * @return third vertex of triangle
+     */
+    public int getVertex3() {
+        return vertex3;
+    }
+
+    /**
+     * 
+     * @param vertex3 new vertex 
+     */
+    public void setVertex3(int vertex3) {
+        this.vertex3 = vertex3;
+    }
+
+    /**
+     * Triangles are same if they have same vertices
+     * 
+     * @param obj other triangle 
+     * @return true if two triangles are same 
+     */        
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof Triangle) {
+            Triangle t = (Triangle)obj;
+            if (((this.vertex1 == t.vertex1) || (this.vertex1 == t.vertex2) || (this.vertex1 == t.vertex3)) &&
+                ((this.vertex2 == t.vertex1) || (this.vertex2 == t.vertex2) || (this.vertex2 == t.vertex3)) &&
+                ((this.vertex3 == t.vertex1) || (this.vertex3 == t.vertex2) || (this.vertex3 == t.vertex3)))
+                return (true);
+        }
+        return (false);
+    }
+       
+    /**
+     * 
+     * @return hascode of the triangle
+     */
+    @Override 
+    public int hashCode() {
+        return (this.vertex1 * 100 ^ this.vertex2 * 100 ^ this.vertex3);
+    }
+}
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
index 1f2d0f65..a16d64f0 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
@@ -1,8 +1,11 @@
 package cz.fidentis.analyst.mesh.core;
-
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
+/**
+ * Representation of mesh in memory
+ */
 /**
  * Representation of mesh in memory using corner table
  *
@@ -11,6 +14,25 @@ import java.util.List;
 public class CornerTable {
 
     private List<CornerTableRow> rows = new ArrayList<>();
+    
+    /**
+     * Constructor of CornerTable
+     */
+    public CornerTable() {
+
+    }
+
+     /**
+     * Copy constructor of CornerTable
+     *
+     * @param cornerTable copied CornerTable
+     */
+    public CornerTable(CornerTable cornerTable) {
+        cornerTable.rows.forEach((row) -> {
+            rows.add(new CornerTableRow(row));
+        });
+    }
+
 
     /**
      * returns index of face that contains corner.
@@ -111,8 +133,8 @@ public class CornerTable {
         if (index < 0 || index > rows.size()) {
             return -2;
         }
-        int tipLeftCornerIndex=getIndexOfTipCornerOnLeft(index);
-        if (tipLeftCornerIndex==-1){
+        int tipLeftCornerIndex = getIndexOfTipCornerOnLeft(index);
+        if (tipLeftCornerIndex == -1) {
             return -1;
         }
 
@@ -156,4 +178,46 @@ public class CornerTable {
     public CornerTableRow getRow(int index) {
         return rows.get(index);
     }
+
+    /**
+     * returns corners of specific vertex
+     *
+     * @param vertexIndex index of vertex
+     * @return list of rows of corner table
+     */
+    public List<CornerTableRow> getCornersByVertexIndex(int vertexIndex) {
+        return rows.stream()
+                .filter(corner -> corner.getVertexIndex() == vertexIndex)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * returns list of indexes of faces that have a corner at specific vertex
+     *
+     * @param vertexIndex index of vertex
+     * @return list of indexes of faces
+     */
+    public List<Integer> getTriangleIndexesByVertexIndex(int vertexIndex) {
+        return rows.stream()
+                .filter(corner -> corner.getVertexIndex() == vertexIndex)
+                .map(corner -> getIndexOfFace(rows.indexOf(corner)))
+                .collect(Collectors.toList());
+    }
+    
+    /**
+     * returns indexes of vertices of triangle
+     * @param triangleIndex index of triangle
+     * @return list of indexes
+     */
+    public List<Integer> getIndexesOfVerticesByTriangleIndex(int triangleIndex) {
+        List<Integer> indexes = new ArrayList<>();
+        for (int i = 0; i < 3; i++) {
+            CornerTableRow row = getRow(triangleIndex + i);
+            indexes.add(row.getVertexIndex());
+        }
+        return indexes;
+    }
+
 }
+
+
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
index 07deb873..5eb7514f 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
@@ -1,23 +1,27 @@
 package cz.fidentis.analyst.mesh.core;
 
 /**
- * single row in corner table
  *
- * @author Matej Lukes
+ * @author Matej Lukeš
  */
 public class CornerTableRow {
     private int oppositeCornerIndex;
     private int vertexIndex;
 
-    /**
-     * Constructor of a row in corner
-     * @param vertexIndex index of associated vertex in MashFacet
-     * @param oppositeCornerIndex index of the opposite corner, -1 if there is no opposite corner
-     */
     public CornerTableRow(int vertexIndex, int oppositeCornerIndex) {
         this.vertexIndex = vertexIndex;
         this.oppositeCornerIndex = oppositeCornerIndex;
     }
+    /**
+     * Copy constructor of a row in corner
+     *
+     * @param cornerTableRow copied row
+     */
+    public CornerTableRow(CornerTableRow cornerTableRow) {
+        this.vertexIndex = cornerTableRow.getVertexIndex();
+        this.oppositeCornerIndex = cornerTableRow.getOppositeCornerIndex();
+    }
+
 
     /**
      * returns vertex of corner
@@ -35,10 +39,6 @@ public class CornerTableRow {
         return oppositeCornerIndex;
     }
 
-    /**
-     * sets index of the opposite corner
-     * @param index index of the opposite corner in corner table
-     */
     public void setOppositeCornerIndex(int index) {
         this.oppositeCornerIndex = index;
     }
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
index 74328019..285d0dd0 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
@@ -2,55 +2,54 @@ package cz.fidentis.analyst.mesh.core;
 
 import java.util.ArrayList;
 import java.util.List;
-
 /**
- * MashFacet
- *
- * @author Matej Lukes
+ * 
+ * @author Matej Lukeš
  */
+
 public class MeshFacet {
     private List<MeshPoint> vertices = new ArrayList<>();
     private CornerTable cornerTable = new CornerTable();
 
     /**
-     * returns vertex of specified index
-     * @param index index of vertex
-     * @return vertex
+     * Constructor of MeshFacet
      */
-    public MeshPoint getVertex(int index) {
-        return vertices.get(index);
+    public MeshFacet() {
+        cornerTable = new CornerTable();
     }
 
     /**
-     * adds vertex to MeshFacet
-     * @param point new vertex
+     * Copy constructor of MeshFacet
+     *
+     * @param facet copied MeshFacet
      */
+    public MeshFacet(MeshFacet facet) {
+        for (MeshPoint vertex :
+                facet.vertices) {
+            vertices.add(new MeshPoint(vertex));
+        }
+        cornerTable = new CornerTable(facet.cornerTable);
+    }
+
+
+    public MeshPoint getVertex(int c) {
+        return vertices.get(c);
+    } // vertex of c
+
     public void addVertex(MeshPoint point){
         vertices.add(point);
     }
 
-    /**
-     * returns number of vertices in MeshFacet
-     * @return number of vertices
-     */
     public int getNumberOfVertices() {
         return vertices.size();
     }
 
-    /**
-     * returns list of vertices in MeshFacet
-     * @return list if vertices
-     */
-    public List<MeshPoint> getVertices() {
-        return vertices;
-    }
-
-    /**
-     * returns Corner Table representing MeshFacet
-     * @return corner table
-     */
     public CornerTable getCornerTable() {
         return cornerTable;
     }
+    
+    public List<MeshPoint> getVertices(){
+        return vertices;
+    }
+    
 }
-
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
index 7966434f..9d389325 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
@@ -4,26 +4,31 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * MeshModel is a root node of the hierarchy
  *
- * @author Matej Lukes
+ * @author Metej Lukeš
  */
 public class MeshModel {
+    public MeshModel() {}
+
     private List<MeshFacet> facets = new ArrayList<>();
 
-    /**
-     * returns list of MeshFacets
-     * @return list of MeshFacets
-     */
     public List<MeshFacet> getFacets() {
         return facets;
     }
 
     /**
-     * adds new MeshFacet to the model
-     * @param facet new MeshFacet
+     * Copy constructor of MeshModel
+     *
+     * @param meshModel copied MeshModel
      */
+    public MeshModel(MeshModel meshModel) {
+        meshModel.facets.forEach((facet) -> {
+            facets.add(new MeshFacet(facet));
+        });
+    }
+
     public void addFacet(MeshFacet facet) {
         facets.add(facet);
     }
+    
 }
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
index 159f1ea5..73d74d4b 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
@@ -1,26 +1,17 @@
 package cz.fidentis.analyst.mesh.core;
-
 import javax.vecmath.Vector3d;
 
 /**
- * MeshPoint represents a point with position, normal, and texture coordinates
  *
- * @author Matej Lukes
+ * @author Matej Lukeš
  */
+//prerobenee
 public class MeshPoint {
-    private final Vector3d position, normal, texCoord;
+    protected Vector3d position, normal, texCoord;
 
-    /**
-     * constructor of meshPoint
-     *
-     * @param position position of MeshPoint
-     * @param normal   normal of MeshPoint
-     * @param texCoord coordinates in texture
-     */
-    public MeshPoint(Vector3d position, Vector3d normal, Vector3d texCoord) {
-        if (position == null) {
+    public MeshPoint(Vector3d position, Vector3d normal , Vector3d texCoord) {
+        if (position == null)
             throw new NullPointerException("position cannot be null");
-        }
 
         this.position = position;
         this.normal = normal;
@@ -47,7 +38,40 @@ public class MeshPoint {
     public Vector3d getTexCoord() {
         return texCoord;
     }
+    
+    /**
+    * copy constructor of meshPoint
+    * @param meshPoint copied meshPoint
+    */
+    public MeshPoint(MeshPoint meshPoint) {
+        this.position = new Vector3d(meshPoint.position);
+        if (meshPoint.normal != null) {
+            this.normal = new Vector3d(meshPoint.normal);
+        }
+        if (meshPoint.texCoord != null) {
+            this.texCoord = new Vector3d(meshPoint.texCoord);
+        }
+    }
+
+
+    /**
+     * @param obj compared object
+     * @return true if positions, normals and texture coordinates are equal, false otherwise
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (!(obj instanceof MeshPoint))
+            return false;
+
+        MeshPoint meshPointObj = (MeshPoint) obj;
+        return this.position.equals(meshPointObj.position);
+    }
 
+    @Override
+    public int hashCode() {
+        return position.hashCode(); 
+    }        
+    
     /**
      * returns new instance of MeshPoint with subtracted position
      *
@@ -55,7 +79,7 @@ public class MeshPoint {
      * @return subtracted MeshPoint
      */
     public MeshPoint subtractPosition(MeshPoint subtrahend) {
-        return subtractPosition(subtrahend.position);
+        return MeshPoint.this.subtractPosition(subtrahend.position);
     }
 
     /**
@@ -67,7 +91,13 @@ public class MeshPoint {
     public MeshPoint subtractPosition(Vector3d subtrahend) {
         Vector3d newPosition = new Vector3d(position);
         newPosition.sub(subtrahend);
-        return new MeshPoint(new Vector3d(newPosition), normal, new Vector3d(texCoord));
+        if (normal != null) {
+            if (texCoord != null) 
+                return new MeshPoint(new Vector3d(newPosition), new Vector3d(normal), new Vector3d(texCoord));
+            else 
+                return new MeshPoint(new Vector3d(newPosition), new Vector3d(normal), null);
+        }
+        return new MeshPoint(new Vector3d(newPosition), null, null);  
     }
 
     /**
@@ -77,7 +107,7 @@ public class MeshPoint {
      * @return added MeshPoint
      */
     public MeshPoint addPosition(MeshPoint addend) {
-        return addPosition(addend.position);
+        return MeshPoint.this.addPosition(addend.position);
     }
 
     /**
@@ -89,78 +119,90 @@ public class MeshPoint {
     public MeshPoint addPosition(Vector3d addend) {
         Vector3d newPosition = new Vector3d(position);
         newPosition.add(addend);
-        return new MeshPoint(new Vector3d(newPosition), normal, new Vector3d(texCoord));
-    }
-
-    /**
-     * returns new instance of MeshPoint with subtracted normal
-     *
-     * @param subtrahend normal to be subtracted
-     * @return subtracted MeshPoint
-     */
-    public MeshPoint subtractNormal(MeshPoint subtrahend) {
-        return subtractNormal(subtrahend.normal);
-    }
-
-    /**
-     * returns new instance of MeshPoint with subtracted normal
-     *
-     * @param subtrahend normal to be subtracted
-     * @return subtracted MeshPoint
-     */
-    public MeshPoint subtractNormal(Vector3d subtrahend) {
-        Vector3d newNormal = new Vector3d(normal);
-        newNormal.sub(subtrahend);
-        newNormal.normalize();
-        return new MeshPoint(new Vector3d(position), newNormal, new Vector3d(texCoord));
+        if (normal != null) {
+            if (texCoord != null) 
+                return new MeshPoint(new Vector3d(newPosition), new Vector3d(normal), new Vector3d(texCoord));
+            else 
+                return new MeshPoint(new Vector3d(newPosition), new Vector3d(normal), null);
+        }
+        return new MeshPoint(new Vector3d(newPosition), null, null);
     }
 
-    /**
-     * returns new instance of MeshPoint with added normal
-     *
-     * @param addend normal to be added
-     * @return added MeshPoint
-     */
-    public MeshPoint addNormal(MeshPoint addend) {
-        return addNormal(addend.normal);
+    /*public MeshPoint addPosition(MeshPoint b) {
+        return (new MeshPoint(new Vector3d(this.getPosition().x + b.getPosition().x,
+                this.getPosition().y + b.getPosition().y, this.getPosition().z + b.getPosition().z),
+                null, null));
+    }*/
+    
+   /* public MeshPoint subtractPosition(MeshPoint b) {
+        return (new MeshPoint(new Vector3d(this.getPosition().x - b.getPosition().x,
+                this.getPosition().y - b.getPosition().y, this.getPosition().z - b.getPosition().z),
+                null, null));
+    }*/
+    
+    public MeshPoint multiplyPosition(double number) {
+        if (normal != null) {
+            if (texCoord != null) 
+                return new MeshPoint(new Vector3d(this.getPosition().x * number,
+                        this.getPosition().y * number, this.getPosition().z * number),
+                        new Vector3d(normal), new Vector3d(texCoord));
+            else
+                return new MeshPoint(new Vector3d(this.getPosition().x * number,
+                        this.getPosition().y * number, this.getPosition().z * number),
+                        new Vector3d(normal), null);
+        }
+        return new MeshPoint(new Vector3d(this.getPosition().x * number,
+                        this.getPosition().y * number, this.getPosition().z * number),
+                        null, null);        
     }
-
-    /**
-     * returns new instance of MeshPoint with added normal
-     *
-     * @param addend normal to be added
-     * @return added MeshPoint
-     */
-    public MeshPoint addNormal(Vector3d addend) {
-        Vector3d newNormal = new Vector3d(normal);
-        newNormal.add(addend);
-        newNormal.normalize();
-        return new MeshPoint(new Vector3d(position), newNormal, new Vector3d(texCoord));
+    
+    public MeshPoint dividePosition(double number) {
+        if (normal != null) {
+            if (texCoord != null) 
+                return new MeshPoint(new Vector3d(this.getPosition().x / number, this.getPosition().y / number,
+                        this.getPosition().z / number), new Vector3d(normal), new Vector3d(texCoord));
+            else
+                return new MeshPoint(new Vector3d(this.getPosition().x / number, this.getPosition().y / number,
+                        this.getPosition().z / number), new Vector3d(normal), null);
+        }
+        return new MeshPoint(new Vector3d(this.getPosition().x / number, this.getPosition().y / number,
+                this.getPosition().z / number), null, null);
     }
-
-    /**
-     * @param obj compared object
-     * @return true if positions, normals and texture coordinates are equal, false otherwise
+    
+     /**
+      * Returns the cross product of two points.
+        @param meshPoint Second argument of the cross product operation.
+     * @return 
+        @returns Point3D representing the resulting vector.
      */
-    @Override
-    public boolean equals(Object obj) {
-        if (!(obj instanceof MeshPoint)) {
-            return false;
+    public MeshPoint crossProduct(MeshPoint meshPoint) {
+        if (normal != null) {
+            if (texCoord != null) 
+                return new MeshPoint(new Vector3d
+                (this.position.y * meshPoint.position.z - this.position.z * meshPoint.position.y,
+                this.position.z * meshPoint.position.x - this.position.x * meshPoint.position.z,
+                this.position.x * meshPoint.position.y - this.position.y * meshPoint.position.x),
+                new Vector3d(normal), new Vector3d(texCoord));
+            else
+                return new MeshPoint(new Vector3d
+                (this.position.y * meshPoint.position.z - this.position.z * meshPoint.position.y,
+                this.position.z * meshPoint.position.x - this.position.x * meshPoint.position.z,
+                this.position.x * meshPoint.position.y - this.position.y * meshPoint.position.x),
+                new Vector3d(normal), null);
         }
-
-        MeshPoint meshPointObj = (MeshPoint) obj;
-        return this.position.equals(meshPointObj.position)
-                && this.normal.equals(meshPointObj.normal)
-                && this.texCoord.equals(meshPointObj.texCoord);
+        return new MeshPoint(new Vector3d
+                (this.position.y * meshPoint.position.z - this.position.z * meshPoint.position.y,
+                this.position.z * meshPoint.position.x - this.position.x * meshPoint.position.z,
+                this.position.x * meshPoint.position.y - this.position.y * meshPoint.position.x),
+                null, null);
     }
 
-    /**
-     * returns hash of MeshPoint
-     *
-     * @return hash
-     */
-    @Override
-    public int hashCode() {
-        return position.hashCode() + normal.hashCode() + texCoord.hashCode();
+    public double dotProduct(MeshPoint meshPoint) {
+        return (this.position.x * meshPoint.position.x + this.position.y * meshPoint.position.y + this.position.z * meshPoint.position.z);
+    }
+    
+    public double abs() {
+        return Math.sqrt(this.getPosition().x * this.getPosition().x + 
+                this.getPosition().y * this.getPosition().y + this.getPosition().z * this.getPosition().z);
     }
 }
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshModelExporter.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshModelExporter.java
new file mode 100644
index 00000000..c91805e2
--- /dev/null
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshModelExporter.java
@@ -0,0 +1,221 @@
+package cz.fidentis.analyst.mesh.io;
+/**
+ *
+ * @author Natália Bebjaková
+ * 
+ * Creates new directory and exports model to .obj file in this created directory 
+ * Exports model's vertices and normals, if there are some
+ */
+import cz.fidentis.analyst.mesh.core.MeshFacet;
+import cz.fidentis.analyst.mesh.core.MeshModel;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+/**
+ *
+ * @author Natalia Bebjakova
+ */
+public class MeshModelExporter {
+    /** 
+     * Helping representation of triangle in symmetry estimate 
+     */
+    private class Triangle { 
+        protected int vertex1;
+        protected int vertex2;
+        protected int vertex3;
+
+        /**
+         * Creates new triangle
+         * 
+         * @param v1 first vertex 
+         * @param v2 second vertex
+         * @param v3 third vertex
+         */        
+        public Triangle(int v1, int v2, int v3) {
+            this.vertex1 = v1;
+            this.vertex2 = v2; 
+            this.vertex3 = v3;
+        }
+        /**
+         * 
+         * @return first vertex of triangle
+         */
+        public int getVertex1() {
+            return vertex1;
+        }
+
+        /**
+         * 
+         * @param vertex1 new vertex
+         */
+        public void setVertex1(int vertex1) {
+            this.vertex1 = vertex1;
+        }
+
+        /**
+         * 
+         * @return second vertex of triangle
+         */
+        public int getVertex2() {
+            return vertex2;
+        }
+
+        /**
+         * 
+         * @param vertex2 new vertex 
+         */
+        public void setVertex2(int vertex2) {
+            this.vertex2 = vertex2;
+        }
+
+        /**
+         * 
+         * @return third vertex of triangle
+         */
+        public int getVertex3() {
+            return vertex3;
+        }
+
+        /**
+         * 
+         * @param vertex3 new vertex 
+         */
+        public void setVertex3(int vertex3) {
+            this.vertex3 = vertex3;
+        }
+
+        /**
+         * Triangles are same if they have same vertices
+         * 
+         * @param obj other triangle 
+         * @return true if two triangles are same 
+         */        
+        @Override
+        public boolean equals(Object obj) {
+            if (obj instanceof Triangle) {
+                Triangle t = (Triangle)obj;
+                if (((this.vertex1 == t.vertex1) || (this.vertex1 == t.vertex2) || (this.vertex1 == t.vertex3)) &&
+                    ((this.vertex2 == t.vertex1) || (this.vertex2 == t.vertex2) || (this.vertex2 == t.vertex3)) &&
+                    ((this.vertex3 == t.vertex1) || (this.vertex3 == t.vertex2) || (this.vertex3 == t.vertex3)))
+                    return (true);
+            }
+            return (false);
+        }
+
+        /**
+         * 
+         * @return hascode of the triangle
+         */
+        @Override 
+        public int hashCode() {
+            return (this.vertex1 * 100 ^ this.vertex2 * 100 ^ this.vertex3);
+        }
+    }
+
+    /**
+     * Model to be exported
+     */
+    MeshModel model;
+    
+    /**
+     *
+     * @param model model to be exported.
+     */
+    public MeshModelExporter(MeshModel model) {
+        this.model = model;
+    }
+    
+    /**
+     * 
+     * @param exportFile
+     * @throws IOException 
+     */
+    public void exportModelToObj(File exportFile) throws IOException {
+        for(MeshFacet facet : model.getFacets()) {
+            exportFacetToObj(facet, exportFile);
+        }
+    }
+
+    /**
+     * Export model to OBJ file.
+     * @param facet Facet of the model to be exported, so far every model has one
+     * @param exportFile file for exporting.
+     * @throws java.io.IOException 
+     */
+    public void exportFacetToObj(MeshFacet facet, File exportFile) throws IOException {
+        int formatIndex = exportFile.getName().lastIndexOf(".");
+        String fileName; //name that is writen to file
+        
+        if (formatIndex < 0) {
+            fileName = exportFile.getName();
+        } else {
+            fileName = exportFile.getName().substring(0, formatIndex);
+        }
+        
+        File exportDirectory = new File(exportFile.getParent() + File.separator + fileName); //directory for export        
+        exportDirectory.mkdir(); //creates new directory
+
+        exportFile = new File(exportDirectory + File.separator + fileName + ".obj");
+        
+        try (FileWriter fstream = new FileWriter(exportFile);
+        BufferedWriter out = new BufferedWriter(fstream);) {
+
+            out.write("mtllib " + fileName + ".mtl" + "\n");
+           
+            DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.getDefault());
+            otherSymbols.setDecimalSeparator('.');  //dot as separator for decimal numbers
+            DecimalFormat df = new DecimalFormat("#.####", otherSymbols);
+             
+            //writes vertices of the facet to file
+            for (int j = 0; j < facet.getNumberOfVertices(); j++) {
+                out.write("v " + df.format(facet.getVertices().get(j).getPosition().x) + " " 
+                        + df.format(facet.getVertices().get(j).getPosition().y) + " " 
+                        + df.format(facet.getVertices().get(j).getPosition().z) + "\n");
+            }
+            out.write("#" + facet.getNumberOfVertices() + " vertices" + "\n");
+            
+            //detects if first vertex has normal
+            boolean hasAllNormals = facet.getVertices().get(0).getNormal() != null;
+            
+            //writes normals if there are any 
+            for (int i = 0; i < facet.getNumberOfVertices(); i++) {
+                if(facet.getVertex(i).getNormal() != null) {
+                out.write("vn " + df.format(facet.getVertices().get(i).getNormal().x) + " "
+                        + df.format(facet.getVertices().get(i).getNormal().y) + " "
+                        + df.format(facet.getVertices().get(i).getNormal().z) + "\n");
+                }
+            }
+            
+            //computes triangles of facet
+            Triangle[] triangles = new Triangle[facet.getCornerTable().getSize() / 3];
+            for (int i = 0; i < facet.getCornerTable().getSize(); i += 3) {
+                Triangle t = new Triangle(facet.getCornerTable().getRow(i).getVertexIndex(),
+                    facet.getCornerTable().getRow(i + 1).getVertexIndex(),
+                    facet.getCornerTable().getRow(i + 2).getVertexIndex());
+                triangles[(i / 3)] = t;
+            }
+            
+            //writes triangles of facet
+            for (Triangle triangle : triangles) {
+                out.write("f ");
+                if (facet.getVertex(triangle.getVertex1()).getNormal() != null && hasAllNormals) {
+                    out.write((triangle.getVertex1() + 1) + "//" + (triangle.getVertex1() + 1) + " "
+                            + (triangle.getVertex2() + 1) + "//" + (triangle.getVertex2() + 1) + " "
+                            + (triangle.getVertex3() + 1) + "//" + (triangle.getVertex3() + 1) + "\n"); 
+                } else {
+                    out.write((triangle.getVertex1() + 1) + " " + (triangle.getVertex2() + 1) +
+                            " " + (triangle.getVertex3() + 1) + "\n");   
+                }
+            }
+            out.write("\n");
+            out.close();
+            fstream.close();
+        }
+    }
+}
+
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/ModelFileFilter.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/ModelFileFilter.java
similarity index 50%
rename from GUI/src/main/java/cz/fidentis/analyst/gui/ModelFileFilter.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/ModelFileFilter.java
index 7fc0b83c..f8711327 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/ModelFileFilter.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/ModelFileFilter.java
@@ -1,39 +1,50 @@
-package cz.fidentis.analyst.gui;
+package cz.fidentis.analyst.mesh.io;
 
 import java.io.File;
 import javax.swing.filechooser.FileFilter;
 
 /**
- *
  * @author Natalia Bebjakova
+ * 
+ * Enables to choose just extensions we want in the filechooser 
  */
 public class ModelFileFilter extends FileFilter {
 
-    private String[] extension;
-    private String description;
-
+    private final String[] extension;
+    private final String description;
+    
+    /**
+     * 
+     * @param extension Extentions of files
+     * @param description Description
+     */
     public ModelFileFilter(String[] extension, String description)
     {
         this.extension = extension;
         this.description = description;
     }
 
+    /**
+     * 
+     * @param f File 
+     * @return Whether file has chosen extension or not 
+     */
     @Override
     public boolean accept(File f)
     {
         boolean accepted = false;
-        for (int i=0; i<extension.length;i++) {
-            if(f.isDirectory() || f.getName().endsWith(extension[i])) {
+        for (int i = 0; i< extension.length; i++) {
+             if(f.isDirectory() || f.getName().endsWith(extension[i])) {
                 accepted = true;
             }
         }
         return accepted;
     }
-
-    /*
-     * @see javax.swing.filechooser.FileFilter
+    
+    /**
+     * 
+     * @return description
      */
-
     @Override
     public String getDescription() {
         return description;
-- 
GitLab