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( | ||||||
|  |  | ||||||
|  | @ -13,6 +13,7 @@ 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
	
	 anhefti
						anhefti