Spec-Zone.ru › OpenJDK 8

Класс GapContent

  • java.lang.Object
    • javax.swing.text.GapContent
Все реализованные интерфейсы:
Serializable, AbstractDocument.Content

public class GapContent
extends Object
implements AbstractDocument.Content, Serializable

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

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

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

Конструктор и описание
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)

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

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

updateUndoPositions

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

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

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

Параметры:
positions - экземпляры UndoPosRef для сброса

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API