From b2c36c65e7434e1c0707b4bb8dbe7fd423f88a0d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Leif=20=C3=85strand?= Date: Fri, 14 Sep 2012 11:32:38 +0300 Subject: [PATCH] Mini tutorial code for Creating a component extension --- .../minitutorials/v7a3/CapsLockWarning.java | 26 ++++++++++ .../minitutorials/v7a3/CapsLockWarningUI.java | 47 +++++++++++++++++++ .../v7a3/CapsLockWarningConnector.java | 39 +++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 uitest/src/com/vaadin/tests/minitutorials/v7a3/CapsLockWarning.java create mode 100644 uitest/src/com/vaadin/tests/minitutorials/v7a3/CapsLockWarningUI.java create mode 100644 uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a3/CapsLockWarningConnector.java diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a3/CapsLockWarning.java b/uitest/src/com/vaadin/tests/minitutorials/v7a3/CapsLockWarning.java new file mode 100644 index 0000000000..736af9b389 --- /dev/null +++ b/uitest/src/com/vaadin/tests/minitutorials/v7a3/CapsLockWarning.java @@ -0,0 +1,26 @@ +/* + * Copyright 2011 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.server.AbstractExtension; +import com.vaadin.ui.PasswordField; + +public class CapsLockWarning extends AbstractExtension { + public void extend(PasswordField field) { + super.extend(field); + } +} diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a3/CapsLockWarningUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a3/CapsLockWarningUI.java new file mode 100644 index 0000000000..c82bc91088 --- /dev/null +++ b/uitest/src/com/vaadin/tests/minitutorials/v7a3/CapsLockWarningUI.java @@ -0,0 +1,47 @@ +/* + * Copyright 2011 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.tests.minitutorials.v7a3; + +import com.vaadin.annotations.Widgetset; +import com.vaadin.server.WrappedRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.tests.widgetset.TestingWidgetSet; +import com.vaadin.ui.PasswordField; + +@Widgetset(TestingWidgetSet.NAME) +public class CapsLockWarningUI extends AbstractTestUI { + + @Override + protected void setup(WrappedRequest request) { + PasswordField field = new PasswordField("Enter your password"); + new CapsLockWarning().extend(field); + + addComponent(field); + } + + @Override + protected String getTestDescription() { + return "Mini tutorial code for https://vaadin.com/wiki/-/wiki/Main/Creating%20a%20component%20extension"; + } + + @Override + protected Integer getTicketNumber() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a3/CapsLockWarningConnector.java b/uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a3/CapsLockWarningConnector.java new file mode 100644 index 0000000000..7b1a56dc62 --- /dev/null +++ b/uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a3/CapsLockWarningConnector.java @@ -0,0 +1,39 @@ +package com.vaadin.tests.widgetset.client.minitutorials.v7a3; + +import com.google.gwt.event.dom.client.KeyPressEvent; +import com.google.gwt.event.dom.client.KeyPressHandler; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.Widget; +import com.vaadin.client.ComponentConnector; +import com.vaadin.client.ServerConnector; +import com.vaadin.client.extensions.AbstractExtensionConnector; +import com.vaadin.client.ui.VOverlay; +import com.vaadin.shared.ui.Connect; +import com.vaadin.tests.minitutorials.v7a3.CapsLockWarning; + +@Connect(CapsLockWarning.class) +public class CapsLockWarningConnector extends AbstractExtensionConnector { + + @Override + protected void extend(ServerConnector target) { + final Widget passwordWidget = ((ComponentConnector) target).getWidget(); + + final VOverlay warning = new VOverlay(); + warning.add(new HTML("Caps Lock is enabled!")); + + passwordWidget.addDomHandler(new KeyPressHandler() { + @Override + public void onKeyPress(KeyPressEvent event) { + if (isEnabled() && isCapsLockOn(event)) { + warning.showRelativeTo(passwordWidget); + } else { + warning.hide(); + } + } + }, KeyPressEvent.getType()); + } + + private boolean isCapsLockOn(KeyPressEvent e) { + return e.isShiftKeyDown() ^ Character.isUpperCase(e.getCharCode()); + } +} \ No newline at end of file -- 2.39.5