カーソルが XML 範囲内にあるかどうかを判断する必要があります。Range の開始テキスト ノードと終了テキスト ノードを設定しました。この場合、compareBoundaryPoints メソッドは正しく機能しないと思います。確かに、私は間違っている可能性があります。Java ではcom.arbortext.epic.ADocument
、org.w3c.dom.ranges.Range
インポートを使用します。
holeRange_
はorg.w3c.dom.ranges.Range
オブジェクトです。
holeRange_ = ((DocumentRange) txtProcessor_.GetDocument()).createRange();
holeRange_.setStart(startNode, 0); //text node
holeRange_.setEndAfter(endNode); //text node
クリック イベント ハンドラの本体は次のとおりです。
Range caretRange = ((ADocument) txtProcessor_.GetDocument()).getInsertionPoint();
if (caretRange != null) {
DebugMode.println(caretRange.getStartContainer().getNodeValue());
DebugMode.println("END_TO_START = " +
textNodeRange_.compareBoundaryPoints(Range.END_TO_START, caretRange));
DebugMode.println("START_TO_END = " +
holeRange_.compareBoundaryPoints(Range.START_TO_END, caretRange));
}
カーソルが範囲内にある場合、出力は END_TO_START = -1 および START_TO_END = -1 を返します。Check if specified element is inside selectionによると、値は END_TO_START = -1 および START_TO_END = 1 である必要があります 。