added some tabindex fix scripts
This commit is contained in:
parent
fe3a6519e0
commit
9be252f333
6 changed files with 36 additions and 13 deletions
|
@ -12,12 +12,10 @@ import org.apache.commons.lang3.BooleanUtils;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.rap.rwt.RWT;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.internal.widgets.IControlAdapter;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
@ -30,7 +28,6 @@ import org.springframework.stereotype.Component;
|
|||
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
||||
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.page.ComposerService;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.PageContext;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.PageService;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
|
||||
|
@ -142,11 +139,6 @@ public class LoginPage implements TemplateComposer {
|
|||
registerButton.setLayoutData(gridData);
|
||||
registerButton.addListener(SWT.Selection, event -> pageContext.forwardToPage(this.defaultRegisterPage));
|
||||
}
|
||||
|
||||
ComposerService.traversePageTree(
|
||||
parent,
|
||||
comp -> comp instanceof Control,
|
||||
comp -> comp.getAdapter(IControlAdapter.class).setTabIndex(0));
|
||||
}
|
||||
|
||||
private void login(
|
||||
|
|
|
@ -11,8 +11,9 @@ package ch.ethz.seb.sebserver.gui.service.page;
|
|||
/** interface defining a RAP page template composer */
|
||||
public interface TemplateComposer {
|
||||
|
||||
/** Validate given PageContext for completeness to compose a specific TemplateComposer implementation
|
||||
* Default returns always true.
|
||||
/** Validate given PageContext for completeness to compose a specific TemplateComposer implementation
|
||||
* Default returns always true.
|
||||
*
|
||||
* @param pageContext The PageContext instance to check
|
||||
* @return true if the PageContext contains all mandatory data to compose this page template */
|
||||
default boolean validate(final PageContext pageContext) {
|
||||
|
|
|
@ -13,6 +13,8 @@ import java.util.Map;
|
|||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.rap.rwt.RWT;
|
||||
import org.eclipse.rap.rwt.client.service.JavaScriptExecutor;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
|
@ -44,6 +46,20 @@ public class ComposerServiceImpl implements ComposerService {
|
|||
|
||||
private static final Logger log = LoggerFactory.getLogger(ComposerServiceImpl.class);
|
||||
|
||||
public static final String TABINDEX_RESET_SCRIPT =
|
||||
"try {\n"
|
||||
+ " document.body.setAttribute(\"tabindex\", \"0\");\n"
|
||||
+ " var items = document.body.getElementsByTagName('div');\n"
|
||||
+ " console.log('*** '+items.length);\n"
|
||||
+ " for (i = 0; i < items.length; i++) {\n"
|
||||
+ " if(items[i].hasAttribute(\"tabindex\")) {\n"
|
||||
+ " items[i].setAttribute(\"tabindex\", \"0\");\n"
|
||||
+ " }\n"
|
||||
+ " }\n"
|
||||
+ "} catch (error) {\n"
|
||||
+ " console.error(error);\n"
|
||||
+ "}";
|
||||
|
||||
private final Class<? extends PageDefinition> loginPageType = DefaultLoginPage.class;
|
||||
private final Class<? extends PageDefinition> mainPageType = DefaultMainPage.class;
|
||||
|
||||
|
@ -138,6 +154,11 @@ public class ComposerServiceImpl implements ComposerService {
|
|||
PageService.clearComposite(pageContext.getParent());
|
||||
|
||||
try {
|
||||
|
||||
// apply tabindex reset script
|
||||
final JavaScriptExecutor executor = RWT.getClient().getService(JavaScriptExecutor.class);
|
||||
executor.execute(ComposerServiceImpl.TABINDEX_RESET_SCRIPT);
|
||||
|
||||
composer.compose(pageContext);
|
||||
PageService.updateScrolledComposite(pageContext.getParent());
|
||||
|
||||
|
|
|
@ -58,6 +58,7 @@ 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;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.PageService;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.impl.ComposerServiceImpl;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.impl.DefaultPageLayout;
|
||||
import ch.ethz.seb.sebserver.gui.service.push.ServerPushService;
|
||||
|
||||
|
@ -944,6 +945,14 @@ public class WidgetFactory {
|
|||
final String $el = widget instanceof Text ? "$input" : "$el";
|
||||
final String id = WidgetUtil.getId(widget);
|
||||
exec("rap.getObject( '", id, "' ).", $el, ".attr( '", name, "', '", value, "' );");
|
||||
|
||||
// apply tabindex reset script
|
||||
final JavaScriptExecutor executor = RWT.getClient().getService(JavaScriptExecutor.class);
|
||||
executor.execute(ComposerServiceImpl.TABINDEX_RESET_SCRIPT);
|
||||
// exec("rap.getObject( '", id, "' ).", $el, ".attr( 'tabindex', '0' );");
|
||||
// if (widget instanceof Text) {
|
||||
// exec("rap.getObject( '", id, "' ).$el.attr( 'tabindex', '0' );");
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
server.address=localhost
|
||||
server.port=8090
|
||||
server.port=8080
|
||||
|
||||
sebserver.gui.http.external.scheme=http
|
||||
sebserver.gui.entrypoint=/gui
|
||||
sebserver.gui.webservice.protocol=http
|
||||
sebserver.gui.webservice.address=localhost
|
||||
sebserver.gui.webservice.port=8090
|
||||
sebserver.gui.webservice.port=8080
|
||||
sebserver.gui.webservice.apipath=/admin-api/v1
|
||||
# defines the polling interval that is used to poll the webservice for client connection data on a monitored exam page
|
||||
sebserver.gui.webservice.poll-interval=1000
|
||||
|
|
|
@ -22,7 +22,7 @@ sebserver.webservice.clean-db-on-startup=false
|
|||
|
||||
# webservice configuration
|
||||
sebserver.init.adminaccount.gen-on-init=false
|
||||
sebserver.webservice.distributed=true
|
||||
sebserver.webservice.distributed=false
|
||||
sebserver.webservice.master.delay.threshold=10000
|
||||
sebserver.webservice.http.external.scheme=http
|
||||
sebserver.webservice.http.external.servername=localhost
|
||||
|
|
Loading…
Add table
Reference in a new issue