1 /*** 2 * Redistribution and use in source and binary forms, with or without 3 * modification, are permitted provided that the following conditions are 4 * met : 5 * 6 * . Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * 9 * . Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * . The name of the author may not be used to endorse or promote products 14 * derived from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 20 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 24 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 25 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 * 28 * $Id$ 29 */ 30 31 package palmed.edit.selection; 32 33 import java.io.IOException; 34 import java.io.InputStream; 35 import java.io.OutputStream; 36 import palmed.io.ISerializable; 37 38 /*** 39 * This interface defines the operations available on a text selection. 40 * 41 * @author Mathieu Champlon 42 * @version $Revision$ $Date$ 43 */ 44 public interface ISelection extends ISerializable 45 { 46 /*** 47 * Test if the selection is empty. 48 * 49 * @return whether the selection is empty or not 50 */ 51 boolean isEmpty(); 52 53 /*** 54 * Extend selection one character forward. 55 */ 56 void forward(); 57 58 /*** 59 * Extend selection one character backward. 60 */ 61 void backward(); 62 63 /*** 64 * Extend selection up to the given point. 65 * 66 * @param x the destination column 67 * @param y the destination line 68 */ 69 void extend( int x, int y ); 70 71 /*** 72 * Clear selection. 73 */ 74 void clear(); 75 76 /*** 77 * Delete selection. 78 */ 79 void delete(); 80 81 /*** 82 * Visit a line of text. 83 * 84 * @param visitor the visitor 85 * @param y the line number 86 */ 87 void accept( ILineVisitor visitor, int y ); 88 89 /*** 90 * Reset selection. 91 */ 92 void reset(); 93 94 /*** 95 * Register a view to receive insertion point notification changes. 96 * 97 * @param view the view to register 98 */ 99 void register( ISelectionView view ); 100 101 /*** 102 * Copy the current selected text. 103 * 104 * @param stream the stream to write to 105 * @throws IOException an io exception occurs 106 */ 107 void copy( OutputStream stream ) throws IOException; 108 109 /*** 110 * Cut the current selected text. 111 * 112 * @param stream the stream to write to 113 * @throws IOException an io exception occurs 114 */ 115 void cut( OutputStream stream ) throws IOException; 116 117 /*** 118 * Paste the given text. 119 * 120 * @param stream the stream to read from 121 * @throws IOException an io exception occurs 122 */ 123 void paste( InputStream stream ) throws IOException; 124 125 /*** 126 * Replace the current selection with the text from the given stream. 127 * 128 * @param stream the stream 129 * @throws IOException an io exception occurs 130 */ 131 void read( InputStream stream ) throws IOException; 132 133 /*** 134 * Write the current selected text to the given stream. 135 * 136 * @param stream the stream 137 * @throws IOException an io exception occurs 138 */ 139 void write( OutputStream stream ) throws IOException; 140 }