blob: b5aea5362c37a00d689220c7c628a5e1fa2cf2b4 [file] [log] [blame]
/*******************************************************************************
* 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.util.List;
import org.eclipse.swt.graphics.Image;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
* ITagConverter is used to convert a custom tag to a HTML tag. Each
* ITagConverter instance will be dedicated to a single custom tag element.
*
* @author mengbo
* @version 1.5
*/
public interface ITagConverter {
/**
* Set the target document where the converted node should belong to.
*
* @param document
*/
public void setDestDocument(IDOMDocument document);
/**
* refresh the internal state of this ITagConverter. This method normally is
* called when the host element change.
*
* @param context
*/
public void convertRefresh(Object context);
/**
* @return The host element being converted.
*/
public Element getHostElement();
/**
* for some tags, they don't convert to HTML. In that case, this method
* should return false for them. And if this method return false, then
* should return an image in <code>getVisualImage()</code> for displaying
* in the designer.
*
* @return true if the tag represents something that will be rendered visually at runtime
*/
public boolean isVisualByHTML();
/**
* if isVisualByHTML() return false, then this method should return an image
* to be displayed in designer.
*
* Normally this image will be a shared image for those hidden elements. It
* is this class's responsibility to dispose the image if the image is not a
* shared one.
*
* @return the placeholder image for non-visual tags
*/
public Image getVisualImage();
/**
* @return the result element after conversion
*/
public Element getResultElement();
/**
* @return the list of children that should be continuely converted.
*/
public List getChildModeList();
/**
* @return a list of Element tags that map to non-visual children
* Type should be always be Element.
*/
public List getNonVisualChildren();
/**
* For child nodes that need further convert, return their position in the
* converted DOM tree.
*
* @param childModel
* @return the position of child nodes
*/
public ConvertPosition getChildVisualPosition(Node childModel);
/**
* When the convert result in multi-level element. If this method return
* false, then the caller should not use child nodes of
* <code>getHostElement()</code>
*
* @return true if the host element has convertable children
*/
public boolean isMultiLevel();
/**
*
* @return true if the host element is a widget
*/
public boolean isWidget();
/**
* API contract needed here
*
*/
public void dispose();
/**
* @param mode
*/
public void setMode(int mode);
}