diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/service/session/ClientConnectionDetails.java b/src/main/java/ch/ethz/seb/sebserver/gui/service/session/ClientConnectionDetails.java index 91b1f2c6..f683891b 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/service/session/ClientConnectionDetails.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/service/session/ClientConnectionDetails.java @@ -11,6 +11,7 @@ package ch.ethz.seb.sebserver.gui.service.session; import java.util.Collection; import java.util.EnumMap; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -147,13 +148,17 @@ public class ClientConnectionDetails { .forEach(indValue -> { final IndicatorData indData = this.indicatorMapping.get(indValue.getType()); final double value = indValue.getValue(); - final int colorIndex = IndicatorData.getColorIndex(indData, value); + if (this.connectionData.clientConnection.status != ConnectionStatus.ESTABLISHED) { form.setFieldValue(indData.indicator.name, Constants.EMPTY_NOTE); form.setFieldColor(indData.indicator.name, indData.defaultColor); } else { + final int colorIndex = IndicatorData.getColorIndex(indData, value); + final Color color = (colorIndex >= 0) + ? indData.thresholdColor[colorIndex].color + : indData.defaultColor; form.setFieldValue(indData.indicator.name, String.valueOf(value)); - form.setFieldColor(indData.indicator.name, indData.thresholdColor[colorIndex].color); + form.setFieldColor(indData.indicator.name, color); } }); } diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/service/session/ClientConnectionTable.java b/src/main/java/ch/ethz/seb/sebserver/gui/service/session/ClientConnectionTable.java index 0e2201b9..44bce129 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/service/session/ClientConnectionTable.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/service/session/ClientConnectionTable.java @@ -22,6 +22,7 @@ import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -321,11 +322,11 @@ public final class ClientConnectionTable { indicatorData.index, indicatorData.defaultColor); } else { - tableItem.setText(indicatorData.index, getDisplayValue(indicatorValue)); - tableItem.setBackground( - indicatorData.index, - indicatorData.thresholdColor[this.thresholdColorIndices[i]].color); + final Color color = (this.thresholdColorIndices[i] >= 0) + ? indicatorData.thresholdColor[this.thresholdColorIndices[i]].color + : indicatorData.defaultColor; + tableItem.setBackground(indicatorData.index, color); } } } diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/service/session/IndicatorData.java b/src/main/java/ch/ethz/seb/sebserver/gui/service/session/IndicatorData.java index 8dbab22f..e21f9b7a 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/service/session/IndicatorData.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/service/session/IndicatorData.java @@ -20,6 +20,7 @@ import ch.ethz.seb.sebserver.gbl.model.exam.Indicator.Threshold; import ch.ethz.seb.sebserver.gbl.util.Utils; final class IndicatorData { + final int index; final Indicator indicator; final Color defaultColor; @@ -51,12 +52,12 @@ final class IndicatorData { static final int getColorIndex(final IndicatorData indicatorData, final double value) { for (int j = 0; j < indicatorData.thresholdColor.length; j++) { - if (value < indicatorData.thresholdColor[j].value) { + if (value > indicatorData.thresholdColor[j].value && value < indicatorData.thresholdColor[j].value) { return j; } } - return indicatorData.thresholdColor.length - 1; + return -1; } static final class ThresholdColor {