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.comp;
015:
016: import org.itsnat.comp.ui.ItsNatTextComponentUI;
017: import javax.swing.text.Document;
018:
019: /**
020: * Is the base interface of text based components.
021: *
022: * <p>A text based component manages a single piece of text.</p>
023: *
024: * @author Jose Maria Arranz Santamaria
025: */
026: public interface ItsNatTextComponent extends ItsNatElementComponent {
027: /**
028: * Returns the current data model of this component.
029: *
030: * @return the current data model
031: * @see #setDocument(javax.swing.text.Document)
032: */
033: public Document getDocument();
034:
035: /**
036: * Changes the data model of this component.
037: *
038: * <p>Current data model is disconnected from this component, and the new
039: * data model is bound to this component, every change is tracked and
040: * updates the user interfaces accordingly.</p>
041: *
042: * <p>If the specified data model is the same instance as the current data model,
043: * then is reset, component listener is removed and added again. Use this technique if
044: * you want to add a data model listener to be executed <i>before</i> the default component listener.
045: *
046: * @param dataModel the new data model.
047: * @see #getDocument()
048: */
049: public void setDocument(Document dataModel);
050:
051: /**
052: * Returns the text contained in this component.
053: *
054: * <p>This method is a quick access to the data model text
055: * (see <code>javax.swing.text.Document.getText(int,int)</code>)</p>
056: *
057: * @return the component text.
058: * @see #setText(String)
059: * @see #getDocument()
060: */
061: public String getText();
062:
063: /**
064: * Updates the text contained in this component.
065: *
066: * <p>This method is a quick access to modify the data model text
067: * (see <code>javax.swing.text.Document.remove(int,int)</code>
068: * and <code>javax.swing.text.Document.insertString(int,int,AttributeSet)</code>).</p>
069: *
070: * <p>The component keeps track of data model changes the user interface is updated
071: * accordingly.</p>
072: *
073: * @param t the text.
074: * @see #getText()
075: * @see #getDocument()
076: */
077: public void setText(String t);
078:
079: /**
080: * Fetches the text contained within the given portion
081: * of the text of this component.
082: *
083: * <p>This method is a direct wrapper of <code>javax.swing.text.Document.getText(int,int)</code>.</p>
084: *
085: * @param offset the offset into the document representing the desired start of the text >= 0
086: * @param length the length of the desired string >= 0
087: * @see #getText()
088: * @see #getDocument()
089: */
090: public String getText(int offset, int length);
091:
092: /**
093: * Appends a new string at the end.
094: *
095: * <p>This method is a quick access to modify the data model text
096: * (see <code>javax.swing.text.Document.insertString(int,int,AttributeSet)</code>).</p>
097: *
098: * <p>The component keeps track of data model changes the user interface is updated
099: * accordingly.</p>
100: *
101: * @param str the string to add.
102: * @see #getText()
103: * @see #getDocument()
104: * @see #insertString(String,int)
105: */
106: public void appendString(String str);
107:
108: /**
109: * Inserts a new string at the specified position.
110: *
111: * <p>This method is a quick access to modify the data model text
112: * (see <code>javax.swing.text.Document.insertString(int,int,AttributeSet)</code>).</p>
113: *
114: * <p>The component keeps track of data model changes the user interface is updated
115: * accordingly.</p>
116: *
117: * @param str the text.
118: * @see #getText()
119: * @see #getDocument()
120: * @see #appendString(String)
121: */
122: public void insertString(String str, int pos);
123:
124: /**
125: * Replaces a text part with a new string at the specified position.
126: *
127: * <p>This method is a quick access to modify the data model text
128: * (see <code>javax.swing.text.Document.insertString(int,int,AttributeSet)</code>).</p>
129: *
130: * <p>This method is a quick access to modify the data model text
131: * (see <code>javax.swing.text.Document.remove(int,int)</code>
132: * and <code>javax.swing.text.Document.insertString(int,int,AttributeSet)</code>).</p>
133: *
134: * @param str the text.
135: * @see #getText()
136: * @see #getDocument()
137: * @see #appendString(String)
138: */
139: public void replaceString(String str, int start, int end);
140:
141: /**
142: * Create a new instance of the default data model.
143: *
144: * <p>Returned data model is not bound to this component.</p>
145: *
146: * @return a new default data model instance.
147: * @see #setDocument(javax.swing.text.Document)
148: */
149: public Document createDefaultDocument();
150:
151: /**
152: * Returns the user interface manager of this component.
153: *
154: * @return the user interface manager.
155: */
156: public ItsNatTextComponentUI getItsNatTextComponentUI();
157:
158: }
|