選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

CustomWidgetMapGenerator.java 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.widgetsetutils;
  5. import java.util.Collection;
  6. import java.util.HashSet;
  7. import com.vaadin.shared.ui.Connect;
  8. import com.vaadin.shared.ui.Connect.LoadStyle;
  9. import com.vaadin.terminal.gwt.client.ComponentConnector;
  10. import com.vaadin.terminal.gwt.client.ServerConnector;
  11. /**
  12. * An abstract helper class that can be used to easily build a widgetset with
  13. * customized load styles for each components. In three abstract methods one can
  14. * override the default values given in {@link Connect} annotations.
  15. *
  16. * @see WidgetMapGenerator
  17. *
  18. */
  19. public abstract class CustomWidgetMapGenerator extends WidgetMapGenerator {
  20. private Collection<Class<? extends ComponentConnector>> eagerPaintables = new HashSet<Class<? extends ComponentConnector>>();
  21. private Collection<Class<? extends ComponentConnector>> lazyPaintables = new HashSet<Class<? extends ComponentConnector>>();
  22. private Collection<Class<? extends ComponentConnector>> deferredPaintables = new HashSet<Class<? extends ComponentConnector>>();
  23. @Override
  24. protected LoadStyle getLoadStyle(Class<? extends ServerConnector> connector) {
  25. if (eagerPaintables == null) {
  26. init();
  27. }
  28. if (eagerPaintables.contains(connector)) {
  29. return LoadStyle.EAGER;
  30. }
  31. if (lazyPaintables.contains(connector)) {
  32. return LoadStyle.LAZY;
  33. }
  34. if (deferredPaintables.contains(connector)) {
  35. return LoadStyle.DEFERRED;
  36. }
  37. return super.getLoadStyle(connector);
  38. }
  39. private void init() {
  40. Class<? extends ComponentConnector>[] eagerComponents = getEagerComponents();
  41. if (eagerComponents != null) {
  42. for (Class<? extends ComponentConnector> class1 : eagerComponents) {
  43. eagerPaintables.add(class1);
  44. }
  45. }
  46. Class<? extends ComponentConnector>[] lazyComponents = getEagerComponents();
  47. if (lazyComponents != null) {
  48. for (Class<? extends ComponentConnector> class1 : lazyComponents) {
  49. lazyPaintables.add(class1);
  50. }
  51. }
  52. Class<? extends ComponentConnector>[] deferredComponents = getEagerComponents();
  53. if (deferredComponents != null) {
  54. for (Class<? extends ComponentConnector> class1 : deferredComponents) {
  55. deferredPaintables.add(class1);
  56. }
  57. }
  58. }
  59. /**
  60. * @return an array of components whose load style should be overridden to
  61. * {@link LoadStyle#EAGER}
  62. */
  63. protected abstract Class<? extends ComponentConnector>[] getEagerComponents();
  64. /**
  65. * @return an array of components whose load style should be overridden to
  66. * {@link LoadStyle#LAZY}
  67. */
  68. protected abstract Class<? extends ComponentConnector>[] getLazyComponents();
  69. /**
  70. * @return an array of components whose load style should be overridden to
  71. * {@link LoadStyle#DEFERRED}
  72. */
  73. protected abstract Class<? extends ComponentConnector>[] getDeferredComponents();
  74. }