001 /* 002 * Copyright (C) 2010 eXo Platform SAS. 003 * 004 * This is free software; you can redistribute it and/or modify it 005 * under the terms of the GNU Lesser General Public License as 006 * published by the Free Software Foundation; either version 2.1 of 007 * the License, or (at your option) any later version. 008 * 009 * This software is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * You should have received a copy of the GNU Lesser General Public 015 * License along with this software; if not, write to the Free 016 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 017 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 018 */ 019 020 package org.crsh.term; 021 022 import org.crsh.text.CharReader; 023 024 import java.io.Closeable; 025 import java.io.IOException; 026 027 /** 028 * An high level term abstraction. 029 * 030 * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> 031 * @version $Revision$ 032 */ 033 public interface Term extends Closeable { 034 035 036 /** 037 * Returns the term width in chars. When the value is not positive it means the value could not be determined. 038 * 039 * @return the term width 040 */ 041 int getWidth(); 042 043 /** 044 * Retrieves the value of a property specified by this Term 045 * 046 * @param name name of the term property 047 * @return value of the term property 048 */ 049 String getProperty(String name); 050 051 /** 052 * Set the echo mode on the term. 053 * 054 * @param echo the echo mode 055 */ 056 void setEcho(boolean echo); 057 058 /** 059 * Read the next term event. This operation is a blocking operation that blocks until data is available or until 060 * term is closed. 061 * 062 * @return the next term event 063 * @throws IOException any io exception 064 */ 065 TermEvent read() throws IOException; 066 067 /** 068 * Write a message on the console, the text will be appended. 069 * 070 * 071 * @param reader the message to write 072 * @throws IOException any io exception 073 */ 074 void write(CharReader reader) throws IOException; 075 076 /** 077 * Returns the insert buffer, any char appended in the returned appendable will translate into an 078 * insertion in the buffer. 079 * 080 * @return the insert buffer. 081 */ 082 Appendable getInsertBuffer(); 083 084 /** 085 * Returns the current buffer; 086 * 087 * @return the buffer 088 */ 089 CharSequence getBuffer(); 090 091 /** 092 * Append a line to the term history. 093 * 094 * @param line the history line to append 095 */ 096 void addToHistory(CharSequence line); 097 098 /** 099 * Close the term. If threads are blocked in the {@link #read()} operation, those thread should be unblocked. 100 */ 101 void close(); 102 103 }