< prev index next >
modules/graphics/src/main/java/javafx/scene/text/HitInfo.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 21,58 ****
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package com.sun.javafx.scene.text;
/**
* Represents the hit information in a Text node.
*/
public class HitInfo {
/**
* The index of the character which this hit information refers to.
*/
- private int charIndex;
public int getCharIndex() { return charIndex; }
- public void setCharIndex(int charIndex) { this.charIndex = charIndex; }
/**
* Indicates whether the hit is on the leading edge of the character.
* If it is false, it represents the trailing edge.
*/
- private boolean leading;
public boolean isLeading() { return leading; }
- public void setLeading(boolean leading) { this.leading = leading; }
/**
* Returns the index of the insertion position.
*/
public int getInsertionIndex() {
! return leading ? charIndex : charIndex + 1;
}
@Override public String toString() {
! return "charIndex: " + charIndex + ", isLeading: " + leading;
}
}
--- 21,99 ----
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package javafx.scene.text;
!
! import java.text.BreakIterator;
!
! import com.sun.javafx.scene.text.TextLayout;
/**
* Represents the hit information in a Text node.
+ *
+ * @since 9
*/
public class HitInfo {
+ private int charIndex;
+ private boolean leading;
+ private int insertionIndex;
+ private String text;
+
+ /**
+ * Create a HitInfo object representing a text index and forward bias.
+ *
+ * @param charIndex the character index.
+ * @param leading whether the hit is on the leading edge of the character. If it is false, it represents the trailing edge.
+ */
+ HitInfo(int charIndex, int insertionIndex, boolean leading, String text) {
+ this.charIndex = charIndex;
+ this.leading = leading;
+ this.insertionIndex = insertionIndex;
+ this.text = text;
+ }
+
/**
* The index of the character which this hit information refers to.
*/
public int getCharIndex() { return charIndex; }
/**
* Indicates whether the hit is on the leading edge of the character.
* If it is false, it represents the trailing edge.
*/
public boolean isLeading() { return leading; }
+ private static BreakIterator charIterator = null;
/**
* Returns the index of the insertion position.
*/
public int getInsertionIndex() {
! if (insertionIndex == -1) {
! insertionIndex = charIndex;
! if (!leading) {
! if (text != null) {
! // Skip complex character clusters / ligatures.
! if (charIterator == null) {
! charIterator = BreakIterator.getCharacterInstance();
! }
! charIterator.setText(text);
! int next = charIterator.following(insertionIndex);
! if (next == BreakIterator.DONE) {
! insertionIndex += 1;
! } else {
! insertionIndex = next;
! }
! } else {
! insertionIndex += 1;
! }
! }
! }
! return insertionIndex;
}
@Override public String toString() {
! return "charIndex: " + charIndex + ", isLeading: " + leading + ", insertionIndex: " + getInsertionIndex();
}
}
< prev index next >