diff --git a/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java b/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java
index bd573f0c39d6d5e7f18572d491f48dbccc2394b5..38e786bb182d217672a1c1e0f464b1eaf8ccdf20 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java
@@ -4,12 +4,14 @@ import cz.fidentis.analyst.canvas.Canvas;
 import cz.fidentis.analyst.core.LoadedActionEvent;
 import cz.fidentis.analyst.core.ControlPanelAction;
 import cz.fidentis.analyst.feature.FeaturePointType;
+import cz.fidentis.analyst.mesh.core.MeshFacet;
 import cz.fidentis.analyst.scene.DrawableFeaturePoints;
 import cz.fidentis.analyst.visitors.face.HausdorffDistancePrioritized;
 import cz.fidentis.analyst.visitors.mesh.HausdorffDistance.Strategy;
 import java.awt.Color;
 import java.awt.event.ActionEvent;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import javax.swing.JComboBox;
 import javax.swing.JTabbedPane;
@@ -31,6 +33,7 @@ public class DistanceAction extends ControlPanelAction {
     private final Map<FeaturePointType, Double> featurePointTypes = new HashMap<>();
     private String strategy = DistancePanel.STRATEGY_POINT_TO_POINT;
     private boolean relativeDist = false;
+    private boolean weightedDist = false;
     
     private final DistancePanel controlPanel;
     
@@ -77,6 +80,8 @@ public class DistanceAction extends ControlPanelAction {
             case DistancePanel.ACTION_COMMAND_FEATURE_POINT_RESIZE:
                 resizeFeaturePoint((LoadedActionEvent) ae);
                 break;
+            case DistancePanel.ACTION_COMMAND_WEIGHTED_DISTANCE:
+                this.weightedDist = ((JToggleButton) ae.getSource()).isSelected();
             case DistancePanel.ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE:
                 this.visitor = null; // recompute
                 setHeatmap();
@@ -109,9 +114,17 @@ public class DistanceAction extends ControlPanelAction {
             getSecondaryDrawableFace().getHumanFace().accept(visitor);
         }
         
-        getSecondaryDrawableFace().setHeatMap(visitor.getDistances());
+        getSecondaryDrawableFace().setHeatMap(calculateHausdorffDistance());
     }
 
+    private Map<MeshFacet, List<Double>> calculateHausdorffDistance() {
+        if (weightedDist) {
+            // TODO Merge the map of distances with the map of priorities
+        }
+        
+        return visitor.getDistances();
+    }
+    
     private void highlightFeaturePoint(LoadedActionEvent actionEvent) {
         final int index = (int) actionEvent.getData();
         final FeaturePointType fpType = getTypeOfFeaturePoint(index);
diff --git a/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java b/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java
index 835f3dfea3ffaffeedbcd675a2851727de73db9c..51a2c8d0549aee23b09528818657e0ed76e1e9f1 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/distance/DistancePanel.java
@@ -35,6 +35,7 @@ public class DistancePanel extends ControlPanel {
     public static final String ACTION_COMMAND_SHOW_HIDE_HEATMAP = "show-hide heatmap";
     public static final String ACTION_COMMAND_SET_DISTANCE_STRATEGY = "set strategy";
     public static final String ACTION_COMMAND_RELATIVE_ABSOLUTE_DIST = "switch abosulte-relative distance";
+    public static final String ACTION_COMMAND_WEIGHTED_DISTANCE = "switch weighted distance on/off";
     public static final String ACTION_COMMAND_FEATURE_POINT_HIGHLIGHT = "highlight feature point with color";
     public static final String ACTION_COMMAND_FEATURE_POINT_RESIZE = "set size of feature point";
     public static final String ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE = "recompute weighted distance";
@@ -77,7 +78,7 @@ public class DistancePanel extends ControlPanel {
                 null,
                 "Weighted Hausdorff distance",
                 false,
-                null // TODO implement action
+                createListener(action, ACTION_COMMAND_WEIGHTED_DISTANCE)
         );
         builder.addLine();
         
@@ -115,9 +116,9 @@ public class DistancePanel extends ControlPanel {
                 createListener(action, ACTION_COMMAND_WEIGHTED_DIST_RECOMPUTE)
         );
         recomputeButton.setEnabled(false);
-        recomputeButton.addActionListener((ActionEvent ae) -> {
-            recomputeButton.setEnabled(false);
-        });
+        recomputeButton.addActionListener((ActionEvent ae) -> 
+            recomputeButton.setEnabled(false)
+        );
         weightedDistChBx.addActionListener((ActionEvent ae) -> {
             if (!weightedDistChBx.isSelected()) {
                 recomputeButton.setEnabled(false);
@@ -166,4 +167,5 @@ public class DistancePanel extends ControlPanel {
     public static ImageIcon getStaticIcon() {
         return new ImageIcon(SymmetryPanel.class.getClassLoader().getResource("/" + ICON));
     }
+    
 }