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.

JSAPIUI.java 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.vaadin.tests.minitutorials.v7a3;
  2. import com.vaadin.server.ExternalResource;
  3. import com.vaadin.server.VaadinRequest;
  4. import com.vaadin.ui.JavaScript;
  5. import com.vaadin.ui.JavaScriptFunction;
  6. import com.vaadin.ui.Link;
  7. import com.vaadin.ui.Notification;
  8. import com.vaadin.ui.Notification.Type;
  9. import com.vaadin.ui.UI;
  10. import elemental.json.JsonArray;
  11. import elemental.json.JsonException;
  12. public class JSAPIUI extends UI {
  13. @Override
  14. public void init(VaadinRequest request) {
  15. JavaScript.getCurrent().addFunction("com.example.api.notify",
  16. new JavaScriptFunction() {
  17. @Override
  18. public void call(JsonArray arguments) {
  19. try {
  20. String caption = arguments.getString(0);
  21. if (arguments.length() == 1) {
  22. // only caption
  23. Notification.show(caption);
  24. } else {
  25. // type should be in [1]
  26. Notification.show(caption,
  27. Type.values()[((int) arguments.getNumber(1))]);
  28. }
  29. } catch (JsonException e) {
  30. // We'll log in the console, you might not want to
  31. JavaScript.getCurrent().execute(
  32. "console.error('" + e.getMessage() + "')");
  33. }
  34. }
  35. });
  36. setContent(new Link(
  37. "Send message",
  38. new ExternalResource(
  39. "javascript:(function(){com.example.api.notify(prompt('Message'),2);})();")));
  40. }
  41. }