From 0edd94edbe7180bc48aad8e4e645ecb371ce5bba Mon Sep 17 00:00:00 2001
From: Richard Pajersky <xpajersk@fi.muni.cz>
Date: Tue, 11 May 2021 20:36:14 +0200
Subject: [PATCH] UI refactor and redesign, changed base colors

---
 .../gui/RegistrationCPEventListener.java      |  32 +-
 .../analyst/gui/scene/DrawableMesh.java       |   2 -
 .../analyst/gui/scene/SceneRenderer.java      |   8 +-
 .../analyst/gui/tab/PostRegistrationCP.form   | 214 +++++++------
 .../analyst/gui/tab/PostRegistrationCP.java   | 300 +++++++++++-------
 GUI/src/main/resources/arrow-left-s-line.png  | Bin 0 -> 206 bytes
 GUI/src/main/resources/arrow-right-s-line.png | Bin 0 -> 210 bytes
 .../analyst/gui/tab/Bundle.properties         |  10 +-
 8 files changed, 341 insertions(+), 225 deletions(-)
 create mode 100644 GUI/src/main/resources/arrow-left-s-line.png
 create mode 100644 GUI/src/main/resources/arrow-right-s-line.png

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java b/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java
index cc93bd0f..5c77c80a 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java
@@ -13,7 +13,6 @@ import cz.fidentis.analyst.mesh.core.MeshFacet;
 import cz.fidentis.analyst.mesh.core.MeshPoint;
 import cz.fidentis.analyst.visitors.mesh.BoundingBox;
 import java.awt.Color;
-import java.util.AbstractMap;
 import java.util.ArrayList;
 import javax.vecmath.Point3d;
 import javax.vecmath.Vector3d;
