Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

VUIDLBrowser.java 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /**
  2. *
  3. */
  4. package com.vaadin.terminal.gwt.client;
  5. import java.util.Iterator;
  6. import java.util.Set;
  7. import com.google.gwt.core.client.JsArrayString;
  8. import com.google.gwt.event.logical.shared.OpenEvent;
  9. import com.google.gwt.event.logical.shared.OpenHandler;
  10. import com.google.gwt.user.client.DOM;
  11. import com.google.gwt.user.client.ui.Tree;
  12. import com.google.gwt.user.client.ui.TreeItem;
  13. public class VUIDLBrowser extends Tree {
  14. /**
  15. *
  16. */
  17. private final UIDL uidl;
  18. public VUIDLBrowser(final UIDL uidl) {
  19. this.uidl = uidl;
  20. DOM.setStyleAttribute(getElement(), "position", "");
  21. final UIDLItem root = new UIDLItem(this.uidl);
  22. addItem(root);
  23. addOpenHandler(new OpenHandler<TreeItem>() {
  24. public void onOpen(OpenEvent<TreeItem> event) {
  25. TreeItem item = event.getTarget();
  26. if (item.getChildCount() == 1
  27. && item.getChild(0).getText().equals("LOADING")) {
  28. ((UIDLItem) item).dir();
  29. }
  30. }
  31. });
  32. }
  33. @Override
  34. protected boolean isKeyboardNavigationEnabled(TreeItem currentItem) {
  35. return false;
  36. }
  37. class UIDLItem extends TreeItem {
  38. private UIDL uidl;
  39. UIDLItem(UIDL uidl) {
  40. this.uidl = uidl;
  41. try {
  42. setText(uidl.getTag());
  43. addItem("LOADING");
  44. } catch (Exception e) {
  45. setText(uidl.toString());
  46. }
  47. }
  48. public void dir() {
  49. TreeItem temp = getChild(0);
  50. removeItem(temp);
  51. String nodeName = uidl.getTag();
  52. Set<String> attributeNames = uidl.getAttributeNames();
  53. for (String name : attributeNames) {
  54. if (uidl.isMapAttribute(name)) {
  55. try {
  56. ValueMap map = uidl.getMapAttribute(name);
  57. JsArrayString keyArray = map.getKeyArray();
  58. nodeName += " " + name + "=" + "{";
  59. for (int i = 0; i < keyArray.length(); i++) {
  60. nodeName += keyArray.get(i) + ":"
  61. + map.getAsString(keyArray.get(i)) + ",";
  62. }
  63. nodeName += "}";
  64. } catch (Exception e) {
  65. }
  66. } else {
  67. final String value = uidl.getAttribute(name);
  68. nodeName += " " + name + "=" + value;
  69. }
  70. }
  71. setText(nodeName);
  72. try {
  73. TreeItem tmp = null;
  74. Set<String> variableNames = uidl.getVariableNames();
  75. for (String name : variableNames) {
  76. String value = "";
  77. try {
  78. value = uidl.getVariable(name);
  79. } catch (final Exception e) {
  80. try {
  81. String[] stringArrayAttribute = uidl
  82. .getStringArrayAttribute(name);
  83. value = stringArrayAttribute.toString();
  84. } catch (final Exception e2) {
  85. try {
  86. final int intVal = uidl.getIntVariable(name);
  87. value = String.valueOf(intVal);
  88. } catch (final Exception e3) {
  89. value = "unknown";
  90. }
  91. }
  92. }
  93. if (tmp == null) {
  94. tmp = new TreeItem("variables");
  95. }
  96. tmp.addItem(name + "=" + value);
  97. }
  98. if (tmp != null) {
  99. addItem(tmp);
  100. }
  101. } catch (final Exception e) {
  102. // Ignored, no variables
  103. }
  104. final Iterator<Object> i = uidl.getChildIterator();
  105. while (i.hasNext()) {
  106. final Object child = i.next();
  107. try {
  108. final UIDL c = (UIDL) child;
  109. final TreeItem childItem = new UIDLItem(c);
  110. addItem(childItem);
  111. } catch (final Exception e) {
  112. addItem(child.toString());
  113. }
  114. }
  115. }
  116. }
  117. }