private ArcDef createArcDef() {
        ConsolFun consolFun = (ConsolFun) consolFunCombo.getSelectedItem();
        double xff;
        try {
            xff = Double.parseDouble(xffField.getText());
            if (xff < 0 || xff >= 1D) {
                throw new NumberFormatException();
            }
        }
        catch (NumberFormatException nfe) {
            Util.error(this, "X-files factor must be a number not less than 0.0 and less than 1.0");
            return null;
        }
        int steps;
        try {
            steps = Integer.parseInt(stepsField.getText());
            if (steps <= 0) {
                throw new NumberFormatException();
            }
        }
        catch (NumberFormatException nfe) {
            Util.error(this, "Number of steps must be a positive integer");
            return null;
        }
        int rows;
        try {
            rows = Integer.parseInt(rowsField.getText());
            if (rows <= 0) {
                throw new NumberFormatException();
            }
        }
        catch (NumberFormatException nfe) {
            Util.error(this, "Number of rows must be a positive integer");
            return null;
        }
        try {
            return new ArcDef(consolFun, xff, steps, rows);
        }
        catch (Exception e) {
            // should not be here ever!
            Util.error(this, e);
            return null;
        }
    }