SEBSERV-119 fix

This commit is contained in:
anhefti 2020-04-16 12:55:19 +02:00
parent ab50fc774b
commit 9d614fdf6e
5 changed files with 56 additions and 18 deletions

View file

@ -42,7 +42,7 @@ public interface InputField {
void initValue(final String value, final Integer listIndex);
/** Get the current field value.
*
*
* @return the current field value. */
String getValue();
@ -53,7 +53,7 @@ public interface InputField {
/** Use this to show an error message below the input field.
* This is only possible if the concrete input field has an error label, otherwise ignored
*
*
* @param errorMessage the error message to display below the input field */
void showError(String errorMessage);

View file

@ -223,6 +223,24 @@ public final class ViewContext {
inputField);
}
public void setValue(final String name, final String value) {
try {
final ConfigurationAttribute attributeByName = getAttributeByName(name);
final InputField inputField = this.inputFieldMapping.get(attributeByName.id);
inputField.initValue(value, 0);
if (this.valueChangeListener != null) {
this.valueChangeListener.valueChanged(
this,
attributeByName,
value,
0);
}
} catch (final Exception e) {
log.error("Failed to set attribute value: {} : {}, cause {}", name, value, e.getMessage());
}
}
void setValuesToInputFields(final Collection<ConfigurationValue> values) {
this.inputFieldMapping
.values()

View file

@ -8,12 +8,14 @@
package ch.ethz.seb.sebserver.gui.service.examconfig.impl.rules;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import ch.ethz.seb.sebserver.gbl.Constants;
import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationAttribute;
import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationValue;
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
@ -30,10 +32,11 @@ public class BrowserViewModeRule implements ValueChangeRule {
public static final String KEY_BROWSER_VIEW_MODE = "browserViewMode";
public static final String KEY_TOUCH_EXIT = "enableTouchExit";
public static final String KEY_MAIN_WINDOW_GROUP = "mainBrowserWindowWidth";
public static final String KEY_TOUCH_OPTIMIZED = "touchOptimized";
@Override
public boolean observesAttribute(final ConfigurationAttribute attribute) {
return KEY_BROWSER_VIEW_MODE.equals(attribute.name);
return KEY_BROWSER_VIEW_MODE.equals(attribute.name) || KEY_TOUCH_OPTIMIZED.equals(attribute.name);
}
@Override
@ -50,19 +53,35 @@ public class BrowserViewModeRule implements ValueChangeRule {
context.enable(KEY_TOUCH_EXIT);
context.enableGroup(KEY_MAIN_WINDOW_GROUP);
switch (Integer.parseInt(value.value)) {
case 1: {
context.disable(KEY_TOUCH_EXIT);
if (KEY_TOUCH_OPTIMIZED.equals(attribute.name)) {
if (BooleanUtils.toBoolean(value.value)) {
context.disableGroup(KEY_MAIN_WINDOW_GROUP);
break;
}
case 2: {
context.disableGroup(KEY_MAIN_WINDOW_GROUP);
break;
}
default: {
context.setValue(KEY_BROWSER_VIEW_MODE, "2");
} else {
context.setValue(KEY_TOUCH_EXIT, Constants.FALSE_STRING);
context.disable(KEY_TOUCH_EXIT);
break;
}
return;
}
if (KEY_BROWSER_VIEW_MODE.equals(attribute.name)) {
switch (Integer.parseInt(value.value)) {
case 1: {
context.disable(KEY_TOUCH_EXIT);
context.disableGroup(KEY_MAIN_WINDOW_GROUP);
context.setValue(KEY_TOUCH_OPTIMIZED, Constants.FALSE_STRING);
break;
}
case 2: {
context.disableGroup(KEY_MAIN_WINDOW_GROUP);
break;
}
default: {
context.disable(KEY_TOUCH_EXIT);
context.setValue(KEY_TOUCH_OPTIMIZED, Constants.FALSE_STRING);
break;
}
}
}
} catch (final Exception e) {

View file

@ -20,7 +20,7 @@ INSERT INTO configuration_attribute VALUES
(6, 'exitKey2', 'SINGLE_SELECTION', null, '0,1,2,3,4,5,6,7,8,9,10,11', 'ExitKeySequenceValidator', 'resourceLocTextKey=sebserver.examconfig.props.label.exitKey', '10'),
(7, 'exitKey3', 'SINGLE_SELECTION', null, '0,1,2,3,4,5,6,7,8,9,10,11', 'ExitKeySequenceValidator', 'resourceLocTextKey=sebserver.examconfig.props.label.exitKey', '5'),
(8, 'browserViewMode', 'RADIO_SELECTION', null, '0,1,2', null, null, '0'),
(8, 'browserViewMode', 'RADIO_SELECTION', null, '0,1', null, null, '0'),
(9, 'enableTouchExit', 'CHECKBOX', null, null, null, null, 'false'),
(10, 'mainBrowserWindowWidth', 'COMBO_SELECTION', null, '50%,100%,800,1000', 'WindowsSizeValidator', null, '100%'),
(11, 'mainBrowserWindowHeight', 'COMBO_SELECTION', null, '80%,100%,600,800', 'WindowsSizeValidator', null, '100%'),
@ -281,7 +281,8 @@ INSERT INTO orientation VALUES
(6, 6, 0, 1, 'exitSequence', 2, 2, 1, 1, 'NONE'),
(7, 7, 0, 1, 'exitSequence', 2, 3, 1, 1, 'NONE'),
(8, 8, 0, 2, 'browserViewMode', 0, 0, 3, 3, 'NONE'),
(8, 8, 0, 2, 'browserViewMode', 0, 0, 3, 2, 'NONE'),
(804, 804, 0, 2, 'browserViewMode', 0, 2, 3, 1, 'NONE'),
(9, 9, 0, 2, 'browserViewMode', 3, 2, 4, 1, 'NONE'),
(10, 10, 0, 2, 'winsize', 1, 4, 2, 1, 'LEFT'),
(11, 11, 0, 2, 'winsize', 1, 5, 2, 1, 'LEFT'),

View file

@ -766,8 +766,8 @@ sebserver.examconfig.props.label.browserViewMode.0=Use browser window
sebserver.examconfig.props.label.browserViewMode.0.tooltip=Use window for the SEB browser which can be scaled and moved around, also to another screen if available
sebserver.examconfig.props.label.browserViewMode.1=Use full screen mode
sebserver.examconfig.props.label.browserViewMode.1.tooltip=Display the SEB browser full screen.
sebserver.examconfig.props.label.browserViewMode.2=Touch optimized
sebserver.examconfig.props.label.browserViewMode.2.tooltip=Mainly to be used on Windows tablets. Not working with the Create New Desktop kiosk mode
sebserver.examconfig.props.label.touchOptimized=Touch optimized
sebserver.examconfig.props.label.touchOptimized.tooltip=Mainly to be used on Windows tablets. Not working with the Create New Desktop kiosk mode
sebserver.examconfig.props.label.enableTouchExit=Enable touch exit
sebserver.examconfig.props.label.enableTouchExit.tooltip=SEB can be quit by a swipe down from the upper display edge