protected void renderShowHide( Element elem, String elemVarName, boolean hide, StringBuilder code, JSRenderElementImpl render) { if (NamespaceUtil.isSVGElement(elem)) { // El <script> de SVG no tiene objeto style, al menos en FireFox // y ASV3. Da igual lo que pase en los demás (Opera, Chrome etc) no // tiene sentido ocultar un <script> String localName = elem.getLocalName(); if (localName.equals("script")) return; ClientDocumentStfulDelegateWebImpl clientDoc = getClientDocumentStfulDelegateWeb(); BrowserWeb browser = clientDoc.getBrowserWeb(); if (browser instanceof BrowserAdobeSVG) { // El <foreignObject> tampoco tiene objeto style en ASV3 // este elemento ES visual pero como no está reconocido // en ASV3 los elementos hijo son tratados como elementos SVG // desconocidos sin visualización. Por tanto evitamos que de error. // De hecho la propiedad "display" no funciona en ASV3 (se ignora) // pero al menos no da error. if (localName.equals("foreignObject")) return; } } super.renderShowHide(elem, elemVarName, hide, code, render); }
public static JSRenderElementImpl getJSRenderElement( Element elem, ClientDocumentStfulDelegateWebImpl clientDoc) { if (DOMUtilHTML.isHTMLElement(elem)) return JSRenderHTMLElementImpl.getJSRenderHTMLElement(clientDoc.getBrowserWeb()); else // El elemento puede estar en un documento (X)HTML pero no es HTML o XHTML. En documentos // no HTML todos los elementos tienen un namespace o DEBERIA declararse en el root del // documento return JSRenderOtherNSElementImpl.getJSRenderOtherNSElement(elem, clientDoc); }
public static String getCodeDispatchEvent( EventTarget node, Event evt, String varResName, ClientDocumentStfulDelegateWebImpl clientDoc) { JSRenderEventImpl evtRender = JSRenderEventImpl.getJSEventRender(evt, clientDoc.getBrowserWeb()); NodeLocationImpl nodeLoc = clientDoc.getNodeLocation((Node) node, true); return evtRender.getDispatchEvent(varResName, nodeLoc, evt, clientDoc); }
public static String getSetNodePropertyCode( Node node, String propertyName, String value, boolean cacheIfPossible, ClientDocumentStfulDelegateWebImpl clientDoc) { return clientDoc.getNodeReference(node, cacheIfPossible, true) + "." + propertyName + "=" + toTransportableStringLiteral(value, clientDoc.getBrowserWeb()) + ";\n"; // El \n es un embellecedor }
public int getTimeout() { int timeout = super.getTimeout(); if (timeout <= 0) return -1; ClientDocumentStfulDelegateWebImpl clientDoc = getClientDocumentStfulDelegateWeb(); BrowserWeb browser = clientDoc.getBrowserWeb(); if ((browser instanceof BrowserGecko) || (browser instanceof BrowserOperaOld) || (browser instanceof BrowserAdobeSVG) || // ASV (browser instanceof BrowserBatik)) // En Batik applet no hay redimensionamiento porque no es normal cambiar // las dimensiones del applet return -1; // No es necesario el redimensionamiento, se redimensiona automáticamente cuando // cambia el cuadro (gracias a los valores "100%") return timeout; }