Package org.eclipse.jst.pagedesigner.converter

Source Code of org.eclipse.jst.pagedesigner.converter.HTMLStringTagConverter

/*******************************************************************************
* Copyright (c) 2006 Sybase, Inc. and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.pagedesigner.converter;

import java.io.ByteArrayInputStream;
import java.io.InputStream;

import org.eclipse.jst.jsf.common.ui.internal.logging.Logger;
import org.eclipse.jst.jsf.common.ui.internal.utils.ResourceUtils;
import org.eclipse.jst.pagedesigner.PDPlugin;
import org.eclipse.jst.pagedesigner.dom.DOMUtil;
import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.w3c.dom.Element;

/**
* For some tag, could generate some XML code.
*
* @author mengbo
* @version 1.5
*/
public abstract class HTMLStringTagConverter extends AbstractTagConverter {

  static Logger _log = PDPlugin.getLogger(HTMLStringTagConverter.class);

  /**
   * @param host
   */
  public HTMLStringTagConverter(Element host) {
    super(host);
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.jst.pagedesigner.converter.AbstractTagConverter#doConvertRefresh()
   */
  protected Element doConvertRefresh() {
    // following are XML implementation. Assume the string is welformed HTML
    // try
    // {
    // String html = getGeneratedHTML();
    // DocumentBuilder builder =
    // DocumentBuilderFactory.newInstance().newDocumentBuilder();
    // Element result = builder.parse(new InputSource(new
    // StringReader(html))).getDocumentElement();
    // return (Element)DOMUtil.cloneNodeDeep(this.getDestDocument(),
    // result);
    // }
    // catch(Exception ex)
    // {
    // Element temp = createElement("div");
    // temp.appendChild(createText("ERROR: "+ex.getMessage()));
    // return temp;
    // }
    InputStream stream = null;
    try {
      String id = "" + System.currentTimeMillis() + ".html"; //$NON-NLS-1$ //$NON-NLS-2$
      IModelManager manager = StructuredModelManager.getModelManager();
      stream = new ByteArrayInputStream(getGeneratedHTML().getBytes());
      IDOMModel model = (IDOMModel) manager.getModelForRead(id, stream,
          null);
      Element root = model.getDocument().getDocumentElement();
      Element resultEle = (Element) DOMUtil.cloneNodeDeepIgnoreError(
          getDestDocument(), root);
      model.releaseFromRead();
      return resultEle;
    } catch (Exception ex) {
      _log.error("Log.Error.HTMLStringTagConverter.Error", ex); //$NON-NLS-1$
      Element temp = createElement("div"); //$NON-NLS-1$
      temp.appendChild(createText("Error loading: " + ex.getMessage())); //$NON-NLS-1$
      return temp;
    } finally {
      ResourceUtils.ensureClosed(stream);
    }
  }

  /**
   * @return the generated HTML string
   * @throws Exception
   */
  public abstract String getGeneratedHTML() throws Exception;

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.jst.pagedesigner.converter.ITagConverter#isMultiLevel()
   */
  public boolean isMultiLevel() {
    return true;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.jst.pagedesigner.css2.style.ITagEditInfo#isWidget()
   */
  public boolean isWidget() {
    return true;
  }
}
TOP

Related Classes of org.eclipse.jst.pagedesigner.converter.HTMLStringTagConverter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.