Package org.fife.ui.rtextarea

Source Code of org.fife.ui.rtextarea.RDocument

/*
* 06/30/2012
*
* RDocument.java - Document class used by RTextAreas.
*
* This library is distributed under a modified BSD license.  See the included
* RSyntaxTextArea.License.txt file for details.
*/
package org.fife.ui.rtextarea;

import javax.swing.text.BadLocationException;
import javax.swing.text.GapContent;
import javax.swing.text.PlainDocument;


/**
* The document implementation used by instances of <code>RTextArea</code>.
*
* @author Robert Futrell
* @version 1.0
*/
public class RDocument extends PlainDocument {


  /**
   * Constructor.
   */
  public RDocument() {
    super(new RGapContent());
  }


  /**
   * Returns the character in the document at the specified offset.
   *
   * @param offset The offset of the character.
   * @return The character.
   * @throws BadLocationException If the offset is invalid.
   */
  public char charAt(int offset) throws BadLocationException {
    return ((RGapContent)getContent()).charAt(offset);
  }


  /**
   * Document content that provides fast access to individual characters.
   */
  private static class RGapContent extends GapContent {

    public char charAt(int offset) throws BadLocationException {
      if (offset<0 || offset>=length()) {
        throw new BadLocationException("Invalid offset", offset);
      }
      int g0 = getGapStart();
      char[] array = (char[]) getArray();
      if (offset<g0) { // below gap
        return array[offset];
      }
      return array[getGapEnd() + offset - g0]; // above gap
    }

  }


}
TOP

Related Classes of org.fife.ui.rtextarea.RDocument

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.