// file: $ISIP_IFC/util/demo/isip_comm_client_speech_analysis/RunnableJTextPane.java // version: $Id: RunnableJTextPane.java 10228 2005-09-09 19:15:21Z stanley $ // // import necessary java libraries // import javax.swing.text.*; import java.awt.*; import javax.swing.*; import java.util.*; /** * This class is used as the user interface for a * RunnableJTextPane object. */ public class RunnableJTextPane implements Runnable { //------------------------------------------------------------------------- // // public constants // //------------------------------------------------------------------------- /** * Maximum number of characters in the display window. */ public static final int MAX_CHARACTERS = 3000; /** * Default UI height. */ public static final int MAX_UI_HEIGHT = 700; /** * Default UI width. */ public static final int MAX_UI_WIDTH = 1000; /** * Append the text. */ public static final int APPEND = 0; /** * Clear the area. */ public static final int CLEAR = 1; /** * Append a new line ("\n") at the end of file. */ public static final int APPEND_NEWLINE = -1; //------------------------------------------------------------------------ // // protected data // //----------------------------------------------------------------------- /** * A vector to hold the text data. */ protected Vector textData_d; /** * A vector to hold the text data. */ protected Vector textBuffer_d; /** * A document object to hold the information. */ protected Document doc_d; /** * A JtextPane object. */ protected JTextPane rows_d; /** * A string intended to insert to the document. */ protected String request_d; /** * Inserting mode for a specified string. */ protected int mode_d; /** * An attribute set for a specified string */ protected MutableAttributeSet mas_d; //------------------------------------------------------------------------- // // public methods // //------------------------------------------------------------------------- /** * Creates the Recorder window which includes the input window, * Energy monitor window, and the waveform window. It also * establishes the connection with the control server. * * @param textData_a a vector to hold the text data. * @param textBuffer_a a vector to hold the text data. * @param doc_a a document object to hold the information. * @param rows_a a JtextPane object. * @param request_a a string intended to insert to the document. * @param mode_a inserting mode for a specified string. */ public RunnableJTextPane(Vector textData_a, Vector textBuffer_a, Document doc_a, JTextPane rows_a, String request_a, int mode_a) { // create the document for the input window // textData_d = textData_a; textBuffer_d = textBuffer_a; doc_d = doc_a; rows_d = rows_a; request_d = request_a; mode_d = mode_a; rows_d.setCaretPosition(0); rows_d.setMargin(new Insets(5,5,5,5)); mas_d = new SimpleAttributeSet(); } // Method called by SwingUtilities.invokeLater to update // outputArea. // public void run() { try { // clear the current display // doc_d.remove(0, doc_d.getLength()); // new user request detected // if (mode_d == APPEND) { // add the string to the end of the file // move the current buffer data to the history // for (int i = 0; i < textBuffer_d.size(); i++) { textData_d.add(textBuffer_d.get(i)); } // clear the current buffer and add the new request // textBuffer_d.clear(); if(textBuffer_d.capacity() > textBuffer_d.size()){ textBuffer_d.add(""); } } if (mode_d == CLEAR) { // clear the current display // textData_d.clear(); textBuffer_d.clear(); doc_d.remove(0, doc_d.getLength()); } // display the history // StyleConstants.setFontSize(mas_d, 12); StyleConstants.setForeground(mas_d, Color.blue); for (int i = 0; i < textData_d.size(); i++) { doc_d.insertString(doc_d.getLength(), textData_d.get(i)+"", mas_d); } // display the current buffer // textBuffer_d.add(request_d); for (int i = 0; i < textBuffer_d.size(); i++) { String tmp_str = "" + textBuffer_d.get(i); if (tmp_str.startsWith("[System]: ")) { StyleConstants.setForeground(mas_d, Color.red); doc_d.insertString(doc_d.getLength(), tmp_str, mas_d); } else { StyleConstants.setForeground(mas_d, Color.blue); doc_d.insertString(doc_d.getLength(), tmp_str, mas_d); } } } catch (Exception ignore) { System.out.println(ignore.toString());} rows_d.setCaretPosition(doc_d.getLength()); } }