diff --git a/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java b/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java
index 6227837d1def1f36f56a49d61b97f825818263f3..b01c59900e74a11539b16d75f35d872730fd2b95 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java
@@ -522,6 +522,42 @@ public class ControlPanelBuilder {
         return slider;
     }
     
+    public JFormattedTextField addFormattedInputField(IntValueRange range, ActionListener inputAction) {
+        GridBagConstraints c = new GridBagConstraints();
+        c.gridwidth = 2;
+        c.gridx = col;
+        col += 2;
+        c.gridy = row;
+        c.anchor = GridBagConstraints.CENTER;
+        c.fill = GridBagConstraints.BOTH;
+        
+        NumberFormatter formatter;
+        if (range == null) { // percents in [0,1] => use two digit double
+            NumberFormat format = DecimalFormat.getInstance(Locale.getDefault());
+            format.setMinimumFractionDigits(1);
+            format.setMaximumFractionDigits(NUMBER_OF_FRACTION_DIGITS);
+            format.setRoundingMode(RoundingMode.HALF_UP);
+            formatter = new NumberFormatter(format);
+            formatter.setValueClass(Double.class);
+            formatter.setMinimum(0.0);
+            formatter.setMaximum(1.0);
+        } else {
+            NumberFormat format = NumberFormat.getInstance();
+            formatter = new NumberFormatter(format);
+            formatter.setValueClass(Integer.class);
+            formatter.setMinimum(range.getMinimum());
+            formatter.setMaximum(range.getMaximum());
+        }
+        formatter.setAllowsInvalid(false);
+        
+        JFormattedTextField input = new JFormattedTextField(formatter);
+        input.setText("0");
+        input.addActionListener(inputAction);
+        controlPanel.add(input, c);
+        
+        return input;
+    }
+    
     /**
      * Adds a scrollable pane that carries the given panel as its content.
      *