1f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. 2f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 3f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * This program and the accompanying materials are made available under 4f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * the terms of the Common Public License v1.0 which accompanies this distribution, 5f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * and is available at http://www.eclipse.org/legal/cpl-v10.html 6f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 7f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * $Id: IElement.java,v 1.1.1.1 2004/05/09 16:57:41 vlad_r Exp $ 8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpackage com.vladium.emma.report.html.doc; 10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.util.ArrayList; 12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.util.Iterator; 13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.util.List; 14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ---------------------------------------------------------------------------- 16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/** 17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2003 18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic 20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectinterface IElement extends ISimpleElement, IElementList 21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{ 22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // public: ................................................................ 23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project IElement setText (String text, boolean nbsp); // size() is 0 after this 25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project abstract class Factory 27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public static IElement create (final Tag tag) 29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return new ElementImpl (tag, AttributeSet.create ()); 31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public static IElement create (final Tag tag, final AttributeSet attrs) 34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return new ElementImpl (tag, attrs); 36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // TODO: should this extend ElementList? 39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project static class ElementImpl extends ISimpleElement.Factory.SimpleElementImpl 40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project implements IElement 41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public String toString () 43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return "<" + m_tag.getName () + ">"; 45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public void emit (final HTMLWriter out) 48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final String tagName = m_tag.getName (); 50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project out.write ('<'); 52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project out.write (tagName); 53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (! m_attrs.isEmpty ()) 55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project out.write (' '); 57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_attrs.emit (out); 58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project out.write ('>'); 61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project for (Iterator c = m_contents.iterator (); c.hasNext (); ) 63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final IContent content = (IContent) c.next (); 65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project content.emit (out); 66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project out.write ("</"); 69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project out.write (tagName); 70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project out.write ('>'); 71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (DEBUG_HTML) out.eol (); // using ENABLED as DEBUG here 72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public IElementList add (final IContent content) 75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (content != null) 77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_contents.add (content); 79f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 80f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 81f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return this; 82f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 83f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 84f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public IElementList add (final int index, final IContent content) 85f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 86f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (content != null) 87f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 88f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_contents.add (index, content); 89f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 90f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 91f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return this; 92f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 93f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 94f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public int size () 95f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 96f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return m_contents.size (); 97f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 98f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 99f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public IElement setText (final String text, final boolean nbsp) 100f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 101f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (text != null) 102f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 103f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_contents.clear (); 104f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_contents.add (new Text (text, nbsp)); 105f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 106f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 107f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return this; 108f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 109f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 110f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project ElementImpl (final Tag tag, final AttributeSet attrs) 111f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 112f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project super (tag, attrs); 113f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 114f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project m_contents = new ArrayList (); 115f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 116f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 117f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 118f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project protected final List /* Content */ m_contents; 119f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 120f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private static final boolean DEBUG_HTML = false; 121f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 122f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of nested class 123f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 124f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of nested class 125f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 126f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of interface 127f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------