|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.swing.text.GapContent
public class GapContent
emacs が使うものと類似したギャップ付きバッファーを使って実装された AbstractDocument.Content インタフェースの実装です。記憶される内容は、どこかにギャップを持つ Unicode 文字列の配列です。ギャップは変更の位置に移動されるので、ほとんどの変更が同じ位置にある場所で、共通の動作を利用できるようになります。ギャップ境界で生じる変更は一般的に簡単なものなので、配列の内容を直接移動して変更を適用するよりもギャップを移動するほうが手間がかかりません。
また、変更を追跡する位置を管理するのも一般的に簡単です。位置の実装 (マーク) は配列インデックスを格納し、現在のギャップ位置から逐次位置を簡単に計算できます。変更ではギャップの移動時に新旧ギャップ境界間のマークに対する更新を必要とするだけなので、マークの更新は一般に非常に手軽です。マークはソートされた状態で格納されるので、2 等分探索ですばやく見つけられます。これはマークを追加する手間を増大させる一方で、マークの更新を維持する手間を減らします。
コンストラクタの概要 | |
---|---|
GapContent()
新しい GapContent オブジェクトを作成します。 |
|
GapContent(int initialLength)
指定された初期サイズで新しい GapContent オブジェクトを生成します。 |
メソッドの概要 | |
---|---|
protected Object |
allocateArray(int len)
項目を格納するための適切な型の配列を割り当てます。 |
Position |
createPosition(int offset)
コンテンツが変更されたときに変更を追跡するコンテンツ内の位置を作成します。 |
protected Object |
getArray()
Access to the array. |
protected int |
getArrayLength()
割り当てられた配列の長さを取得します。 |
void |
getChars(int where,
int len,
Segment chars)
コンテンツの一部を取り出します。 |
protected int |
getGapEnd()
Access to the end of the gap. |
protected int |
getGapStart()
Access to the start of the gap. |
protected Vector |
getPositionsInRange(Vector v,
int offset,
int length)
offset 〜 offset + length の範囲にある位置に対応する UndoPosRef のインスタンスを含むベクターを返します。 |
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)
Replace the given logical position in the storage with the given new items. |
protected void |
resetMarksAtZero()
オフセットが 0 のマークをすべてリセットして、インデックスも 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)
positions のすべての UndoPosRef インスタンスの位置をリセットします。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public GapContent()
public GapContent(int initialLength)
initialLength
- 初期サイズメソッドの詳細 |
---|
protected Object allocateArray(int len)
protected int getArrayLength()
public int length()
AbstractDocument.Content
内の length
AbstractDocument.Content.length()
public UndoableEdit insertString(int where, String str) throws BadLocationException
AbstractDocument.Content
内の insertString
where
- 開始位置 >= 0、< length()str
- 挿入する null 以外の文字列
BadLocationException
- 指定された位置が無効な場合AbstractDocument.Content.insertString(int, java.lang.String)
public UndoableEdit remove(int where, int nitems) throws BadLocationException
AbstractDocument.Content
内の remove
where
- 開始位置 >= 0、where + nitems < length()nitems
- 削除対象の文字数 >= 0
BadLocationException
- 指定された位置が無効な場合AbstractDocument.Content.remove(int, int)
public String getString(int where, int len) throws BadLocationException
AbstractDocument.Content
内の getString
where
- 開始位置 >= 0len
- 取り出す長さ >= 0
BadLocationException
- 指定された位置が無効な場合AbstractDocument.Content.getString(int, int)
public void getChars(int where, int len, Segment chars) throws BadLocationException
AbstractDocument.Content
内の getChars
where
- 開始位置 >= 0。ここで + len <= length()len
- 検索対象の文字数 >= 0chars
- 文字を返す先の Segment オブジェクト
BadLocationException
- 指定された位置が無効な場合AbstractDocument.Content.getChars(int, int, javax.swing.text.Segment)
public Position createPosition(int offset) throws BadLocationException
AbstractDocument.Content
内の createPosition
offset
- 追跡対象のオフセット >= 0
BadLocationException
- 指定された位置が無効な場合protected void shiftEnd(int newSize)
protected void shiftGap(int newGapStart)
protected void resetMarksAtZero()
protected void shiftGapStartDown(int newGapStart)
protected void shiftGapEndUp(int newGapEnd)
protected Vector getPositionsInRange(Vector v, int offset, int length)
offset
〜 offset
+ length
の範囲にある位置に対応する UndoPosRef のインスタンスを含むベクターを返します。v が null ではない場合、一致する位置がそこに配置されます。結果として得られる位置を持つベクタが返されます。
v
- 使用するベクタ。null の場合は新しいベクタが作成されるoffset
- 開始オフセット <= 0length
- 長さ >= 0
protected void updateUndoPositions(Vector positions, int offset, int length)
positions
のすべての UndoPosRef インスタンスの位置をリセットします。
これは内部での使用を目的としていて、一般にはサブクラスを対象にしていません。
positions
- リセット対象の UndoPosRef のインスタンスprotected final Object getArray()
protected final int getGapStart()
protected final int getGapEnd()
protected void replace(int position, int rmSize, Object addItems, int addSize)
position
- the location to make the replacement. This
is not the location in the underlying storage array, but
the location in the contiguous space being modeled.rmSize
- the number of items to removeaddItems
- the new items to place in storage.
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。