예제 #1
0
  @PatchMethod
  static void setAttribute(Element element, String attributeName, String value) {
    PropertyContainer properties =
        JavaScriptObjects.getObject(element, JsoProperties.ELEM_PROPERTIES);

    String standardDOMPropertyName = JsoProperties.get().getStandardDOMPropertyName(attributeName);

    if (standardDOMPropertyName != null) {
      properties.put(standardDOMPropertyName, value);
    } else {
      properties.put(attributeName.toLowerCase(), value);
    }
  }
예제 #2
0
  private static void copyJSOProperties(
      JavaScriptObject newJso, JavaScriptObject oldJso, boolean deep) {
    for (Map.Entry<String, Object> entry : JavaScriptObjects.entrySet(oldJso)) {

      if (JsoProperties.PARENT_NODE_FIELD.equals(entry.getKey())) {
        // Nothing to do : new cloned node does not have any parent
      } else if (JsoProperties.STYLE_OBJECT_FIELD.equals(entry.getKey())) {
        setupStyle(newJso, (Style) entry.getValue());
      } else if (JsoProperties.NODE_LIST_FIELD.equals(entry.getKey())) {
        Node newNode = newJso.cast();
        Node oldNode = oldJso.cast();
        setupChildNodes(newNode, oldNode, deep);
      } else if (JsoProperties.ELEM_PROPERTIES.equals(entry.getKey())) {
        PropertyContainer newPc =
            JavaScriptObjects.getObject(newJso, JsoProperties.ELEM_PROPERTIES);
        PropertyContainer oldPc =
            JavaScriptObjects.getObject(oldJso, JsoProperties.ELEM_PROPERTIES);

        for (Map.Entry<String, Object> entry2 : oldPc.entrySet()) {
          newPc.put(entry2.getKey(), entry2.getValue());
        }
      } else if (JavaScriptObject.class.isInstance(entry.getValue())) {
        JavaScriptObject oldChildJso = (JavaScriptObject) entry.getValue();
        JavaScriptObject newChildJso = JavaScriptObjects.newObject(oldChildJso.getClass());
        copyJSOProperties(newChildJso, oldChildJso, deep);
        JavaScriptObjects.setProperty(newJso, entry.getKey(), newChildJso);
      } else {
        // copy the property, which should be a String or a primitive type (or
        // corresponding wrapper object)
        JavaScriptObjects.setProperty(newJso, entry.getKey(), entry.getValue());
      }
    }
  }
예제 #3
0
  @PatchMethod
  static void setPropertyObject(Element element, String name, Object value) {
    PropertyContainer properties =
        JavaScriptObjects.getObject(element, JsoProperties.ELEM_PROPERTIES);

    properties.put(name, value);
  }