001 /** 002 * jline - Java console input library 003 * Copyright (c) 2002,2003 Marc Prud'hommeaux mwp1@cornell.edu 004 * 005 * This library is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public 007 * License as published by the Free Software Foundation; either 008 * version 2.1 of the License, or (at your option) any later version. 009 * 010 * This library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public 016 * License along with this library; if not, write to the Free Software 017 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 018 */ 019 package jline; 020 021 import java.io.*; 022 import java.util.*; 023 024 /** 025 * A CursorBuffer is a holder for a {@link StringBuffer} that 026 * also contains the current cursor position. 027 * 028 * @author <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a> 029 */ 030 public class CursorBuffer 031 { 032 public int cursor = 0; 033 public final StringBuffer buffer = new StringBuffer (); 034 035 036 public int length () 037 { 038 return buffer.length (); 039 } 040 041 042 public char current () 043 { 044 if (cursor <= 0) 045 return 0; 046 047 return buffer.charAt (cursor - 1); 048 } 049 050 051 /** 052 * Insert the specific character into the buffer, setting the 053 * cursor position ahead one. 054 * 055 * @param c the character to insert 056 */ 057 public void insert (final char c) 058 { 059 buffer.insert (cursor++, c); 060 } 061 062 063 /** 064 * Insert the specified {@link String} into the buffer, setting 065 * the cursor to the end of the insertion point. 066 * 067 * @param str the String to insert. Must not be null. 068 */ 069 public void insert (final String str) 070 { 071 if (buffer.length () == 0) 072 buffer.append (str); 073 else 074 buffer.insert (cursor, str); 075 076 cursor += str.length (); 077 } 078 079 080 public String toString () 081 { 082 return buffer.toString (); 083 } 084 }