@@ -25,15 +24,13 @@ import javax.vecmath.Vector3d;
  */
 public class RegistrationCPEventListener {
     
-    public final double baseTranslation = 1;
-    public final double baseRotation = 1;
-    public final double baseScale = 1;
-    public final Color defaultPrimaryColor = new Color(51, 51, 153);
-    public final Color defaultSecondaryColor = new Color(255, 239, 0);
+    public final double baseQuotient = 1;
+    public final double precisionQuotient = 0.1;
+    public final Color defaultPrimaryColor = new Color(101, 119, 179);
+    public final Color defaultSecondaryColor = new Color(237, 217, 76);
     public final int transparencyRange = 10;
+    private final double changeQuotient = 500d;
     
-    private final double changeAmount = 500d;
-
     private final Canvas canvas;
     private final double moveX;
     private final double moveY;
@@ -42,7 +39,8 @@ public class RegistrationCPEventListener {
     
     private DrawableMesh primaryFace;
     private DrawableMesh secondaryFace;
-    private double featurePointsThreshold = 0.1;
+    private double moveModifier = precisionQuotient;
+    private double featurePointsThreshold = precisionQuotient;
     
     public RegistrationCPEventListener(Canvas canvas) {
         this.canvas = canvas;
@@ -57,10 +55,10 @@ public class RegistrationCPEventListener {
         secondaryFace.getModel().compute(visitor);
         Point3d maxPoint = visitor.getBoundingBox().getMaxPoint();
         Point3d minPoint = visitor.getBoundingBox().getMinPoint();
-        moveX = (maxPoint.x - minPoint.x) / changeAmount;
-        moveY = (maxPoint.y - minPoint.y) / changeAmount;
-        moveZ = (maxPoint.z - minPoint.z) / changeAmount;
-        scaleXYZ = (visitor.getBoundingBox().getMaxDiag() / (10 * changeAmount));
+        moveX = (maxPoint.x - minPoint.x) / changeQuotient;
+        moveY = (maxPoint.y - minPoint.y) / changeQuotient;
+        moveZ = (maxPoint.z - minPoint.z) / changeQuotient;
+        scaleXYZ = (visitor.getBoundingBox().getMaxDiag() / (10 * changeQuotient));
     }
     
     /**
@@ -362,6 +360,14 @@ public class RegistrationCPEventListener {
         canvas.renderScene();
     }
 
+    public double getMoveModifier() {
+        return moveModifier;
+    }
+
+    public void setMoveModifier(double moveModifier) {
+        this.moveModifier = moveModifier;
+    }
+
     public Canvas getCanvas() {
         return canvas;
     }
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/DrawableMesh.java b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/DrawableMesh.java
index 395eb4d9..d24fffd1 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/DrawableMesh.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/DrawableMesh.java
@@ -5,10 +5,8 @@ import cz.fidentis.analyst.feature.FeaturePoint;
 import cz.fidentis.analyst.mesh.core.MeshFacet;
 import cz.fidentis.analyst.mesh.core.MeshModel;
 import java.awt.Color;
-import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.List;
-import javax.vecmath.Point3d;
 import javax.vecmath.Vector3d;
 
 /**
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java
index daa69717..8ef41c2d 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java
@@ -1,19 +1,15 @@
 package cz.fidentis.analyst.gui.scene;
 
 import com.jogamp.opengl.GL;
-import static com.jogamp.opengl.GL.GL_DEPTH_TEST;
-import static com.jogamp.opengl.GL.GL_FRONT_AND_BACK;
 import com.jogamp.opengl.GL2;
 import com.jogamp.opengl.glu.GLU;
 import com.jogamp.opengl.glu.GLUquadric;
 import cz.fidentis.analyst.feature.FeaturePoint;
 import cz.fidentis.analyst.mesh.core.MeshFacet;
 import java.awt.Color;
-import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
 import javax.vecmath.Point3d;
 import javax.vecmath.Point4f;
 import javax.vecmath.Vector3d;
@@ -58,7 +54,7 @@ public class SceneRenderer {
 
         gl.glDepthFunc(GL2.GL_LESS);
         gl.glDepthRange(0.0, 1.0);
-        gl.glEnable(GL_DEPTH_TEST); 
+        gl.glEnable(GL.GL_DEPTH_TEST); 
 
         gl.glEnable(GL2.GL_NORMALIZE);
         gl.glDisable(GL2.GL_CULL_FACE);
@@ -129,7 +125,7 @@ public class SceneRenderer {
         }
         
         for (DrawableMesh obj: drawables) {
-            gl.glPolygonMode( GL_FRONT_AND_BACK, obj.getRenderMode());
+            gl.glPolygonMode(GL.GL_FRONT_AND_BACK, obj.getRenderMode());
             setMaterial(obj);
             gl.glPushMatrix();
             setTransformation(obj);
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.form b/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.form
index be6736fa..989be817 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.form
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.form
@@ -33,8 +33,6 @@
     <DimensionLayout dim="0">
       <Group type="103" groupAlignment="0" attributes="0">
           <Component id="jSeparator11" alignment="0" max="32767" attributes="0"/>
-          <Component id="jSeparator3" alignment="0" max="32767" attributes="0"/>
-          <Component id="jSeparator5" alignment="0" max="32767" attributes="0"/>
           <Group type="102" alignment="0" attributes="0">
               <EmptySpace max="-2" attributes="0"/>
               <Component id="registrationAdjustmentLabel" min="-2" max="-2" attributes="0"/>
@@ -51,14 +49,10 @@
               <EmptySpace max="-2" attributes="0"/>
               <Component id="jSeparator11" min="-2" pref="10" max="-2" attributes="0"/>
               <EmptySpace max="-2" attributes="0"/>
-              <Component id="visualizationPanel" min="-2" pref="238" max="-2" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jSeparator3" min="-2" pref="10" max="-2" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="transformationPanel" min="-2" pref="325" max="-2" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jSeparator5" min="-2" pref="10" max="-2" attributes="0"/>
-              <EmptySpace max="32767" attributes="0"/>
+              <Component id="visualizationPanel" min="-2" pref="247" max="-2" attributes="0"/>
+              <EmptySpace min="-2" pref="10" max="-2" attributes="0"/>
+              <Component id="transformationPanel" min="-2" pref="333" max="-2" attributes="0"/>
+              <EmptySpace pref="39" max="32767" attributes="0"/>
           </Group>
       </Group>
     </DimensionLayout>
@@ -101,14 +95,14 @@
                   </Group>
                   <EmptySpace max="32767" attributes="0"/>
               </Group>
+              <Component id="jSeparator3" alignment="0" 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="32767" attributes="0"/>
                   <Component id="visualizationLabel" min="-2" max="-2" attributes="0"/>
-                  <EmptySpace max="-2" attributes="0"/>
+                  <EmptySpace max="32767" attributes="0"/>
                   <Component id="jSeparator4" min="-2" pref="10" max="-2" attributes="0"/>
                   <EmptySpace max="-2" attributes="0"/>
                   <Component id="modelPanel" min="-2" max="-2" attributes="0"/>
@@ -120,7 +114,9 @@
                   <Component id="jSeparator1" min="-2" pref="10" max="-2" attributes="0"/>
                   <EmptySpace max="-2" attributes="0"/>
                   <Component id="featurePointsPanel" min="-2" max="-2" attributes="0"/>
-                  <EmptySpace min="-2" pref="35" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jSeparator3" min="-2" pref="10" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="19" max="-2" attributes="0"/>
               </Group>
           </Group>
         </DimensionLayout>
@@ -152,62 +148,66 @@
           <Layout>
             <DimensionLayout dim="0">
               <Group type="103" groupAlignment="0" attributes="0">
-                  <Group type="102" attributes="0">
-                      <Component id="modelLabel" min="-2" max="-2" attributes="0"/>
-                      <EmptySpace type="separate" max="-2" attributes="0"/>
-                      <Component id="colorButton" min="-2" pref="50" max="-2" attributes="0"/>
-                      <EmptySpace type="separate" max="-2" attributes="0"/>
-                      <Component id="highlightsLabel" min="-2" max="-2" attributes="0"/>
+                  <Group type="102" alignment="0" attributes="0">
                       <Group type="103" groupAlignment="0" attributes="0">
-                          <Group type="102" alignment="0" attributes="0">
-                              <EmptySpace min="-2" pref="49" max="-2" attributes="0"/>
-                              <Component id="linesLabel" min="-2" max="-2" attributes="0"/>
-                              <EmptySpace type="unrelated" max="-2" attributes="0"/>
-                              <Component id="pointsLabel" min="-2" max="-2" attributes="0"/>
-                          </Group>
-                          <Group type="102" alignment="0" attributes="0">
-                              <EmptySpace type="separate" max="-2" attributes="0"/>
-                              <Component id="renderModeLabel" min="-2" max="-2" attributes="0"/>
-                              <EmptySpace min="-2" pref="31" max="-2" attributes="0"/>
-                              <Component id="transparencyButton" min="-2" pref="50" max="-2" attributes="0"/>
-                          </Group>
-                      </Group>
-                  </Group>
-                  <Group type="102" attributes="0">
-                      <Group type="103" groupAlignment="0" max="-2" attributes="0">
-                          <Component id="secondaryLabel" alignment="0" max="32767" attributes="0"/>
                           <Component id="primaryLabel" alignment="0" min="-2" pref="58" max="-2" attributes="0"/>
+                          <Component id="modelLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Component id="secondaryLabel" alignment="0" pref="66" max="32767" attributes="0"/>
                       </Group>
                       <EmptySpace type="separate" max="-2" attributes="0"/>
                       <Group type="103" groupAlignment="0" attributes="0">
-                          <Component id="primaryColorPanel" min="-2" pref="50" max="-2" attributes="0"/>
-                          <Component id="secondaryColorPanel" min="-2" pref="50" max="-2" attributes="0"/>
-                      </Group>
-                      <EmptySpace type="separate" max="-2" attributes="0"/>
-                      <Group type="103" groupAlignment="0" attributes="0">
-                          <Component id="primaryHighlightsCB" min="-2" max="-2" attributes="0"/>
-                          <Component id="secondaryHighlightsCB" min="-2" max="-2" attributes="0"/>
-                      </Group>
-                      <EmptySpace min="-2" pref="28" max="-2" attributes="0"/>
-                      <Group type="103" groupAlignment="0" attributes="0">
-                          <Group type="102" alignment="0" attributes="0">
-                              <Component id="secondaryFillRB" min="-2" max="-2" attributes="0"/>
-                              <EmptySpace type="separate" max="-2" attributes="0"/>
-                              <Component id="secondaryLinesRB" min="-2" max="-2" attributes="0"/>
-                              <EmptySpace type="separate" max="-2" attributes="0"/>
-                              <Component id="secondaryPointsRB" min="-2" max="-2" attributes="0"/>
+                          <Group type="102" attributes="0">
+                              <Component id="colorButton" min="-2" pref="50" max="-2" attributes="0"/>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="highlightsLabel" min="-2" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <EmptySpace min="-2" pref="41" max="-2" attributes="0"/>
+                                      <Component id="linesLabel" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                                      <Component id="pointsLabel" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                                      <Component id="renderModeLabel" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace pref="21" max="32767" attributes="0"/>
+                                      <Component id="transparencyButton" min="-2" pref="50" max="-2" attributes="0"/>
+                                  </Group>
+                              </Group>
                           </Group>
-                          <Group type="102" alignment="0" attributes="0">
-                              <Component id="primaryFillRB" min="-2" max="-2" attributes="0"/>
-                              <EmptySpace type="separate" max="-2" attributes="0"/>
-                              <Component id="primaryLinesRB" min="-2" max="-2" attributes="0"/>
+                          <Group type="102" attributes="0">
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="primaryColorPanel" min="-2" pref="50" max="-2" attributes="0"/>
+                                  <Component id="secondaryColorPanel" min="-2" pref="50" max="-2" attributes="0"/>
+                              </Group>
                               <EmptySpace type="separate" max="-2" attributes="0"/>
-                              <Component id="primaryPointsRB" min="-2" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="primaryHighlightsCB" min="-2" max="-2" attributes="0"/>
+                                  <Component id="secondaryHighlightsCB" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace min="-2" pref="28" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Component id="secondaryFillRB" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                                      <Component id="secondaryLinesRB" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                                      <Component id="secondaryPointsRB" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Component id="primaryFillRB" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                                      <Component id="primaryLinesRB" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                                      <Component id="primaryPointsRB" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <Component id="fillLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace min="-2" pref="25" max="-2" attributes="0"/>
+                              <Component id="transparencySlider" min="-2" max="-2" attributes="0"/>
                           </Group>
-                          <Component id="fillLabel" alignment="0" min="-2" max="-2" attributes="0"/>
                       </Group>
-                      <EmptySpace min="-2" pref="25" max="-2" attributes="0"/>
-                      <Component id="transparencySlider" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
                   </Group>
               </Group>
             </DimensionLayout>
@@ -215,15 +215,13 @@
               <Group type="103" groupAlignment="0" attributes="0">
                   <Group type="102" alignment="0" attributes="0">
                       <Group type="103" groupAlignment="0" attributes="0">
-                          <Group type="103" groupAlignment="3" attributes="0">
-                              <Component id="modelLabel" alignment="3" min="-2" max="-2" attributes="0"/>
-                              <Component id="colorButton" alignment="3" min="-2" max="-2" attributes="0"/>
-                          </Group>
+                          <Component id="modelLabel" min="-2" max="-2" attributes="0"/>
                           <Group type="102" attributes="0">
                               <Group type="103" groupAlignment="3" attributes="0">
                                   <Component id="highlightsLabel" alignment="3" min="-2" max="-2" attributes="0"/>
                                   <Component id="renderModeLabel" alignment="3" min="-2" max="-2" attributes="0"/>
                                   <Component id="transparencyButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                                  <Component id="colorButton" alignment="3" min="-2" max="-2" attributes="0"/>
                               </Group>
                               <EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
                               <Group type="103" groupAlignment="3" attributes="0">
@@ -789,6 +787,7 @@
                 <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
                   <Color id="Default Cursor"/>
                 </Property>
+                <Property name="enabled" type="boolean" value="false"/>
                 <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
                   <Insets value="[0, 0, 0, 0]"/>
                 </Property>
@@ -823,6 +822,7 @@
                 <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
                   <Color id="Default Cursor"/>
                 </Property>
+                <Property name="enabled" type="boolean" value="false"/>
                 <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
                   <Insets value="[0, 0, 0, 0]"/>
                 </Property>
@@ -853,14 +853,19 @@
                     <TitledBorder/>
                   </Border>
                 </Property>
+                <Property name="enabled" type="boolean" value="false"/>
                 <Property name="opaque" type="boolean" value="false"/>
               </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="thersholdButtonActionPerformed"/>
+              </Events>
             </Component>
             <Component class="javax.swing.JFormattedTextField" name="thersholdFTF">
               <Properties>
                 <Property name="formatterFactory" type="javax.swing.JFormattedTextField$AbstractFormatterFactory" editor="org.netbeans.modules.form.editors.AbstractFormatterFactoryEditor">
                   <Format subtype="0" type="0"/>
                 </Property>
+                <Property name="enabled" type="boolean" value="false"/>
               </Properties>
               <Events>
                 <EventHandler event="propertyChange" listener="java.beans.PropertyChangeListener" parameters="java.beans.PropertyChangeEvent" handler="thersholdFTFPropertyChange"/>
@@ -878,6 +883,8 @@
             </Component>
           </SubComponents>
         </Container>
+        <Component class="javax.swing.JSeparator" name="jSeparator3">
+        </Component>
       </SubComponents>
     </Container>
     <Container class="javax.swing.JPanel" name="transformationPanel">
@@ -926,14 +933,14 @@
                   </Group>
                   <EmptySpace max="-2" attributes="0"/>
               </Group>
+              <Component id="jSeparator5" alignment="1" max="32767" attributes="0"/>
           </Group>
         </DimensionLayout>
         <DimensionLayout dim="1">
           <Group type="103" groupAlignment="0" attributes="0">
               <Group type="102" attributes="0">
-                  <EmptySpace max="-2" attributes="0"/>
                   <Component id="transformationLabel" min="-2" max="-2" attributes="0"/>
-                  <EmptySpace min="-2" pref="2" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="13" max="-2" attributes="0"/>
                   <Component id="jSeparator2" min="-2" pref="10" max="-2" attributes="0"/>
                   <EmptySpace min="-2" pref="1" max="-2" attributes="0"/>
                   <Component id="translationPanel" min="-2" max="-2" attributes="0"/>
@@ -950,7 +957,7 @@
                               <Component id="applyButton" min="-2" pref="27" max="-2" attributes="0"/>
                               <Component id="jSeparator10" min="-2" pref="62" max="-2" attributes="0"/>
                           </Group>
-                          <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                          <EmptySpace max="32767" attributes="0"/>
                       </Group>
                       <Group type="102" attributes="0">
                           <Group type="103" groupAlignment="0" attributes="0">
@@ -962,9 +969,10 @@
                               <Component id="precisionPanel" min="-2" max="-2" attributes="0"/>
                               <Component id="resetAllButton" alignment="0" min="-2" max="-2" attributes="0"/>
                           </Group>
-                          <EmptySpace max="32767" attributes="0"/>
+                          <EmptySpace pref="9" max="32767" attributes="0"/>
                       </Group>
                   </Group>
+                  <Component id="jSeparator5" min="-2" pref="10" max="-2" attributes="0"/>
               </Group>
           </Group>
         </DimensionLayout>
@@ -1127,7 +1135,7 @@
             <Component class="javax.swing.JButton" name="rightTranslationXButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/subtract-line.png"/>
+                  <Image iconType="3" name="/arrow-right-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.rightTranslationXButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1178,7 +1186,7 @@
             <Component class="javax.swing.JButton" name="leftTranslationYButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/add-line.png"/>
+                  <Image iconType="3" name="/arrow-left-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.leftTranslationYButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1217,7 +1225,7 @@
             <Component class="javax.swing.JButton" name="rightTranslationYButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/subtract-line.png"/>
+                  <Image iconType="3" name="/arrow-right-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.rightTranslationYButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1286,7 +1294,7 @@
             <Component class="javax.swing.JButton" name="rightTranslationZButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/subtract-line.png"/>
+                  <Image iconType="3" name="/arrow-right-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.rightTranslationZButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1315,7 +1323,7 @@
             <Component class="javax.swing.JButton" name="leftTranslationXButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/add-line.png"/>
+                  <Image iconType="3" name="/arrow-left-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.leftTranslationXButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1350,7 +1358,7 @@
             <Component class="javax.swing.JButton" name="leftTranslationZButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/add-line.png"/>
+                  <Image iconType="3" name="/arrow-left-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.leftTranslationZButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1486,7 +1494,7 @@
             <Component class="javax.swing.JButton" name="leftRotationYButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/add-line.png"/>
+                  <Image iconType="3" name="/arrow-left-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.leftRotationYButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1521,7 +1529,7 @@
             <Component class="javax.swing.JButton" name="leftRotationXButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/add-line.png"/>
+                  <Image iconType="3" name="/arrow-left-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.leftRotationXButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1628,7 +1636,7 @@
             <Component class="javax.swing.JButton" name="rightRotationZButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/subtract-line.png"/>
+                  <Image iconType="3" name="/arrow-right-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.rightRotationZButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1663,7 +1671,7 @@
             <Component class="javax.swing.JButton" name="rightRotationYButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/subtract-line.png"/>
+                  <Image iconType="3" name="/arrow-right-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.rightRotationYButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1698,7 +1706,7 @@
             <Component class="javax.swing.JButton" name="leftRotationZButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/add-line.png"/>
+                  <Image iconType="3" name="/arrow-left-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.leftRotationZButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1733,7 +1741,7 @@
             <Component class="javax.swing.JButton" name="rightRotationXButton">
               <Properties>
                 <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/subtract-line.png"/>
+                  <Image iconType="3" name="/arrow-right-s-line.png"/>
                 </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
                   <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.rightRotationXButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
@@ -1976,6 +1984,9 @@
             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
               <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.resetAllButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
             </Property>
+            <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+              <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.resetAllButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+            </Property>
             <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
               <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
                 <TitledBorder/>
@@ -2006,8 +2017,8 @@
                   <Group type="102" attributes="0">
                       <Group type="103" groupAlignment="0" attributes="0">
                           <Component id="jLabel5" alignment="0" min="-2" max="-2" attributes="0"/>
-                          <Component id="jRadioButton1" alignment="0" min="-2" max="-2" attributes="0"/>
-                          <Component id="jRadioButton2" min="-2" max="-2" attributes="0"/>
+                          <Component id="highPrecisionRB" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Component id="lowPrecisionRB" min="-2" max="-2" attributes="0"/>
                       </Group>
                       <EmptySpace min="0" pref="8" max="32767" attributes="0"/>
                   </Group>
@@ -2018,9 +2029,9 @@
                   <Group type="102" alignment="0" attributes="0">
                       <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
                       <EmptySpace max="-2" attributes="0"/>
-                      <Component id="jRadioButton1" min="-2" max="-2" attributes="0"/>
+                      <Component id="highPrecisionRB" min="-2" max="-2" attributes="0"/>
                       <EmptySpace max="-2" attributes="0"/>
-                      <Component id="jRadioButton2" min="-2" max="-2" attributes="0"/>
+                      <Component id="lowPrecisionRB" min="-2" max="-2" attributes="0"/>
                       <EmptySpace max="32767" attributes="0"/>
                   </Group>
               </Group>
@@ -2037,21 +2048,39 @@
                 </Property>
               </Properties>
             </Component>
-            <Component class="javax.swing.JRadioButton" name="jRadioButton1">
+            <Component class="javax.swing.JRadioButton" name="highPrecisionRB">
               <Properties>
+                <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+                  <ComponentRef name="precisionGroup"/>
+                </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-                  <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.jRadioButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+                  <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.highPrecisionRB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+                </Property>
+                <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+                  <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.highPrecisionRB.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
                 </Property>
                 <Property name="opaque" type="boolean" value="false"/>
               </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="highPrecisionRBActionPerformed"/>
+              </Events>
             </Component>
-            <Component class="javax.swing.JRadioButton" name="jRadioButton2">
+            <Component class="javax.swing.JRadioButton" name="lowPrecisionRB">
               <Properties>
+                <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+                  <ComponentRef name="precisionGroup"/>
+                </Property>
                 <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-                  <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.jRadioButton2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+                  <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.lowPrecisionRB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+                </Property>
+                <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+                  <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.lowPrecisionRB.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
                 </Property>
                 <Property name="opaque" type="boolean" value="false"/>
               </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lowPrecisionRBActionPerformed"/>
+              </Events>
             </Component>
           </SubComponents>
         </Container>
@@ -2065,6 +2094,9 @@
             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
               <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.applyButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
             </Property>
+            <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+              <ResourceString bundle="cz/fidentis/analyst/gui/tab/Bundle.properties" key="PostRegistrationCP.applyButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+            </Property>
             <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
               <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
                 <TitledBorder/>
@@ -2082,11 +2114,9 @@
             <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="applyButtonActionPerformed"/>
           </Events>
         </Component>
+        <Component class="javax.swing.JSeparator" name="jSeparator5">
+        </Component>
       </SubComponents>
     </Container>
-    <Component class="javax.swing.JSeparator" name="jSeparator3">
-    </Component>
-    <Component class="javax.swing.JSeparator" name="jSeparator5">
-    </Component>
   </SubComponents>
 </Form>
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.java b/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.java
index cb9bf0a3..0a29e6dc 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.java
@@ -36,6 +36,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         secondaryColorPanel.setBackground(listener.defaultSecondaryColor);
         primaryFillRB.setSelected(true);
         secondaryFillRB.setSelected(true);
+        highPrecisionRB.setSelected(true);
         thersholdFTF.setValue(listener.getFeaturePointsThreshold());
         resetAllButtonActionPerformed(null);
     }
@@ -44,59 +45,59 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         double newValue;
         switch (dir) {
             case TRANSLATE_LEFT:
-                newValue = ((Number)translationXFTF.getValue()).doubleValue() + listener.baseTranslation;
+                newValue = ((Number)translationXFTF.getValue()).doubleValue() - listener.getMoveModifier();
                 translationXFTF.setValue(newValue);
                 break;
             case TRANSLATE_RIGHT:
-                newValue = ((Number)translationXFTF.getValue()).doubleValue() - listener.baseTranslation;
+                newValue = ((Number)translationXFTF.getValue()).doubleValue() + listener.getMoveModifier();
                 translationXFTF.setValue(newValue);
                 break;
             case TRANSLATE_UP:
-                newValue = ((Number)translationYFTF.getValue()).doubleValue() + listener.baseTranslation;
+                newValue = ((Number)translationYFTF.getValue()).doubleValue() - listener.getMoveModifier();
                 translationYFTF.setValue(newValue);
                 break;
             case TRANSLATE_DOWN:
-                newValue = ((Number)translationYFTF.getValue()).doubleValue() - listener.baseTranslation;
+                newValue = ((Number)translationYFTF.getValue()).doubleValue() + listener.getMoveModifier();
                 translationYFTF.setValue(newValue);
                 break;
             case TRANSLATE_IN:
-                newValue = ((Number)translationZFTF.getValue()).doubleValue() + listener.baseTranslation;
+                newValue = ((Number)translationZFTF.getValue()).doubleValue() - listener.getMoveModifier();
                 translationZFTF.setValue(newValue);
                 break;
             case TRANSLATE_OUT:
-                newValue = ((Number)translationZFTF.getValue()).doubleValue() - listener.baseTranslation;
+                newValue = ((Number)translationZFTF.getValue()).doubleValue() + listener.getMoveModifier();
                 translationZFTF.setValue(newValue);
                 break;
             case ROTATE_LEFT:
-                newValue = ((Number)rotationXFTF.getValue()).doubleValue() + listener.baseRotation;
+                newValue = ((Number)rotationXFTF.getValue()).doubleValue() - listener.getMoveModifier();
                 rotationXFTF.setValue(newValue);
                 break;
             case ROTATE_RIGHT:
-                newValue = ((Number)rotationXFTF.getValue()).doubleValue() - listener.baseRotation;
+                newValue = ((Number)rotationXFTF.getValue()).doubleValue() + listener.getMoveModifier();
                 rotationXFTF.setValue(newValue);
                 break;
             case ROTATE_UP:
-                newValue = ((Number)rotationYFTF.getValue()).doubleValue() + listener.baseRotation;
+                newValue = ((Number)rotationYFTF.getValue()).doubleValue() - listener.getMoveModifier();
                 rotationYFTF.setValue(newValue);
                 break;
             case ROTATE_DOWN:
-                newValue = ((Number)rotationYFTF.getValue()).doubleValue() - listener.baseRotation;
+                newValue = ((Number)rotationYFTF.getValue()).doubleValue() + listener.getMoveModifier();
                 rotationYFTF.setValue(newValue);
                 break;
             case ROTATE_IN:
-                newValue = ((Number)rotationZFTF.getValue()).doubleValue() + listener.baseRotation;
+                newValue = ((Number)rotationZFTF.getValue()).doubleValue() - listener.getMoveModifier();
                 rotationZFTF.setValue(newValue);
                 break;
             case ROTATE_OUT:
-                newValue = ((Number)rotationZFTF.getValue()).doubleValue() - listener.baseRotation;
+                newValue = ((Number)rotationZFTF.getValue()).doubleValue() + listener.getMoveModifier();
                 rotationZFTF.setValue(newValue);
                 break;
             case ZOOM_OUT:
-                newValue = ((Number)scaleFTF.getValue()).doubleValue() - listener.baseScale;
+                newValue = ((Number)scaleFTF.getValue()).doubleValue() - listener.getMoveModifier();
                 scaleFTF.setValue(newValue);
                 break;
             case ZOOM_IN:
-                newValue = ((Number)scaleFTF.getValue()).doubleValue() + listener.baseScale;
+                newValue = ((Number)scaleFTF.getValue()).doubleValue() + listener.getMoveModifier();
                 scaleFTF.setValue(newValue);
                 break;
             default:
@@ -156,6 +157,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         thersholdButton = new javax.swing.JButton();
         thersholdFTF = new javax.swing.JFormattedTextField();
         featurePointsLabel = new javax.swing.JLabel();
+        jSeparator3 = new javax.swing.JSeparator();
         transformationPanel = new javax.swing.JPanel();
         transformationLabel = new javax.swing.JLabel();
         jSeparator2 = new javax.swing.JSeparator();
@@ -201,11 +203,10 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         jSeparator9 = new javax.swing.JSeparator();
         precisionPanel = new javax.swing.JPanel();
         jLabel5 = new javax.swing.JLabel();
-        jRadioButton1 = new javax.swing.JRadioButton();
-        jRadioButton2 = new javax.swing.JRadioButton();
+        highPrecisionRB = new javax.swing.JRadioButton();
+        lowPrecisionRB = new javax.swing.JRadioButton();
         jSeparator10 = new javax.swing.JSeparator();
         applyButton = new javax.swing.JButton();
-        jSeparator3 = new javax.swing.JSeparator();
         jSeparator5 = new javax.swing.JSeparator();
 
         setBackground(new java.awt.Color(176, 230, 226));
@@ -409,64 +410,65 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         modelPanelLayout.setHorizontalGroup(
             modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(modelPanelLayout.createSequentialGroup()
-                .addComponent(modelLabel)
-                .addGap(18, 18, 18)
-                .addComponent(colorButton, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addGap(18, 18, 18)
-                .addComponent(highlightsLabel)
-                .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addGroup(modelPanelLayout.createSequentialGroup()
-                        .addGap(49, 49, 49)
-                        .addComponent(linesLabel)
-                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
-                        .addComponent(pointsLabel))
-                    .addGroup(modelPanelLayout.createSequentialGroup()
-                        .addGap(18, 18, 18)
-                        .addComponent(renderModeLabel)
-                        .addGap(31, 31, 31)
-                        .addComponent(transparencyButton, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))))
-            .addGroup(modelPanelLayout.createSequentialGroup()
-                .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
-                    .addComponent(secondaryLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                    .addComponent(primaryLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE))
-                .addGap(18, 18, 18)
                 .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addComponent(primaryColorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
-                    .addComponent(secondaryColorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
+                    .addComponent(primaryLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(modelLabel)
+                    .addComponent(secondaryLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE))
                 .addGap(18, 18, 18)
-                .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addComponent(primaryHighlightsCB)
-                    .addComponent(secondaryHighlightsCB))
-                .addGap(28, 28, 28)
                 .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                     .addGroup(modelPanelLayout.createSequentialGroup()
-                        .addComponent(secondaryFillRB)
-                        .addGap(18, 18, 18)
-                        .addComponent(secondaryLinesRB)
-                        .addGap(18, 18, 18)
-                        .addComponent(secondaryPointsRB))
+                        .addComponent(colorButton, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(highlightsLabel)
+                        .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addGroup(modelPanelLayout.createSequentialGroup()
+                                .addGap(41, 41, 41)
+                                .addComponent(linesLabel)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                                .addComponent(pointsLabel))
+                            .addGroup(modelPanelLayout.createSequentialGroup()
+                                .addGap(18, 18, 18)
+                                .addComponent(renderModeLabel)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 21, Short.MAX_VALUE)
+                                .addComponent(transparencyButton, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))))
                     .addGroup(modelPanelLayout.createSequentialGroup()
-                        .addComponent(primaryFillRB)
-                        .addGap(18, 18, 18)
-                        .addComponent(primaryLinesRB)
+                        .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(primaryColorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addComponent(secondaryColorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
                         .addGap(18, 18, 18)
-                        .addComponent(primaryPointsRB))
-                    .addComponent(fillLabel))
-                .addGap(25, 25, 25)
-                .addComponent(transparencySlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                        .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(primaryHighlightsCB)
+                            .addComponent(secondaryHighlightsCB))
+                        .addGap(28, 28, 28)
+                        .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addGroup(modelPanelLayout.createSequentialGroup()
+                                .addComponent(secondaryFillRB)
+                                .addGap(18, 18, 18)
+                                .addComponent(secondaryLinesRB)
+                                .addGap(18, 18, 18)
+                                .addComponent(secondaryPointsRB))
+                            .addGroup(modelPanelLayout.createSequentialGroup()
+                                .addComponent(primaryFillRB)
+                                .addGap(18, 18, 18)
+                                .addComponent(primaryLinesRB)
+                                .addGap(18, 18, 18)
+                                .addComponent(primaryPointsRB))
+                            .addComponent(fillLabel))
+                        .addGap(25, 25, 25)
+                        .addComponent(transparencySlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                .addContainerGap())
         );
         modelPanelLayout.setVerticalGroup(
             modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(modelPanelLayout.createSequentialGroup()
                 .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                        .addComponent(modelLabel)
-                        .addComponent(colorButton))
+                    .addComponent(modelLabel)
                     .addGroup(modelPanelLayout.createSequentialGroup()
                         .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                             .addComponent(highlightsLabel)
                             .addComponent(renderModeLabel)
-                            .addComponent(transparencyButton))
+                            .addComponent(transparencyButton)
+                            .addComponent(colorButton))
                         .addGap(4, 4, 4)
                         .addGroup(modelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                             .addComponent(fillLabel)
@@ -566,6 +568,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         org.openide.awt.Mnemonics.setLocalizedText(thresholdDownButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.thresholdDownButton.text")); // NOI18N
         thresholdDownButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         thresholdDownButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+        thresholdDownButton.setEnabled(false);
         thresholdDownButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
         thresholdDownButton.setMaximumSize(new java.awt.Dimension(24, 24));
         thresholdDownButton.setMinimumSize(new java.awt.Dimension(24, 24));
@@ -581,6 +584,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         org.openide.awt.Mnemonics.setLocalizedText(thersholdUpButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.thersholdUpButton.text")); // NOI18N
         thersholdUpButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         thersholdUpButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+        thersholdUpButton.setEnabled(false);
         thersholdUpButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
         thersholdUpButton.setMaximumSize(new java.awt.Dimension(24, 24));
         thersholdUpButton.setMinimumSize(new java.awt.Dimension(24, 24));
@@ -594,9 +598,16 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         thersholdButton.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(thersholdButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.thersholdButton.text")); // NOI18N
         thersholdButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
+        thersholdButton.setEnabled(false);
         thersholdButton.setOpaque(false);
+        thersholdButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                thersholdButtonActionPerformed(evt);
+            }
+        });
 
         thersholdFTF.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter()));
+        thersholdFTF.setEnabled(false);
         thersholdFTF.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
             public void propertyChange(java.beans.PropertyChangeEvent evt) {
                 thersholdFTFPropertyChange(evt);
@@ -650,13 +661,13 @@ public class PostRegistrationCP extends javax.swing.JPanel {
                     .addComponent(viewPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                     .addComponent(featurePointsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+            .addComponent(jSeparator3)
         );
         visualizationPanelLayout.setVerticalGroup(
             visualizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, visualizationPanelLayout.createSequentialGroup()
-                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                 .addComponent(visualizationLabel)
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                 .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                 .addComponent(modelPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
@@ -668,7 +679,9 @@ public class PostRegistrationCP extends javax.swing.JPanel {
                 .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                 .addComponent(featurePointsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addGap(35, 35, 35))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(19, 19, 19))
         );
 
         transformationPanel.setBackground(new java.awt.Color(176, 230, 226));
@@ -695,7 +708,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         jLabel2.setFont(new java.awt.Font("Tahoma", 3, 11)); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.jLabel2.text")); // NOI18N
 
-        rightTranslationXButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/subtract-line.png"))); // NOI18N
+        rightTranslationXButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-right-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(rightTranslationXButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.rightTranslationXButton.text")); // NOI18N
         rightTranslationXButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         rightTranslationXButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -722,7 +735,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        leftTranslationYButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/add-line.png"))); // NOI18N
+        leftTranslationYButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-left-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(leftTranslationYButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.leftTranslationYButton.text")); // NOI18N
         leftTranslationYButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         leftTranslationYButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -745,7 +758,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        rightTranslationYButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/subtract-line.png"))); // NOI18N
+        rightTranslationYButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-right-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(rightTranslationYButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.rightTranslationYButton.text")); // NOI18N
         rightTranslationYButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         rightTranslationYButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -777,7 +790,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         translYLabel.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(translYLabel, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.translYLabel.text")); // NOI18N
 
-        rightTranslationZButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/subtract-line.png"))); // NOI18N
+        rightTranslationZButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-right-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(rightTranslationZButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.rightTranslationZButton.text")); // NOI18N
         rightTranslationZButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         rightTranslationZButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -793,7 +806,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        leftTranslationXButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/add-line.png"))); // NOI18N
+        leftTranslationXButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-left-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(leftTranslationXButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.leftTranslationXButton.text")); // NOI18N
         leftTranslationXButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         leftTranslationXButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -811,7 +824,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        leftTranslationZButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/add-line.png"))); // NOI18N
+        leftTranslationZButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-left-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(leftTranslationZButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.leftTranslationZButton.text")); // NOI18N
         leftTranslationZButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         leftTranslationZButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -900,7 +913,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
 
         rotationPanel.setBackground(new java.awt.Color(176, 230, 226));
 
-        leftRotationYButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/add-line.png"))); // NOI18N
+        leftRotationYButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-left-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(leftRotationYButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.leftRotationYButton.text")); // NOI18N
         leftRotationYButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         leftRotationYButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -918,7 +931,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        leftRotationXButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/add-line.png"))); // NOI18N
+        leftRotationXButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-left-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(leftRotationXButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.leftRotationXButton.text")); // NOI18N
         leftRotationXButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         leftRotationXButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -970,7 +983,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        rightRotationZButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/subtract-line.png"))); // NOI18N
+        rightRotationZButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-right-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(rightRotationZButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.rightRotationZButton.text")); // NOI18N
         rightRotationZButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         rightRotationZButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -988,7 +1001,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        rightRotationYButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/subtract-line.png"))); // NOI18N
+        rightRotationYButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-right-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(rightRotationYButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.rightRotationYButton.text")); // NOI18N
         rightRotationYButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         rightRotationYButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -1006,7 +1019,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        leftRotationZButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/add-line.png"))); // NOI18N
+        leftRotationZButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-left-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(leftRotationZButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.leftRotationZButton.text")); // NOI18N
         leftRotationZButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         leftRotationZButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -1024,7 +1037,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             }
         });
 
-        rightRotationXButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/subtract-line.png"))); // NOI18N
+        rightRotationXButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/arrow-right-s-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(rightRotationXButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.rightRotationXButton.text")); // NOI18N
         rightRotationXButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         rightRotationXButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -1227,6 +1240,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
 
         resetAllButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/refresh-line.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(resetAllButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.resetAllButton.text")); // NOI18N
+        resetAllButton.setToolTipText(org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.resetAllButton.toolTipText")); // NOI18N
         resetAllButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         resetAllButton.addActionListener(new java.awt.event.ActionListener() {
             public void actionPerformed(java.awt.event.ActionEvent evt) {
@@ -1241,11 +1255,25 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         jLabel5.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.jLabel5.text")); // NOI18N
 
-        org.openide.awt.Mnemonics.setLocalizedText(jRadioButton1, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.jRadioButton1.text")); // NOI18N
-        jRadioButton1.setOpaque(false);
+        precisionGroup.add(highPrecisionRB);
+        org.openide.awt.Mnemonics.setLocalizedText(highPrecisionRB, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.highPrecisionRB.text")); // NOI18N
+        highPrecisionRB.setToolTipText(org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.highPrecisionRB.toolTipText")); // NOI18N
+        highPrecisionRB.setOpaque(false);
+        highPrecisionRB.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                highPrecisionRBActionPerformed(evt);
+            }
+        });
 
-        org.openide.awt.Mnemonics.setLocalizedText(jRadioButton2, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.jRadioButton2.text")); // NOI18N
-        jRadioButton2.setOpaque(false);
+        precisionGroup.add(lowPrecisionRB);
+        org.openide.awt.Mnemonics.setLocalizedText(lowPrecisionRB, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.lowPrecisionRB.text")); // NOI18N
+        lowPrecisionRB.setToolTipText(org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.lowPrecisionRB.toolTipText")); // NOI18N
+        lowPrecisionRB.setOpaque(false);
+        lowPrecisionRB.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                lowPrecisionRBActionPerformed(evt);
+            }
+        });
 
         javax.swing.GroupLayout precisionPanelLayout = new javax.swing.GroupLayout(precisionPanel);
         precisionPanel.setLayout(precisionPanelLayout);
@@ -1254,8 +1282,8 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             .addGroup(precisionPanelLayout.createSequentialGroup()
                 .addGroup(precisionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                     .addComponent(jLabel5)
-                    .addComponent(jRadioButton1)
-                    .addComponent(jRadioButton2))
+                    .addComponent(highPrecisionRB)
+                    .addComponent(lowPrecisionRB))
                 .addGap(0, 8, Short.MAX_VALUE))
         );
         precisionPanelLayout.setVerticalGroup(
@@ -1263,15 +1291,16 @@ public class PostRegistrationCP extends javax.swing.JPanel {
             .addGroup(precisionPanelLayout.createSequentialGroup()
                 .addComponent(jLabel5)
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(jRadioButton1)
+                .addComponent(highPrecisionRB)
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(jRadioButton2)
+                .addComponent(lowPrecisionRB)
                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
         );
 
         jSeparator10.setOrientation(javax.swing.SwingConstants.VERTICAL);
 
         org.openide.awt.Mnemonics.setLocalizedText(applyButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.applyButton.text")); // NOI18N
+        applyButton.setToolTipText(org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.applyButton.toolTipText")); // NOI18N
         applyButton.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
         applyButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
         applyButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
@@ -1312,13 +1341,13 @@ public class PostRegistrationCP extends javax.swing.JPanel {
                                     .addComponent(applyButton, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE))))
                         .addGap(0, 9, Short.MAX_VALUE)))
                 .addContainerGap())
+            .addComponent(jSeparator5, javax.swing.GroupLayout.Alignment.TRAILING)
         );
         transformationPanelLayout.setVerticalGroup(
             transformationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(transformationPanelLayout.createSequentialGroup()
-                .addContainerGap()
                 .addComponent(transformationLabel)
-                .addGap(2, 2, 2)
+                .addGap(13, 13, 13)
                 .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                 .addGap(1, 1, 1)
                 .addComponent(translationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
@@ -1334,7 +1363,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
                         .addGroup(transformationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                             .addComponent(applyButton, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
                             .addComponent(jSeparator10, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))
-                        .addGap(0, 0, Short.MAX_VALUE))
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                     .addGroup(transformationPanelLayout.createSequentialGroup()
                         .addGroup(transformationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                             .addGroup(transformationPanelLayout.createSequentialGroup()
@@ -1343,7 +1372,8 @@ public class PostRegistrationCP extends javax.swing.JPanel {
                             .addComponent(jSeparator9, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                             .addComponent(precisionPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                             .addComponent(resetAllButton))
-                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9, Short.MAX_VALUE)))
+                .addComponent(jSeparator5, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE))
         );
 
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
@@ -1351,8 +1381,6 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         layout.setHorizontalGroup(
             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addComponent(jSeparator11)
-            .addComponent(jSeparator3)
-            .addComponent(jSeparator5)
             .addGroup(layout.createSequentialGroup()
                 .addContainerGap()
                 .addComponent(registrationAdjustmentLabel))
@@ -1367,39 +1395,75 @@ public class PostRegistrationCP extends javax.swing.JPanel {
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                 .addComponent(jSeparator11, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(visualizationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 238, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(transformationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 325, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(jSeparator5, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                .addComponent(visualizationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 247, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(10, 10, 10)
+                .addComponent(transformationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 333, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(39, Short.MAX_VALUE))
         );
     }// </editor-fold>//GEN-END:initComponents
 
     private void primaryColorPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_primaryColorPanelMouseClicked
+        if (transparencySlider.getValue() == 0) {
+            return;
+        }
         Color current = primaryColorPanel.getBackground();
         Color newColor = JColorChooser.showDialog(null, "Choose a color", current);
-        primaryColorPanel.setBackground(newColor);
-        listener.setPrimaryColor(newColor);
+            if (newColor != null) {
+            primaryColorPanel.setBackground(newColor);
+            listener.setPrimaryColor(newColor);
+        }
     }//GEN-LAST:event_primaryColorPanelMouseClicked
 
     private void secondaryColorPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_secondaryColorPanelMouseClicked
+        if (transparencySlider.getValue() == 2*listener.transparencyRange) {
+            return;
+        }
         Color current = secondaryColorPanel.getBackground();
         Color newColor = JColorChooser.showDialog(null, "Choose a color", current);
-        secondaryColorPanel.setBackground(newColor);
-        listener.setSecondaryColor(newColor);
+        if (newColor != null) {
+            secondaryColorPanel.setBackground(newColor);
+            listener.setSecondaryColor(newColor);
+        }
     }//GEN-LAST:event_secondaryColorPanelMouseClicked
 
     private void transparencyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_transparencyButtonActionPerformed
-        listener.setTransparency(10);
         transparencySlider.setValue(10);
         transparencySlider.repaint();
+        listener.setTransparency(10);
     }//GEN-LAST:event_transparencyButtonActionPerformed
 
     private void transparencySliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_transparencySliderStateChanged
-        listener.setTransparency(transparencySlider.getValue());
+        int transparency = transparencySlider.getValue();
+        if (transparency == 0) {
+            primaryColorPanel.setBackground(Color.lightGray);
+            primaryHighlightsCB.setEnabled(false);
+            primaryHighlightsCB.setEnabled(false);
+            primaryFillRB.setEnabled(false);
+            primaryLinesRB.setEnabled(false);
+            primaryPointsRB.setEnabled(false);
+        } else if (transparency == 2*listener.transparencyRange) {
+            secondaryColorPanel.setBackground(Color.lightGray);
+            secondaryHighlightsCB.setEnabled(false);
+            secondaryHighlightsCB.setEnabled(false);
+            secondaryFillRB.setEnabled(false);
+            secondaryLinesRB.setEnabled(false);
+            secondaryPointsRB.setEnabled(false);
+        } else if (!primaryFillRB.isEnabled()) {
+            primaryColorPanel.setBackground(listener.getPrimaryColor());
+            primaryHighlightsCB.setEnabled(true);
+            primaryHighlightsCB.setEnabled(true);
+            primaryFillRB.setEnabled(true);
+            primaryLinesRB.setEnabled(true);
+            primaryPointsRB.setEnabled(true);
+        } else if (!secondaryFillRB.isEnabled()) {
+            secondaryColorPanel.setBackground(listener.getSecondaryColor());
+            secondaryHighlightsCB.setEnabled(true);
+            secondaryHighlightsCB.setEnabled(true);
+            secondaryFillRB.setEnabled(true);
+            secondaryLinesRB.setEnabled(true);
+            secondaryPointsRB.setEnabled(true);
+        }
+        listener.setTransparency(transparency);
     }//GEN-LAST:event_transparencySliderStateChanged
 
     private void frontButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_frontButtonActionPerformed
@@ -1430,8 +1494,6 @@ public class PostRegistrationCP extends javax.swing.JPanel {
     }//GEN-LAST:event_scaleButtonActionPerformed
 
     private void resetAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetAllButtonActionPerformed
-        colorButtonActionPerformed(evt);
-        transparencyButtonActionPerformed(evt);
         translationButtonActionPerformed(evt);
         rotationButtonActionPerformed(evt);
         scaleButtonActionPerformed(evt);
@@ -1523,11 +1585,19 @@ public class PostRegistrationCP extends javax.swing.JPanel {
 
     private void featurePointsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_featurePointsButtonActionPerformed
         if (listener.isFeaturePointsActive()) {
-            listener.setFeaturePointsActive(false);
             featurePointsButton.setText("show");
+            thersholdButton.setEnabled(false);
+            thersholdFTF.setEnabled(false);
+            thersholdUpButton.setEnabled(false);
+            thresholdDownButton.setEnabled(false);
+            listener.setFeaturePointsActive(false);
         } else {
-            listener.setFeaturePointsActive(true);
             featurePointsButton.setText("hide");
+            thersholdButton.setEnabled(true);
+            thersholdFTF.setEnabled(true);
+            thersholdUpButton.setEnabled(true);
+            thresholdDownButton.setEnabled(true);
+            listener.setFeaturePointsActive(true);
         }
     }//GEN-LAST:event_featurePointsButtonActionPerformed
 
@@ -1657,6 +1727,18 @@ public class PostRegistrationCP extends javax.swing.JPanel {
         thersholdFTF.setValue(newValue);
     }//GEN-LAST:event_thersholdUpButtonActionPerformed
 
+    private void thersholdButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_thersholdButtonActionPerformed
+        thersholdFTF.setValue(listener.getFeaturePointsThreshold());
+    }//GEN-LAST:event_thersholdButtonActionPerformed
+
+    private void highPrecisionRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_highPrecisionRBActionPerformed
+        listener.setMoveModifier(listener.precisionQuotient);
+    }//GEN-LAST:event_highPrecisionRBActionPerformed
+
+    private void lowPrecisionRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lowPrecisionRBActionPerformed
+        listener.setMoveModifier(listener.baseQuotient);
+    }//GEN-LAST:event_lowPrecisionRBActionPerformed
+
 
     // Variables declaration - do not modify//GEN-BEGIN:variables
     private javax.swing.JButton applyButton;
@@ -1666,13 +1748,12 @@ public class PostRegistrationCP extends javax.swing.JPanel {
     private javax.swing.JPanel featurePointsPanel;
     private javax.swing.JLabel fillLabel;
     private javax.swing.JButton frontButton;
+    private javax.swing.JRadioButton highPrecisionRB;
     private javax.swing.JLabel highlightsLabel;
     private javax.swing.JLabel jLabel2;
     private javax.swing.JLabel jLabel3;
     private javax.swing.JLabel jLabel4;
     private javax.swing.JLabel jLabel5;
-    private javax.swing.JRadioButton jRadioButton1;
-    private javax.swing.JRadioButton jRadioButton2;
     private javax.swing.JSeparator jSeparator1;
     private javax.swing.JSeparator jSeparator10;
     private javax.swing.JSeparator jSeparator11;
@@ -1691,6 +1772,7 @@ public class PostRegistrationCP extends javax.swing.JPanel {
     private javax.swing.JButton leftTranslationYButton;
     private javax.swing.JButton leftTranslationZButton;
     private javax.swing.JLabel linesLabel;
+    private javax.swing.JRadioButton lowPrecisionRB;
     private javax.swing.JLabel modelLabel;
     private javax.swing.JPanel modelPanel;
     private javax.swing.JLabel pointsLabel;
diff --git a/GUI/src/main/resources/arrow-left-s-line.png b/GUI/src/main/resources/arrow-left-s-line.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e1b29e5762b88b84515113ea8fb0d1e61ecc0ea
GIT binary patch
literal 206
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjQ$1ZALp;3SUUB4YFyLu@SkE`1
zK_sAo<$xfcgOJdK29`}Ng$j*Z``@_bpPu$z_w6Q!hg_|ne>Uc{@87b5ZQGm$Oxzb3
zbvNu&<Ptdi+qi_~(XWkr8nkUz$sLe=$GD_GTcJI=k#WXa=e_>7t(YY@GJQ-Edc>%5
zgnNe|tH%iz6V-iPUjnoe^uOMGTC~1)tE+v&JBM!%7{#TeB;QG=3jiI+;OXk;vd$@?
F2>`W3O%DJ7

literal 0
HcmV?d00001

diff --git a/GUI/src/main/resources/arrow-right-s-line.png b/GUI/src/main/resources/arrow-right-s-line.png
new file mode 100644
index 0000000000000000000000000000000000000000..44e603c907aa6ea11ea5f54747c25ed011d2f6e3
GIT binary patch
literal 210
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjGd*1#Lp;3SUOC9yY#`ur(Vtzj
zQ7B00rGl&@=Sv1JPfkt7wIYgqZq}PSr0s5hej<BXR($=tM>Tm0b2nHmlKZhNvzM3a
z154Ti<~=bkjBE*i*!}euF-(kg3t7-(;lNqQC~e7oWOdgg{^{IrPWv5pE@iO3!|3%;
zD}XP&@rRb!gSn!&vZCHTVEl8Z-ea$$YPt2|dkcE*I9Tlx?PrpbjG6R08|X*|Pgg&e
IbxsLQ08;TvjQ{`u

literal 0
HcmV?d00001

diff --git a/GUI/src/main/resources/cz/fidentis/analyst/gui/tab/Bundle.properties b/GUI/src/main/resources/cz/fidentis/analyst/gui/tab/Bundle.properties
index e6d8ce52..abd35b6c 100644
--- a/GUI/src/main/resources/cz/fidentis/analyst/gui/tab/Bundle.properties
+++ b/GUI/src/main/resources/cz/fidentis/analyst/gui/tab/Bundle.properties
@@ -77,8 +77,12 @@ PostRegistrationCP.jFormattedTextField1.text=jFormattedTextField1
 PostRegistrationCP.thresholdDownButton.text=
 PostRegistrationCP.thersholdUpButton.text=
 PostRegistrationCP.jLabel5.text=precision
-PostRegistrationCP.jRadioButton1.text=high
-PostRegistrationCP.jRadioButton2.text=low
 PostRegistrationCP.thersholdButton.text=thershold
-PostRegistrationCP.visualizationLabel.text=Vsualization
+PostRegistrationCP.visualizationLabel.text=Visualization
 PostRegistrationCP.registrationAdjustmentLabel.text=Registration adjustment
+PostRegistrationCP.highPrecisionRB.text=high
+PostRegistrationCP.lowPrecisionRB.text=low
+PostRegistrationCP.resetAllButton.toolTipText=reset all transformations
+PostRegistrationCP.applyButton.toolTipText=apply transformations
+PostRegistrationCP.highPrecisionRB.toolTipText=set high precision
+PostRegistrationCP.lowPrecisionRB.toolTipText=set low precision
-- 
GitLab