diff --git a/Example.schema b/Example.schema
index d9be8c6..7b17a86 100644
--- a/Example.schema
+++ b/Example.schema
@@ -2,7 +2,8 @@
// :base gibt die Start-Punkte an und überschreibt die maximal Punkt, wenn ungleich 0
:base 0.0
-
+// Count of decimal places
+:decimals 1
// Design für Punkte. Pts ist dabei für die Punkte, PtsText für den Text. die Punkte zählen als Teil des Textes (
'Punkte'Text)
// full -> best-Case
:fullPts color: #0f0; font-weight: bold;
diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HtmlContext.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HtmlContext.java
index 2775c81..6475693 100644
--- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HtmlContext.java
+++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HtmlContext.java
@@ -16,6 +16,8 @@ public class HtmlContext
public String cbmsFail = "";
/** Style for checked Boxes in CheckboxMultiSelect */
public String cbmsOk = "";
+ /** Number of Decimals on Points */
+ public int decimals = 1;
/** Style for the Points, when the best case Points have been achieved */
public String fullPtsStyle = "";
/** Style for the Text, when the best case Points have been achieved */
@@ -24,6 +26,7 @@ public class HtmlContext
public MathContext mc = MathContext.DECIMAL32;
/** Style for the Points, when the worst case Points have been achieved */
public String noPtsStyle = "";
+
/** Style for the Text, when the best case Points have been achieved */
public String noPtsTextStyle = "";
diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java
index acedecb..d5f39cc 100644
--- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java
+++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java
@@ -200,6 +200,10 @@ public class KorrekturHelper
hc.basePoints = new BigDecimal(split[1]);
break;
+ case ":decimals":
+ hc.decimals = Integer.parseInt(split[1]);
+ break;
+
case ":fullPts":
hc.fullPtsStyle = split.length > 1 ? split[1] : "";
break;
diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Utils.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Utils.java
index f4e36fe..b05c88e 100644
--- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Utils.java
+++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Utils.java
@@ -11,12 +11,13 @@ public class Utils
/**
* formats Points for Users
*
- * @param bd the {@link BigDecimal} to format
+ * @param bd the {@link BigDecimal} to format
+ * @param decimals decimals
* @return the formatted String (1 decimal place)
*/
- public static String formatPoints(BigDecimal bd)
+ public static String formatPoints(BigDecimal bd, int decimals)
{
- return String.format("%.1f", bd.doubleValue());
+ return String.format("%." + decimals + "f", bd.doubleValue());
}
/**
diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxMultiSelectNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxMultiSelectNode.java
index 8b2faae..47603cd 100644
--- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxMultiSelectNode.java
+++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxMultiSelectNode.java
@@ -58,7 +58,7 @@ public class CheckboxMultiSelectNode extends AbstractNode
{ throw new IllegalArgumentException("Expected []"); }
points[i - 1] = new BigDecimal(s[1]);
text[i - 1] = s[2];
- rbs[i - 1] = new JCheckBox(Utils.formatPoints(points[i - 1]) + "P - " + text[i - 1]);
+ rbs[i - 1] = new JCheckBox(Utils.formatPoints(points[i - 1], 2) + "P - " + text[i - 1]);
rbs[i - 1].addActionListener(cl);
content.add(rbs[i - 1]);
}
@@ -124,7 +124,8 @@ public class CheckboxMultiSelectNode extends AbstractNode
var sb = new StringBuilder();
sb.append("");
sb.append("");
- sb.append(Utils.formatPoints(achievedPoints(hc.mc))).append(" / ").append(Utils.formatPoints(maxPoints));
+ sb.append(Utils.formatPoints(achievedPoints(hc.mc), hc.decimals)).append(" / ")
+ .append(Utils.formatPoints(maxPoints, hc.decimals));
sb.append("P ");
sb.append(baseMsg);
sb.append("\n\t\n");
@@ -132,7 +133,7 @@ public class CheckboxMultiSelectNode extends AbstractNode
{
sb.append("\t\t- ");
sb.append(rbs[i].isSelected() ? "✓ " : "✗ ");
- sb.append("(").append(Utils.formatPoints(points[i])).append("P) ");
+ sb.append("(").append(Utils.formatPoints(points[i], hc.decimals)).append("P) ");
sb.append(text[i]);
sb.append("
\n");
}
diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxNode.java
index 84ea154..ff206d2 100644
--- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxNode.java
+++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxNode.java
@@ -33,7 +33,7 @@ public class CheckboxNode extends AbstractNode
{ throw new IllegalArgumentException("Not a [] Node"); }
points = new BigDecimal(spl[1]);
message = spl[2];
- cbx = new JCheckBox(Utils.formatPoints(points) + "P " + message);
+ cbx = new JCheckBox(Utils.formatPoints(points, 2) + "P " + message);
cbx.addActionListener(e -> onChange(this));
content.add(cbx);
}
@@ -70,7 +70,7 @@ public class CheckboxNode extends AbstractNode
public String toResultHtml(HtmlContext hc)
{
return "- "
- + Utils.formatPoints(achievedPoints(hc.mc)) + "P " + message + "
";
+ + Utils.formatPoints(achievedPoints(hc.mc), hc.decimals) + "P " + message + "
";
}
}
diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/EitherNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/EitherNode.java
index 4dcdc87..c621c5f 100644
--- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/EitherNode.java
+++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/EitherNode.java
@@ -42,14 +42,15 @@ public class EitherNode extends AbstractNode
messageFail = spl.length == 3 ? null : spl.length == 4 ? spl[3].substring(1).trim() : spl[4];
if (points.signum() > 0)
{
- btn_ok = new JRadioButton(Utils.formatPoints(points) + "P " + messageOK);
+ btn_ok = new JRadioButton(Utils.formatPoints(points, 2) + "P " + messageOK);
btn_fail = new JRadioButton(
Utils.ptsToString(BigDecimal.ZERO) + "P " + (messageFail == null ? messageOK : messageFail));
}
else
{
- btn_ok = new JRadioButton(Utils.formatPoints(BigDecimal.ZERO) + "P " + messageOK);
- btn_fail = new JRadioButton(Utils.formatPoints(points) + "P " + (messageFail == null ? messageOK : messageFail));
+ btn_ok = new JRadioButton(Utils.formatPoints(BigDecimal.ZERO, 2) + "P " + messageOK);
+ btn_fail = new JRadioButton(
+ Utils.formatPoints(points, 2) + "P " + (messageFail == null ? messageOK : messageFail));
}
btn_ok.addActionListener(e -> onChange(this));
btn_fail.addActionListener(e -> onChange(this));
@@ -127,8 +128,8 @@ public class EitherNode extends AbstractNode
}
return "" + //
"" + //
- Utils.formatPoints(achievedPoints(hc.mc)) + //
- (points.signum() < 0 ? "" : " / " + Utils.formatPoints(maximumPoints())) + "P" + //
+ Utils.formatPoints(achievedPoints(hc.mc), hc.decimals) + //
+ (points.signum() < 0 ? "" : " / " + Utils.formatPoints(maximumPoints(), hc.decimals)) + "P" + //
" " + //
(points.signum() < 0 ? btn_fail.isSelected() ? messageOK : messageFail
: btn_fail.isSelected() ? messageFail : messageOK)
diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/RadioMultiSelectNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/RadioMultiSelectNode.java
index 4bfa927..2be7f97 100644
--- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/RadioMultiSelectNode.java
+++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/RadioMultiSelectNode.java
@@ -60,7 +60,7 @@ public class RadioMultiSelectNode extends AbstractNode
{ throw new IllegalArgumentException("Expected exactly 1 \\t"); }
points[i - 1] = new BigDecimal(s[0]);
text[i - 1] = s[1];
- rbs[i - 1] = new JRadioButton(Utils.formatPoints(points[i - 1]) + "P - " + text[i - 1]);
+ rbs[i - 1] = new JRadioButton(Utils.formatPoints(points[i - 1], 2) + "P - " + text[i - 1]);
rbs[i - 1].addActionListener(cl);
content.add(rbs[i - 1]);
bg.add(rbs[i - 1]);
@@ -131,12 +131,14 @@ public class RadioMultiSelectNode extends AbstractNode
{
return "" + //
"" + //
- Utils.formatPoints(BigDecimal.ZERO) + " / " + Utils.formatPoints(maxPoints) + "P " + //
+ Utils.formatPoints(BigDecimal.ZERO, hc.decimals) + " / " + Utils.formatPoints(maxPoints, hc.decimals)
+ + "P " + //
(baseMsg == null ? "" : baseMsg) + "";
}
return "" + //
" " + //
- Utils.formatPoints(achievedPoints(hc.mc)) + " / " + Utils.formatPoints(maxPoints) + "P " + //
+ Utils.formatPoints(achievedPoints(hc.mc), hc.decimals) + " / " + Utils.formatPoints(maxPoints, hc.decimals)
+ + "P " + //
(baseMsg == null ? text[getSelected()] : baseMsg + " (" + text[getSelected()] + ")") + "";
}