001: /*
002: ItsNat Java Web Application Framework
003: Copyright (C) 2007 Innowhere Software Services S.L., Spanish Company
004: Author: Jose Maria Arranz Santamaria
005:
006: This program is free software: you can redistribute it and/or modify
007: it under the terms of the GNU Affero General Public License as published by
008: the Free Software Foundation, either version 3 of the License, or
009: (at your option) any later version. See the GNU Affero General Public
010: License for more details. See the copy of the GNU Affero General Public License
011: included in this program. If not, see <http://www.gnu.org/licenses/>.
012: */
013:
014: package org.itsnat.core.domutil;
015:
016: import org.w3c.dom.DocumentFragment;
017:
018: /**
019: * This utility interface is used to render a value inside the associated
020: * DOM element using a pattern. The content of the DOM element is used as pattern
021: * to render the first value and consecutive values if {@link #isUsePatternMarkupToRender()} returns true.
022: *
023: * <p>Objects implementing this interface are attached to the specified DOM element
024: * this element usually is not empty.</p>
025: *
026: * @author Jose Maria Arranz Santamaria
027: */
028: public interface ElementLabel extends ElementGroup {
029: /**
030: * Returns the current renderer used by this label.
031: *
032: * @return the current renderer.
033: * @see #setElementLabelRenderer(ElementLabelRenderer)
034: */
035: public ElementLabelRenderer getElementLabelRenderer();
036:
037: /**
038: * Sets the renderer used by this label.
039: *
040: * @param renderer the new renderer.
041: * @see #getElementLabelRenderer()
042: */
043: public void setElementLabelRenderer(ElementLabelRenderer renderer);
044:
045: /**
046: * Informs whether the original (saved as pattern) markup is used to render.
047: *
048: * <p>The default value is defined by {@link org.itsnat.core.ItsNatDocument#isUsePatternMarkupToRender()}</p>
049: *
050: * @return true if the original markup is used.
051: * @see #setUsePatternMarkupToRender(boolean)
052: */
053: public boolean isUsePatternMarkupToRender();
054:
055: /**
056: * Sets whether the original (saved as pattern) markup is used to render.
057: *
058: * @param value true to enable the use of original markup to render.
059: * @see #isUsePatternMarkupToRender()
060: */
061: public void setUsePatternMarkupToRender(boolean value);
062:
063: /**
064: * Returns the pattern used to render values if {@link #isUsePatternMarkupToRender()}
065: * is true.
066: *
067: * @return the pattern used to render values.
068: */
069: public DocumentFragment getContentPatternFragment();
070:
071: /**
072: * Renders the specified value into the label
073: * using the current renderer. If the label does not contains markup is added
074: * using the pattern.
075: *
076: * @param value the value to render.
077: * @see #getElementLabelRenderer()
078: * @see #addLabelMarkup(Object)
079: * @see ElementRenderer#render(Object,Object,Element,boolean)
080: */
081: public void setLabelValue(Object value);
082:
083: /**
084: * Informs whether this label contains markup.
085: *
086: * @return true if this label contains markup.
087: */
088: public boolean hasLabelMarkup();
089:
090: /**
091: * Adds the label pattern markup inside the label element.
092: *
093: * @see #addLabelMarkup(Object)
094: */
095: public void addLabelMarkup();
096:
097: /**
098: * Adds the label pattern markup inside the label element and renders the specified value.
099: *
100: *
101: * @param value the value to render.
102: * @see #setLabelValue(Object)
103: */
104: public void addLabelMarkup(Object value);
105:
106: /**
107: * Removes the label markup inside the label element.
108: *
109: * @see #addLabelMarkup()
110: */
111: public void removeLabelMarkup();
112: }
|