more seb config pages

This commit is contained in:
anhefti 2019-05-16 17:17:08 +02:00
parent 6f9bacf1eb
commit 3654366dc8
7 changed files with 115 additions and 14 deletions

View file

@ -335,7 +335,7 @@ public enum ActionDefinition {
ActionCategory.FORM),
SEB_EXAM_CONFIG_MODIFY_PROPERTIES_FROM_LIST(
new LocTextKey("sebserver.examconfig.props.action.list.modify"),
new LocTextKey("sebserver.examconfig.action.list.modify.properties"),
ImageIcon.EDIT,
PageStateDefinition.SEB_EXAM_CONFIG_PROPERTIES_EDIT,
ActionCategory.SEB_EXAM_CONFIG_LIST),

View file

@ -123,7 +123,6 @@ public abstract class AbstractInputField<T extends Control> implements InputFiel
setValueToControl(this.attribute.defaultValue);
final Event event = new Event();
try {
this.control.notifyListeners(SWT.Selection, event);
this.control.notifyListeners(SWT.FocusOut, event);
} catch (final Exception e) {
log.warn("Failed to send value update to server: {}", this.attribute, e);

View file

@ -88,7 +88,12 @@ interface CellFieldBuilderAdapter {
gridData.verticalIndent = 5;
break;
}
case LEFT_SPAN:
case LEFT_SPAN: {
label.setAlignment(SWT.LEFT);
gridData.horizontalSpan = orientation.width;
gridData.verticalIndent = 5;
break;
}
case RIGHT_SPAN: {
label.setAlignment(SWT.LEFT);
gridData.verticalIndent = 5;
@ -180,7 +185,7 @@ interface CellFieldBuilderAdapter {
builder.parent,
this.width,
groupLabelKey);
group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, this.width, this.height));
group.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, this.width, this.height));
final ViewGridBuilder groupBuilder = new ViewGridBuilder(
group,

View file

@ -8,6 +8,9 @@
package ch.ethz.seb.sebserver.gui.service.examconfig.impl;
import java.util.function.Consumer;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
@ -21,8 +24,12 @@ import ch.ethz.seb.sebserver.gbl.model.sebconfig.AttributeType;
import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationAttribute;
import ch.ethz.seb.sebserver.gbl.model.sebconfig.Orientation;
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
import ch.ethz.seb.sebserver.gui.service.examconfig.ExamConfigurationService;
import ch.ethz.seb.sebserver.gui.service.examconfig.InputField;
import ch.ethz.seb.sebserver.gui.service.examconfig.InputFieldBuilder;
import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport;
import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
@Lazy
@Component
@ -50,6 +57,7 @@ public class TextFieldBuilder implements InputFieldBuilder {
final ConfigurationAttribute attribute,
final ViewContext viewContext) {
final I18nSupport i18nSupport = viewContext.getI18nSupport();
final Orientation orientation = viewContext
.getOrientation(attribute.id);
final Composite innerGrid = InputFieldBuilder
@ -65,6 +73,17 @@ public class TextFieldBuilder implements InputFieldBuilder {
}
text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
final LocTextKey toolTipKey = ExamConfigurationService.getToolTipKey(
attribute,
i18nSupport);
if (toolTipKey != null) {
final Consumer<Text> updateFunction = t -> t.setToolTipText(i18nSupport.getText(toolTipKey));
text.setData(
PolyglotPageService.POLYGLOT_ITEM_TOOLTIP_DATA_KEY,
updateFunction);
updateFunction.accept(text);
}
final TextInputField textInputField = new TextInputField(
attribute,
orientation,
@ -98,6 +117,11 @@ public class TextFieldBuilder implements InputFieldBuilder {
@Override
protected void setValueToControl(final String value) {
if (value == null) {
this.control.setText(StringUtils.EMPTY);
return;
}
this.control.setText(value);
}

View file

@ -128,8 +128,12 @@ public class ViewGridBuilder {
break;
}
case LEFT_SPAN: {
fillDummy(xpos - orientation.width, ypos, orientation.width, 1);
this.grid[ypos][xpos - orientation.width] = CellFieldBuilderAdapter.labelBuilder(
int spanxpos = xpos - orientation.width;
if (spanxpos < 0) {
spanxpos = 0;
}
fillDummy(spanxpos, ypos, orientation.width, 1);
this.grid[ypos][spanxpos] = CellFieldBuilderAdapter.labelBuilder(
attribute,
orientation);
break;

View file

@ -21,7 +21,7 @@
<appender-ref ref="STDOUT" />
</root>
<Logger name="ch.ethz.seb.sebserver" level="INFO" additivity="true" />
<Logger name="ch.ethz.seb.sebserver" level="DEBUG" additivity="true" />
<Logger name="org.mybatis.generator" level="INFO" additivity="true" />
<Logger name="org.springframework.boot" level="INFO" additivity="true" />
<Logger name="org.springframework.security" level="INFO" additivity="true" />
@ -38,7 +38,7 @@
<appender-ref ref="STDOUT" />
</root>
<Logger name="ch.ethz.seb.sebserver" level="INFO" additivity="true" />
<Logger name="ch.ethz.seb.sebserver" level="DEBUG" additivity="true" />
<Logger name="org.mybatis.generator" level="INFO" additivity="true" />
<Logger name="org.springframework.boot" level="INFO" additivity="true" />
<Logger name="org.springframework.security" level="INFO" additivity="true" />

View file

@ -355,7 +355,8 @@ sebserver.examconfig.info.pleaseSelect=Please Select an exam configuration first
sebserver.examconfig.action.list.new=New Exam Configuration
sebserver.examconfig.action.list.view=View Configuration
sebserver.examconfig.action.list.modify=Edit Attributes
sebserver.examconfig.action.list.modify=Edit
sebserver.examconfig.action.list.modify.properties=Edit Properties
sebserver.examconfig.action.modify=Edit
sebserver.examconfig.action.save=Save
@ -372,6 +373,9 @@ sebserver.examconfig.status.IN_USE=In Use
sebserver.examconfig.props.from.title=Exam Configuration Properties
sebserver.examconfig.props.form.views.general=General
sebserver.examconfig.props.form.views.user_interface=User Interface
sebserver.examconfig.props.form.views.browser=Browser
sebserver.examconfig.props.form.views.down_upload=Down/Uploads
sebserver.examconfig.props.form.views.exam=Exam
sebserver.examconfig.props.label.hashedAdminPassword=Administrator password
sebserver.examconfig.props.label.hashedAdminPassword.confirm=Confirm password
@ -453,15 +457,80 @@ sebserver.examconfig.props.label.allowSpellCheckDictionary.pt-PT=Portuguese (Por
sebserver.examconfig.props.label.allowSpellCheckDictionary.sv-SE=Swedish (Sweden)
sebserver.examconfig.props.label.allowSpellCheckDictionary.sv-FI=Swedish (Finland)
sebserver.examconfig.props.form.views.testView=Test View
sebserver.examconfig.props.form.views.testView.tooltip=This is a test View
sebserver.examconfig.props.action.list.modify=Edit Properties
sebserver.examconfig.props.group.newBrowserWindow=Links requesting to be opened in a new browser window (Mac)
sebserver.examconfig.props.label.newBrowserWindowByLinkPolicy.0=get generally blocked
sebserver.examconfig.props.label.newBrowserWindowByLinkPolicy.1=open in same window
sebserver.examconfig.props.label.newBrowserWindowByLinkPolicy.2=open in new window
sebserver.examconfig.props.label.newBrowserWindowByLinkBlockForeign=block when directing\nto a different server
sebserver.examconfig.props.label.testNumber1=Test Number 1
sebserver.examconfig.props.label.testNumber2=Test Number 2
sebserver.examconfig.props.group.newwinsize=New browser window size and position
sebserver.examconfig.props.label.newBrowserWindowByLinkWidth=Width
sebserver.examconfig.props.label.newBrowserWindowByLinkHeight=Height
sebserver.examconfig.props.label.newBrowserWindowByLinkPositioning=Horizontal positioning
sebserver.examconfig.props.label.newBrowserWindowByLinkPositioning.0=Left
sebserver.examconfig.props.label.newBrowserWindowByLinkPositioning.1=Center
sebserver.examconfig.props.label.newBrowserWindowByLinkPositioning.2=Right
sebserver.examconfig.props.group.browserSecurity=Browser security
sebserver.examconfig.props.label.enablePlugIns=Enable plug-ins (Win: only Flash)
sebserver.examconfig.props.label.enableJavaScript=Enable Java Script
sebserver.examconfig.props.label.enableJava=Enable Java
sebserver.examconfig.props.label.blockPopUpWindows=Block pup-up windows
sebserver.examconfig.props.label.allowVideoCapture=Allow video capture (webcam)
sebserver.examconfig.props.label.allowAudioCapture=Allow audio capture (microphone)
sebserver.examconfig.props.label.allowBrowsingBackForward=Allow navigating back/forward in exam
sebserver.examconfig.props.label.newBrowserWindowNavigation=Allow navigating in additional windows
sebserver.examconfig.props.label.browserWindowAllowReload=Allow realod exam
sebserver.examconfig.props.label.newBrowserWindowAllowReload=Allow reload in additional windows
sebserver.examconfig.props.label.showReloadWarning=Show reload warning in exam
sebserver.examconfig.props.label.newBrowserWindowShowReloadWarning=Show reload warning in additional windows
sebserver.examconfig.props.label.removeBrowserProfile=Remove profile (Win)
sebserver.examconfig.props.label.removeLocalStorage=Disable locale storage (Mac)
sebserver.examconfig.props.label.browserUserAgent=Suffix to be added to any user agent
sebserver.examconfig.props.group.userAgentDesktop=User agent for desktop mode
sebserver.examconfig.props.label.browserUserAgentWinDesktopMode.0=Desktop default
sebserver.examconfig.props.label.browserUserAgentWinDesktopMode.0.tooltip=Zoom whole web pages using Ctrl-Mousewheel (Win)
sebserver.examconfig.props.label.browserUserAgentWinDesktopMode.1=Custom
sebserver.examconfig.props.label.browserUserAgentWinDesktopMode.1.tooltip=Zoom only text on web pages using Ctrl-Mousewheel (Win)
sebserver.examconfig.props.label.browserUserAgentWinDesktopModeCustom.tooltip=Custom desktop user agent string\n(SEB appends its version number automatically)
sebserver.examconfig.props.group.userAgentTouch=User agent for touch/table mode
sebserver.examconfig.props.label.browserUserAgentWinTouchMode.0=Touch default
sebserver.examconfig.props.label.browserUserAgentWinTouchMode.1=iPad
sebserver.examconfig.props.label.browserUserAgentWinTouchMode.2=Custom
sebserver.examconfig.props.label.browserUserAgentWinTouchMode.2.tooltip=Zoom only text on web pages using Ctrl-Mousewheel (Win)
sebserver.examconfig.props.group.userAgentMac=User agent (Mac)
sebserver.examconfig.props.label.browserUserAgentMac.0=Default (depends on installed Safari/WebKit version)
sebserver.examconfig.props.label.browserUserAgentMac.1=Custom
sebserver.examconfig.props.label.browserUserAgentMac.1.tooltip=Zoom only text on web pages using Ctrl-Mousewheel (Win)
sebserver.examconfig.props.label.enableSebBrowser=Enable SEB with browser window
sebserver.examconfig.props.label.enableSebBrowser.tooltip=Disable this to start another application in kiosk mode\n(for example a virtual desktop infrastructure client)
sebserver.examconfig.props.label.browserWindowTitleSuffix=Suffix to be added to every browser window
sebserver.examconfig.props.label.allowDownUploads=Allow downloading and uploading files (Mac)
sebserver.examconfig.props.label.downloadDirectoryWin=Download directory (Win)
sebserver.examconfig.props.label.downloadDirectoryOSX=Download directory (Mac)
sebserver.examconfig.props.label.openDownloads=Open files after downloading (Mac)
sebserver.examconfig.props.label.chooseFileToUploadPolicy=Choose file to upload (Mac)
sebserver.examconfig.props.label.chooseFileToUploadPolicy.0=manually with file requester
sebserver.examconfig.props.label.chooseFileToUploadPolicy.1=by attempting to upload the same file downloaded before
sebserver.examconfig.props.label.chooseFileToUploadPolicy.2=by only allowing to upload the same file downloaded before
sebserver.examconfig.props.label.downloadPDFFiles=Download and open PDF files instead of displaying them inline (Mac)
sebserver.examconfig.props.label.allowPDFPlugIn=Allow using Acrobat Reader PDF plugin (insecure! Mac only)
sebserver.examconfig.props.label.downloadAndOpenSebConfig=Download and open SEB Config Files
sebserver.examconfig.props.group.quitLink=Link to quit SEB after exam
sebserver.examconfig.props.label.quitURL=Place this quit link to the 'feedback' page displayed after an exam was successfully finished.\nClicking that link will quit SEB without having to enter the quit password.
sebserver.examconfig.props.label.quitURLConfirm=Ask user to confirm quitting
sebserver.examconfig.props.group.backToStart=Back to Start Button
sebserver.examconfig.props.label.restartExamUseStartURL=Use Start URL
sebserver.examconfig.props.label.restartExamURL=Enter custom URL or select 'Use Start URL' to display a back to start button in the SEB taskbar.
sebserver.examconfig.props.label.restartExamText=Title/tool tip text for the back to start button (leave empty for localized standard text)
sebserver.examconfig.props.label.restartExamPasswordProtected=Protect back to start button with the quit/unlock password
sebserver.examconfig.props.validation.password.confirm=Please enter correct confirm password