You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CapsLockWarningConnector.java 1.3KB

123456789101112131415161718192021222324252627282930313233343536
  1. package com.vaadin.tests.widgetset.client.minitutorials.v7a3;
  2. import com.google.gwt.event.dom.client.KeyPressEvent;
  3. import com.google.gwt.user.client.ui.HTML;
  4. import com.google.gwt.user.client.ui.Widget;
  5. import com.vaadin.client.ComponentConnector;
  6. import com.vaadin.client.ServerConnector;
  7. import com.vaadin.client.extensions.AbstractExtensionConnector;
  8. import com.vaadin.client.ui.VOverlay;
  9. import com.vaadin.shared.ui.Connect;
  10. import com.vaadin.tests.minitutorials.v7a3.CapsLockWarning;
  11. @Connect(CapsLockWarning.class)
  12. public class CapsLockWarningConnector extends AbstractExtensionConnector {
  13. @Override
  14. protected void extend(ServerConnector target) {
  15. final Widget passwordWidget = ((ComponentConnector) target).getWidget();
  16. final VOverlay warning = new VOverlay();
  17. warning.setOwner(passwordWidget);
  18. warning.add(new HTML("Caps Lock is enabled!"));
  19. passwordWidget.addDomHandler(event -> {
  20. if (isEnabled() && isCapsLockOn(event)) {
  21. warning.showRelativeTo(passwordWidget);
  22. } else {
  23. warning.hide();
  24. }
  25. }, KeyPressEvent.getType());
  26. }
  27. private boolean isCapsLockOn(KeyPressEvent e) {
  28. return e.isShiftKeyDown() ^ Character.isUpperCase(e.getCharCode());
  29. }
  30. }