Класс GapContent

Все реализованные интерфейсы:
Serializable, AbstractDocument.Content
public class GapContent
extends Object
implements AbstractDocument.Content, Serializable

Реализация интерфейса AbstractDocument.Content, использующая буфер с разрывом (gap), подобный тому, что используется в emacs. Основное хранилище — массив символов Юникода с разрывом в некотором месте. Разрыв перемещается в место изменений, чтобы использовать преимущества того, что большинство изменений происходят в одном месте. Изменения, происходящие на границе разрыва, обычно недороги, а перемещение разрыва, как правило, обходится дешевле, чем прямое перемещение содержимого массива для адаптации к изменению.

Отслеживание позиций изменений также, как правило, не требует больших затрат. Реализации позиции (метки) хранят индекс массива и могут легко рассчитать последовательную позицию из текущего расположения разрыва. Изменения требуют обновления только меток между старой и новой границами разрыва при перемещении разрыва, поэтому, как правило, обновление меток довольно недорого. Метки хранятся в отсортированном виде, что позволяет быстро их находить с помощью бинарного поиска. Это увеличивает стоимость добавления метки и уменьшает стоимость поддержания метки в актуальном состоянии.

См. также:
Сериализованная форма

Конструкторы

Конструктор Описание
GapContent()

Создаёт новый объект GapContent.

GapContent​(int initialLength)

Создаёт новый объект GapContent с заданным начальным размером.

Методы

Модификатор и тип Метод Описание
protected Object allocateArray​(int len)

Выделяет массив для хранения элементов соответствующего типа (определяется подклассом).

Position createPosition​(int offset)

Создаёт позицию внутри содержимого, которая будет отслеживать изменения при изменении содержимого.

protected Object getArray()

Доступ к массиву.

protected int getArrayLength()

Получить длину выделенного массива.

void getChars​(int where, int len, Segment chars)

Извлекает часть содержимого.

protected int getGapEnd()

Доступ к концу разрыва.

protected int getGapStart()

Доступ к началу разрыва.

protected Vector getPositionsInRange​(Vector v, int offset, int length)

Возвращает вектор, содержащий экземпляры UndoPosRef для позиций в диапазоне offset до offset + length.

String getString​(int where, int len)

Извлекает часть содержимого.

UndoableEdit insertString​(int where, String str)

Вставляет строку в содержимое.

int length()

Возвращает длину содержимого.

UndoableEdit remove​(int where, int nitems)

Удаляет часть содержимого.

protected void replace​(int position, int rmSize, Object addItems, int addSize)

Заменяет заданную логическую позицию в хранилище заданными новыми элементами.

protected void resetMarksAtZero()

Сбрасывает все метки, у которых смещение равно 0, так, чтобы их индекс также был нулевым.

protected void shiftEnd​(int newSize)

Увеличивает размер разрыва, перемещая необходимые данные и обновляя соответствующие метки.

protected void shiftGap​(int newGapStart)

Перемещает начало разрыва в новое местоположение без изменения размера разрыва.

protected void shiftGapEndUp​(int newGapEnd)

Изменяет конец разрыва вверх.

protected void shiftGapStartDown​(int newGapStart)

Изменяет конец разрыва вниз.

protected void updateUndoPositions​(Vector positions, int offset, int length)

Сбрасывает местоположение для всех экземпляров UndoPosRef в positions.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

GapContent

public GapContent()

Создаёт новый объект GapContent. Начальный размер по умолчанию равен 10.

GapContent

public GapContent(int initialLength)

Создаёт новый объект GapContent с указанным начальным размером. Начальный размер не может быть меньше 2, чтобы обеспечить место для подразумеваемого разрыва и промежутка.

Параметры:
initialLength - начальный размер

Методы

allocateArray

protected Object allocateArray(int len)

Выделяет массив для хранения элементов соответствующего типа (который определяется подклассом).

getArrayLength

protected int getArrayLength()

Получить длину выделенного массива.

length

public int length()

Возвращает длину содержимого.

Определено в:
length в интерфейсе AbstractDocument.Content
Возвращает:
длину >= 1
См. также:
AbstractDocument.Content.length()

insertString

public UndoableEdit insertString(int where,
                                 String str)
                          throws BadLocationException

Вставляет строку в содержимое.

Определено в:
insertString в интерфейсе AbstractDocument.Content
Параметры:
where - начальная позиция >= 0, < length()
str - непустая строка для вставки
Возвращает:
объект UndoableEdit для отмены
Исключения:
BadLocationException - если указанная позиция недопустима
См. также:
AbstractDocument.Content.insertString(int, java.lang.String)

remove

public UndoableEdit remove(int where,
                           int nitems)
                    throws BadLocationException

