1 // Copyright (C) 2004 Philip Aston 2 // All rights reserved. 3 // 4 // This file is part of The Grinder software distribution. Refer to 5 // the file LICENSE which is part of The Grinder distribution for 6 // licensing details. The Grinder distribution is available on the 7 // Internet at http://grinder.sourceforge.net/ 8 // 9 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 // OF THE POSSIBILITY OF SUCH DAMAGE. 21 22 package net.grinder.console.editor; 23 24 import java.util.EventListener; 25 26 27 /** 28 * Something that can edit text. 29 * 30 * @author Philip Aston 31 */ 32 public interface TextSource { 33 34 /** 35 * Return the current text. 36 * 37 * @return The text. 38 */ 39 String getText(); 40 41 /** 42 * Set the text. 43 * 44 * @param text The new text. 45 */ 46 void setText(String text); 47 48 /** 49 * Return whether the text has changed since the last call to {@link 50 * #getText} or {@link #setText}. 51 * 52 * @return <code>true</code> => the text has changed. 53 */ 54 boolean isDirty(); 55 56 /** 57 * Listener registration. 58 * 59 * @param listener The listener. 60 */ 61 void addListener(Listener listener); 62 63 /** 64 * Listener interface. 65 */ 66 interface Listener extends EventListener { 67 68 /** 69 * Called when the {@link TextSource} has changed. 70 * 71 * @param dirtyStateChanged <code>true</code> iff the 72 * <code>TextSource</code> changed from clean to dirty or vice 73 * versa. 74 */ 75 void textSourceChanged(boolean dirtyStateChanged); 76 } 77 78 /** 79 * Factory interface. 80 */ 81 interface Factory { 82 TextSource create(); 83 } 84 }