001: /* *************************************************************************
002:
003: Millstone(TM)
004: Open Sourced User Interface Library for
005: Internet Development with Java
006:
007: Millstone is a registered trademark of IT Mill Ltd
008: Copyright (C) 2000-2005 IT Mill Ltd
009:
010: *************************************************************************
011:
012: This library is free software; you can redistribute it and/or
013: modify it under the terms of the GNU Lesser General Public
014: license version 2.1 as published by the Free Software Foundation.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: *************************************************************************
026:
027: For more information, contact:
028:
029: IT Mill Ltd phone: +358 2 4802 7180
030: Ruukinkatu 2-4 fax: +358 2 4802 7181
031: 20540, Turku email: info@itmill.com
032: Finland company www: www.itmill.com
033:
034: Primary source for MillStone information and releases: www.millstone.org
035:
036: ********************************************************************** */
037:
038: package org.millstone.base.terminal;
039:
040: /** This interface defines the methods for
041: * painting XML to the UIDL stream.
042: *
043: * @author IT Mill Ltd.
044: * @version 3.1.1
045: * @since 3.0
046: */
047: public interface PaintTarget {
048:
049: /** Print single XMLsection.
050: *
051: * Prints full XML section. The section data is escaped from XML tags and
052: * surrounded by XML start and end-tags.
053: */
054: public void addSection(String sectionTagName, String sectionData)
055: throws PaintException;
056:
057: /** Print element start tag of a paintable section.
058: * Starts a paintable section using the given tag. The PaintTarget may
059: * implement a caching scheme, that checks the paintable has actually
060: * changed or can a cached version be used instead. This method should call
061: * the startTag method.
062: *
063: * If the Paintable is found in cache and this function returns true it may
064: * omit the content and close the tag, in which case cached content should
065: * be used.
066: *
067: * @param paintable The paintable to start
068: * @param tagName The name of the start tag
069: * @return true if paintable found in cache, false otherwise.
070: * @see #startTag(String)
071: * @since 3.1
072: */
073: public boolean startTag(Paintable paintable, String tag)
074: throws PaintException;
075:
076: /** Print element start tag.
077: *
078: * <pre>Todo:
079: * Checking of input values
080: * </pre>
081: *
082: * @param tagName The name of the start tag
083: *
084: */
085: public void startTag(String tagName) throws PaintException;
086:
087: /** Print element end tag.
088: *
089: * If the parent tag is closed before
090: * every child tag is closed an MillstoneException is raised.
091: *
092: * @param tag The name of the end tag
093: * @exception IOException The writing failed due to input/output error
094: */
095: public void endTag(String tagName) throws PaintException;
096:
097: /** Adds a boolean attribute to component.
098: * Atributes must be added before any content is written.
099: *
100: * @param name Attribute name
101: * @param value Attribute value
102: * @return this object
103: */
104: public void addAttribute(String name, boolean value)
105: throws PaintException;
106:
107: /** Adds a integer attribute to component.
108: * Atributes must be added before any content is written.
109: *
110: * @param name Attribute name
111: * @param value Attribute value
112: * @return this object
113: */
114: public void addAttribute(String name, int value)
115: throws PaintException;
116:
117: /** Adds a resource attribute to component.
118: * Atributes must be added before any content is written.
119: *
120: * @param name Attribute name
121: * @param value Attribute value
122: * @return this object
123: */
124: public void addAttribute(String name, Resource value)
125: throws PaintException;
126:
127: /** Adds a long attribute to component.
128: * Atributes must be added before any content is written.
129: *
130: * @param name Attribute name
131: * @param value Attribute value
132: * @return this object
133: */
134: public void addAttribute(String name, long value)
135: throws PaintException;
136:
137: /** Adds a string attribute to component.
138: * Atributes must be added before any content is written.
139: *
140: * @param name Boolean attribute name
141: * @param value Boolean attribute value
142: * @return this object
143: */
144: public void addAttribute(String name, String value)
145: throws PaintException;
146:
147: /** Add a string type variable.
148: * @param owner Listener for variable changes
149: * @param name Variable name
150: * @param value Variable initial value
151: * @return Reference to this.
152: */
153: public void addVariable(VariableOwner owner, String name,
154: String value) throws PaintException;
155:
156: /** Add a int type variable.
157: * @param owner Listener for variable changes
158: * @param name Variable name
159: * @param value Variable initial value
160: * @return Reference to this.
161: */
162: public void addVariable(VariableOwner owner, String name, int value)
163: throws PaintException;
164:
165: /** Add a boolean type variable.
166: * @param owner Listener for variable changes
167: * @param name Variable name
168: * @param value Variable initial value
169: * @return Reference to this.
170: */
171: public void addVariable(VariableOwner owner, String name,
172: boolean value) throws PaintException;
173:
174: /** Add a string array type variable.
175: * @param owner Listener for variable changes
176: * @param name Variable name
177: * @param value Variable initial value
178: * @return Reference to this.
179: */
180: public void addVariable(VariableOwner owner, String name,
181: String[] value) throws PaintException;
182:
183: /** Add a upload stream type variable.
184: * @param owner Listener for variable changes
185: * @param name Variable name
186: * @param value Variable initial value
187: * @return Reference to this.
188: */
189: public void addUploadStreamVariable(VariableOwner owner, String name)
190: throws PaintException;
191:
192: /** Print single XML section.
193: *
194: * Prints full XML section. The section data must be XML and it is
195: * surrounded by XML start and end-tags.
196: */
197: public void addXMLSection(String sectionTagName,
198: String sectionData, String namespace) throws PaintException;
199:
200: /** Add UIDL directly.
201: * The UIDL must be valid in accordance with the UIDL.dtd
202: */
203: public void addUIDL(java.lang.String uidl) throws PaintException;
204:
205: /** Add text node. All the contents of the text are XML-escaped.
206: * @param text Text to add
207: */
208: void addText(String text) throws PaintException;
209:
210: /** Add CDATA node to target UIDL-tree.
211: * @param text Character data to add
212: * @since 3.1
213: */
214: void addCharacterData(String text) throws PaintException;
215: }
|