Удаляет часть содержимого.

Определено в:
remove в интерфейсе AbstractDocument.Content
Параметры:
where - начальная позиция >= 0, где + nitems < length()
nitems - количество символов для удаления >= 0
Возвращает:
объект UndoableEdit для отмены
Исключения:
BadLocationException - если указанная позиция недопустима
См. также:
AbstractDocument.Content.remove(int, int)

getString

public String getString(int where,
                        int len)
                 throws BadLocationException

Извлекает часть содержимого.

Определено в:
getString в интерфейсе AbstractDocument.Content
Параметры:
where - начальная позиция >= 0
len - длина для извлечения >= 0
Возвращает:
строка, представляющая содержимое
Исключения:
BadLocationException - если указанная позиция недопустима
См. также:
AbstractDocument.Content.getString(int, int)

getChars

public void getChars(int where,
                     int len,
                     Segment chars)
              throws BadLocationException

Извлекает часть содержимого. Если необходимое содержимое охватывает промежуток, мы копируем содержимое. Если необходимое содержимое не охватывает промежуток, возвращается фактическое хранилище, чтобы избежать копирования, так как оно непрерывно.

Определено в:
getChars в интерфейсе AbstractDocument.Content
Параметры:
where - начальная позиция >= 0, где + len <= length()
len - количество символов для извлечения >= 0
chars - объект Segment для возврата символов
Исключения:
BadLocationException - если указанная позиция недопустима
См. также:
AbstractDocument.Content.getChars(int, int, javax.swing.text.Segment)

createPosition

public Position createPosition(int offset)
                        throws BadLocationException

Создаёт позицию в содержимом, которая будет отслеживать изменения по мере изменения содержимого.

Определено в:
createPosition в интерфейсе AbstractDocument.Content
Параметры:
offset - смещение для отслеживания >= 0
Возвращает:
позицию
Исключения:
BadLocationException - если указанная позиция недопустима

shiftEnd

protected void shiftEnd(int newSize)

Увеличить промежуток, переместив необходимые данные и обновив соответствующие метки.

shiftGap

protected void shiftGap(int newGapStart)

Переместить начало промежутка в новое местоположение, не изменяя размер промежутка. Это перемещает данные в массиве и обновляет метки соответственно.

resetMarksAtZero

protected void resetMarksAtZero()

Сбрасывает все метки, у которых смещение равно 0, чтобы их индекс также был равен нулю.

shiftGapStartDown

protected void shiftGapStartDown(int newGapStart)

Настроить конец промежутка вниз. Это не перемещает данные, но обновляет любые метки, затронутые изменением границы. Все метки от старого начала промежутка до нового начала промежутка сжимаются до конца промежутка (их местоположение было удалено).

shiftGapEndUp

protected void shiftGapEndUp(int newGapEnd)

Настроить конец промежутка вверх. Это не перемещает данные, но обновляет любые метки, затронутые изменением границы. Все метки от старого конца промежутка до нового конца промежутка сжимаются до конца промежутка (их местоположение было удалено).

getPositionsInRange

protected Vector getPositionsInRange(Vector v,
                                     int offset,
                                     int length)

Возвращает Vector, содержащий экземпляры UndoPosRef для позиций в диапазоне offset до offset + length. Если v не равно null, соответствующие позиции помещаются в него. Возвращается вектор с результирующими позициями.

Параметры:
v - используемый Vector, если null, создаётся новый
offset - начальное смещение >= 0
length - длина >= 0
Возвращает:
множество экземпляров

updateUndoPositions

protected void updateUndoPositions(Vector positions,
                                   int offset,
                                   int length)

Сбрасывает положение для всех экземпляров UndoPosRef в positions.

Этот метод предназначен для внутреннего использования и, как правило, не представляет интереса для подклассов.

Параметры:
positions - экземпляры UndoPosRef для сброса
offset - место вставки строки
length - длина вставленной строки

getArray

protected final Object getArray()

Доступ к массиву. Фактический тип массива известен только подклассу.

getGapStart

protected final int getGapStart()

Доступ к началу промежутка.

getGapEnd

protected final int getGapEnd()

Доступ к концу промежутка.

replace

protected void replace(int position,
                       int rmSize,
                       Object addItems,
                       int addSize)

Заменяет заданную логическую позицию в хранилище заданными новыми элементами. Это переместит промежуток в область, которая изменяется, если промежуток не расположен в месте изменения.

Параметры:
position - местоположение для замены. Это не местоположение в базовом массиве хранения, а местоположение в непрерывном пространстве, которое моделируется.
rmSize - количество элементов для удаления
addItems - новые элементы для размещения в хранилище.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/text/GapContent.html

Spec-Zone .ru
спецификации, руководства, описания, API