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.apache.commons.lang3.StringUtils;
|
||||||
import org.eclipse.rap.rwt.RWT;
|
import org.eclipse.rap.rwt.RWT;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.internal.widgets.IControlAdapter;
|
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
import org.eclipse.swt.layout.GridLayout;
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Control;
|
|
||||||
import org.eclipse.swt.widgets.Label;
|
import org.eclipse.swt.widgets.Label;
|
||||||
import org.eclipse.swt.widgets.MessageBox;
|
import org.eclipse.swt.widgets.MessageBox;
|
||||||
import org.eclipse.swt.widgets.Text;
|
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.gbl.profile.GuiProfile;
|
||||||
import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport;
|
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.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.PageContext;
|
||||||
import ch.ethz.seb.sebserver.gui.service.page.PageService;
|
import ch.ethz.seb.sebserver.gui.service.page.PageService;
|
||||||
import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
|
import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
|
||||||
|
@ -142,11 +139,6 @@ public class LoginPage implements TemplateComposer {
|
||||||
registerButton.setLayoutData(gridData);
|
registerButton.setLayoutData(gridData);
|
||||||
registerButton.addListener(SWT.Selection, event -> pageContext.forwardToPage(this.defaultRegisterPage));
|
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(
|
private void login(
|
||||||
|
|
|
@ -11,8 +11,9 @@ package ch.ethz.seb.sebserver.gui.service.page;
|
||||||
/** interface defining a RAP page template composer */
|
/** interface defining a RAP page template composer */
|
||||||
public interface TemplateComposer {
|
public interface TemplateComposer {
|
||||||
|
|
||||||
/** Validate given PageContext for completeness to compose a specific TemplateComposer implementation
|
/** Validate given PageContext for completeness to compose a specific TemplateComposer implementation
|
||||||
* Default returns always true.
|
* Default returns always true.
|
||||||
|
*
|
||||||
* @param pageContext The PageContext instance to check
|
* @param pageContext The PageContext instance to check
|
||||||
* @return true if the PageContext contains all mandatory data to compose this page template */
|
* @return true if the PageContext contains all mandatory data to compose this page template */
|
||||||
default boolean validate(final PageContext pageContext) {
|
default boolean validate(final PageContext pageContext) {
|
||||||
|
|
|
@ -13,6 +13,8 @@ import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
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.SWT;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.MessageBox;
|
import org.eclipse.swt.widgets.MessageBox;
|
||||||
|
@ -44,6 +46,20 @@ public class ComposerServiceImpl implements ComposerService {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(ComposerServiceImpl.class);
|
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> loginPageType = DefaultLoginPage.class;
|
||||||
private final Class<? extends PageDefinition> mainPageType = DefaultMainPage.class;
|
private final Class<? extends PageDefinition> mainPageType = DefaultMainPage.class;
|
||||||
|
|
||||||
|
@ -138,6 +154,11 @@ public class ComposerServiceImpl implements ComposerService {
|
||||||
PageService.clearComposite(pageContext.getParent());
|
PageService.clearComposite(pageContext.getParent());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
// apply tabindex reset script
|
||||||
|
final JavaScriptExecutor executor = RWT.getClient().getService(JavaScriptExecutor.class);
|
||||||
|
executor.execute(ComposerServiceImpl.TABINDEX_RESET_SCRIPT);
|
||||||
|
|
||||||
composer.compose(pageContext);
|
composer.compose(pageContext);
|
||||||
PageService.updateScrolledComposite(pageContext.getParent());
|
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.LocTextKey;
|
||||||
import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
|
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.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.page.impl.DefaultPageLayout;
|
||||||
import ch.ethz.seb.sebserver.gui.service.push.ServerPushService;
|
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 $el = widget instanceof Text ? "$input" : "$el";
|
||||||
final String id = WidgetUtil.getId(widget);
|
final String id = WidgetUtil.getId(widget);
|
||||||
exec("rap.getObject( '", id, "' ).", $el, ".attr( '", name, "', '", value, "' );");
|
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.address=localhost
|
||||||
server.port=8090
|
server.port=8080
|
||||||
|
|
||||||
sebserver.gui.http.external.scheme=http
|
sebserver.gui.http.external.scheme=http
|
||||||
sebserver.gui.entrypoint=/gui
|
sebserver.gui.entrypoint=/gui
|
||||||
sebserver.gui.webservice.protocol=http
|
sebserver.gui.webservice.protocol=http
|
||||||
sebserver.gui.webservice.address=localhost
|
sebserver.gui.webservice.address=localhost
|
||||||
sebserver.gui.webservice.port=8090
|
sebserver.gui.webservice.port=8080
|
||||||
sebserver.gui.webservice.apipath=/admin-api/v1
|
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
|
# 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
|
sebserver.gui.webservice.poll-interval=1000
|
||||||
|
|
|
@ -22,7 +22,7 @@ sebserver.webservice.clean-db-on-startup=false
|
||||||
|
|
||||||
# webservice configuration
|
# webservice configuration
|
||||||
sebserver.init.adminaccount.gen-on-init=false
|
sebserver.init.adminaccount.gen-on-init=false
|
||||||
sebserver.webservice.distributed=true
|
sebserver.webservice.distributed=false
|
||||||
sebserver.webservice.master.delay.threshold=10000
|
sebserver.webservice.master.delay.threshold=10000
|
||||||
sebserver.webservice.http.external.scheme=http
|
sebserver.webservice.http.external.scheme=http
|
||||||
sebserver.webservice.http.external.servername=localhost
|
sebserver.webservice.http.external.servername=localhost
|
||||||
|
|
Loading…
Add table
Reference in a new issue