A few small changes to BidiFormatter. Mainly, it now uses DirectionEstimator that can be modified instead of the constant estimating function of BidiUtils.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9227 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/i18n/shared/BidiFormatter.java b/user/src/com/google/gwt/i18n/shared/BidiFormatter.java
index 12060e4..a043fe5 100644
--- a/user/src/com/google/gwt/i18n/shared/BidiFormatter.java
+++ b/user/src/com/google/gwt/i18n/shared/BidiFormatter.java
@@ -211,6 +211,8 @@
private boolean alwaysSpan;
private Direction contextDir;
+ private DirectionEstimator directionEstimator =
+ WordCountDirectionEstimator.get();
/**
* @param contextDir The context direction
@@ -240,14 +242,14 @@
* Returns "dir=ltr" or "dir=rtl", depending on {@code str}'s estimated
* direction, if it is not the same as the context direction. Otherwise,
* returns the empty string.
- *
+ *
* @param str String whose direction is to be estimated
* @param isHtml Whether {@code str} is HTML / HTML-escaped
* @return "dir=rtl" for RTL text in non-RTL context; "dir=ltr" for LTR text
* in non-LTR context; else, the empty string.
*/
public String dirAttr(String str, boolean isHtml) {
- return knownDirAttr(BidiUtils.get().estimateDirection(str, isHtml));
+ return knownDirAttr(directionEstimator.estimateDirection(str, isHtml));
}
/**
@@ -266,7 +268,7 @@
* @return {@code str}'s estimated overall direction
*/
public Direction estimateDirection(String str) {
- return BidiUtils.get().estimateDirection(str);
+ return directionEstimator.estimateDirection(str);
}
/**
@@ -279,7 +281,7 @@
* @return {@code str}'s estimated overall direction
*/
public Direction estimateDirection(String str, boolean isHtml) {
- return BidiUtils.get().estimateDirection(str, isHtml);
+ return directionEstimator.estimateDirection(str, isHtml);
}
/**
@@ -297,6 +299,10 @@
return contextDir;
}
+ public DirectionEstimator getDirectionEstimator() {
+ return directionEstimator;
+ }
+
/**
* Returns whether the context direction is RTL.
*/
@@ -354,8 +360,12 @@
*/
public String markAfter(String str, boolean isHtml) {
str = BidiUtils.get().stripHtmlIfNeeded(str, isHtml);
- return dirResetIfNeeded(str, BidiUtils.get().estimateDirection(str), false,
- true);
+ return dirResetIfNeeded(str, directionEstimator.estimateDirection(str),
+ false, true);
+ }
+
+ public void setDirectionEstimator(DirectionEstimator directionEstimator) {
+ this.directionEstimator = directionEstimator;
}
/**
@@ -407,12 +417,13 @@
* @return Input string after applying the above processing.
*/
public String spanWrap(String str, boolean isHtml, boolean dirReset) {
- Direction dir = BidiUtils.get().estimateDirection(str, isHtml);
+ Direction dir = directionEstimator.estimateDirection(str, isHtml);
return spanWrapWithKnownDir(dir, str, isHtml, dirReset);
}
/**
- * Like {@link #spanWrapWithKnownDir(HasDirection.Direction, String, boolean, boolean)},
+ * Like
+ * {@link #spanWrapWithKnownDir(com.google.gwt.i18n.client.HasDirection.Direction, String, boolean, boolean)},
* but assumes {@code isHtml} is false and {@code dirReset} is true.
*
* @param dir {@code str}'s direction
@@ -424,7 +435,8 @@
}
/**
- * Like {@link #spanWrapWithKnownDir(HasDirection.Direction, String, boolean, boolean)},
+ * Like
+ * {@link #spanWrapWithKnownDir(com.google.gwt.i18n.client.HasDirection.Direction, String, boolean, boolean)},
* but assumes {@code dirReset} is true.
*
* @param dir {@code str}'s direction
@@ -543,12 +555,13 @@
* @return Input string after applying the above processing.
*/
public String unicodeWrap(String str, boolean isHtml, boolean dirReset) {
- Direction dir = BidiUtils.get().estimateDirection(str, isHtml);
+ Direction dir = directionEstimator.estimateDirection(str, isHtml);
return unicodeWrapWithKnownDir(dir, str, isHtml, dirReset);
}
/**
- * Like {@link #unicodeWrapWithKnownDir(HasDirection.Direction, String, boolean, boolean)},
+ * Like
+ * {@link #unicodeWrapWithKnownDir(com.google.gwt.i18n.client.HasDirection.Direction, String, boolean, boolean)},
* but assumes {@code isHtml} is false and {@code dirReset} is true.
*
* @param dir {@code str}'s direction
@@ -560,7 +573,8 @@
}
/**
- * Like {@link #unicodeWrapWithKnownDir(HasDirection.Direction, String, boolean, boolean)},
+ * Like
+ * {@link #unicodeWrapWithKnownDir(com.google.gwt.i18n.client.HasDirection.Direction, String, boolean, boolean)},
* but assumes {@code dirReset} is true.
*
* @param dir {@code str}'s direction