001    package net.sf.tacos.markup;
002    
003    import org.apache.tapestry.IMarkupWriter;
004    import org.apache.tapestry.NestedMarkupWriter;
005    import org.apache.tapestry.markup.Attribute;
006    
007    /**
008     *
009     */
010    public class ExtendedMarkupWriterImpl implements IExtendedMarkupWriter {
011        private IMarkupWriter writer;
012    
013        public ExtendedMarkupWriterImpl(IMarkupWriter writer) {
014            this.writer = writer;
015        }
016    
017        public IExtendedMarkupWriter createEmpty(String tag, String... attributes) {
018            writer.beginEmpty(tag);
019            writeAttributesAndValues(attributes);
020            return this;
021        }
022    
023        public IExtendedMarkupWriter create(String tag, String... attributes) {
024            writer.begin(tag);
025            writeAttributesAndValues(attributes);
026            return this;
027        }
028    
029        private void writeAttributesAndValues(String... attributes) {
030            for (int i=0; i<attributes.length; i+=2) {
031                writer.attribute(attributes[i], attributes[i+1]);
032            }
033        }
034    
035        public void attribute(String name, int value) {
036            writer.attribute(name, value);
037        }
038    
039        public void attribute(String name, boolean value) {
040            writer.attribute(name, value);
041        }
042    
043        public void attribute(String name, String value) {
044            writer.attribute(name, value);
045        }
046    
047        public void attributeRaw(String name, String value) {
048            writer.attributeRaw(name, value);
049        }
050    
051        public void appendAttribute(String name, int value) {
052            writer.appendAttribute(name, value);
053        }
054    
055        public void appendAttribute(String name, boolean value) {
056            writer.appendAttribute(name, value);
057        }
058    
059        public void appendAttribute(String name, String value) {
060            writer.appendAttribute(name, value);
061        }
062    
063        public void appendAttributeRaw(String name, String value) {
064            writer.appendAttributeRaw(name, value);
065        }
066    
067        public boolean hasAttribute(String name) {
068            return writer.hasAttribute(name);
069        }
070    
071        public Attribute getAttribute(String name) {
072            return writer.getAttribute(name);
073        }
074    
075        public Attribute removeAttribute(String name) {
076            return writer.removeAttribute(name);
077        }
078    
079        public void clearAttributes() {
080            writer.clearAttributes();
081        }
082    
083        public void begin(String name) {
084            writer.begin(name);
085        }
086    
087        public void beginEmpty(String name) {
088            writer.beginEmpty(name);
089        }
090    
091        public boolean checkError() {
092            return writer.checkError();
093        }
094    
095        public void close() {
096            writer.close();
097        }
098    
099        public void closeTag() {
100            writer.closeTag();
101        }
102    
103        public void comment(String value) {
104            writer.comment(value);
105        }
106    
107        public void end() {
108            writer.end();
109        }
110    
111        public void end(String name) {
112            writer.end(name);
113        }
114    
115        public void flush() {
116            writer.flush();
117        }
118    
119        public NestedMarkupWriter getNestedWriter() {
120            return writer.getNestedWriter();
121        }
122    
123        public void print(char[] data, int offset, int length) {
124            writer.print(data, offset, length);
125        }
126    
127        public void print(char[] data, int offset, int length, boolean raw) {
128            writer.print(data, offset, length, raw);
129        }
130    
131        public void print(char value) {
132            writer.print(value);
133        }
134    
135        public void print(int value) {
136            writer.print(value);
137        }
138    
139        public void print(String value) {
140            writer.print(value);
141        }
142    
143        public void print(String value, boolean raw) {
144            writer.print(value, raw);
145        }
146    
147        public void println() {
148            writer.println();
149        }
150    
151        public void printRaw(char[] buffer, int offset, int length) {
152            writer.printRaw(buffer, offset, length);
153        }
154    
155        public void printRaw(String value) {
156            writer.printRaw(value);
157        }
158    
159        public String getContentType() {
160            return writer.getContentType();
161        }
162    }
163