1/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. 2 * 3 * This program and the accompanying materials are made available under 4 * the terms of the Common Public License v1.0 which accompanies this distribution, 5 * and is available at http://www.eclipse.org/legal/cpl-v10.html 6 * 7 * $Id: ISimpleElement.java,v 1.1.1.1 2004/05/09 16:57:41 vlad_r Exp $ 8 */ 9package com.vladium.emma.report.html.doc; 10 11import com.vladium.util.asserts.$assert; 12 13// ---------------------------------------------------------------------------- 14/** 15 * @author Vlad Roubtsov, (C) 2003 16 */ 17public 18interface ISimpleElement extends IContent 19{ 20 // public: ................................................................ 21 22 Tag getTag (); 23 ISimpleElement setClass (String classID); 24 AttributeSet getAttributes (); 25 26 abstract class Factory 27 { 28 public static ISimpleElement create (final Tag tag) 29 { 30 return new SimpleElementImpl (tag, AttributeSet.create ()); 31 } 32 33 public static ISimpleElement create (final Tag tag, final AttributeSet attrs) 34 { 35 return new SimpleElementImpl (tag, attrs); 36 } 37 38 static class SimpleElementImpl implements ISimpleElement 39 { 40 public String toString () 41 { 42 return "<" + m_tag.getName () + "/>"; 43 } 44 45 public Tag getTag () 46 { 47 return m_tag; 48 } 49 50 public ISimpleElement setClass (final String classID) 51 { 52 if ((classID != null) && (classID.length () > 0)) 53 { 54 getAttributes ().set (Attribute.CLASS, classID); 55 } 56 57 return this; 58 } 59 60 public AttributeSet getAttributes () 61 { 62 return m_attrs; 63 } 64 65 public void emit (final HTMLWriter out) 66 { 67 out.write ('<'); 68 out.write (m_tag.getName ()); 69 70 if (! m_attrs.isEmpty ()) 71 { 72 out.write (' '); 73 m_attrs.emit (out); 74 } 75 76 out.write ("/>"); 77 } 78 79 SimpleElementImpl (final Tag tag, final AttributeSet attrs) 80 { 81 if ($assert.ENABLED) $assert.ASSERT (tag != null, "tag = null"); 82 if ($assert.ENABLED) $assert.ASSERT (attrs != null, "attrs = null"); 83 84 m_tag = tag; 85 m_attrs = attrs; 86 } 87 88 89 protected final Tag m_tag; 90 protected final AttributeSet m_attrs; 91 92 } // end of nested class 93 94 } // end of nested class 95 96 97 98} // end of interface 99// ----------------------------------------------------------------------------