View Javadoc

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  }