home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Component;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Rectangle;
- import java.awt.font.TextAttribute;
- import java.awt.font.TextLayout;
- import java.lang.reflect.Method;
- import java.text.AttributedCharacterIterator;
- import java.text.AttributedString;
- import java.text.BreakIterator;
-
- public class Utilities {
- static boolean is1dot2 = false;
- // $FF: synthetic field
- static Class class$java$awt$Toolkit;
-
- public static final int drawTabbedText(Segment var0, int var1, int var2, Graphics var3, TabExpander var4, int var5) {
- FontMetrics var6 = var3.getFontMetrics();
- int var7 = var1;
- char[] var8 = var0.array;
- int var9 = var0.offset;
- int var10 = 0;
- int var11 = var0.offset;
- int var12 = var0.offset + var0.count;
-
- for(int var13 = var9; var13 < var12; ++var13) {
- if (var8[var13] == '\t') {
- if (var10 > 0) {
- var3.drawChars(var8, var11, var10, var1, var2);
- var10 = 0;
- }
-
- var11 = var13 + 1;
- if (var4 != null) {
- var7 = (int)var4.nextTabStop((float)var7, var5 + var13 - var9);
- } else {
- var7 += var6.charWidth(' ');
- }
-
- var1 = var7;
- } else if (var8[var13] != '\n' && var8[var13] != '\r') {
- ++var10;
- var7 += var6.charWidth(var8[var13]);
- } else {
- if (var10 > 0) {
- var3.drawChars(var8, var11, var10, var1, var2);
- var10 = 0;
- }
-
- var11 = var13 + 1;
- var1 = var7;
- }
- }
-
- if (var10 > 0) {
- var3.drawChars(var8, var11, var10, var1, var2);
- }
-
- return var7;
- }
-
- public static final int getTabbedTextWidth(Segment var0, FontMetrics var1, int var2, TabExpander var3, int var4) {
- int var5 = var2;
- char[] var6 = var0.array;
- int var7 = var0.offset;
- int var8 = var0.offset + var0.count;
-
- for(int var9 = var7; var9 < var8; ++var9) {
- if (var6[var9] == '\t') {
- if (var3 != null) {
- var5 = (int)var3.nextTabStop((float)var5, var4 + var9 - var7);
- } else {
- var5 += var1.charWidth(' ');
- }
- } else if (var6[var9] != '\n') {
- var5 += var1.charWidth(var6[var9]);
- }
- }
-
- return var5 - var2;
- }
-
- public static final int getTabbedTextOffset(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5) {
- return getTabbedTextOffset(var0, var1, var2, var3, var4, var5, true);
- }
-
- public static final int getTabbedTextOffset(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5, boolean var6) {
- int var7 = var2;
- int var8 = var2;
- char[] var9 = var0.array;
- int var10 = var0.offset;
- int var11 = var0.count;
- int var12 = var0.offset + var0.count;
-
- for(int var13 = var0.offset; var13 < var12; ++var13) {
- if (var9[var13] == '\t') {
- if (var4 != null) {
- var8 = (int)var4.nextTabStop((float)var8, var5 + var13 - var10);
- } else {
- var8 += var1.charWidth(' ');
- }
- } else {
- var8 += var1.charWidth(var9[var13]);
- }
-
- if (var3 >= var7 && var3 < var8) {
- if (var6 && var3 - var7 >= var8 - var3) {
- return var13 + 1 - var10;
- }
-
- return var13 - var10;
- }
-
- var7 = var8;
- }
-
- return var11;
- }
-
- public static final int getBreakLocation(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5) {
- char[] var6 = var0.array;
- int var7 = var0.offset;
- int var8 = var0.count;
- int var9 = getTabbedTextOffset(var0, var1, var2, var3, var4, var5, false);
-
- for(int var10 = var7 + Math.min(var9, var8 - 1); var10 >= var7; --var10) {
- char var11 = var6[var10];
- if (Character.isWhitespace(var11)) {
- var9 = var10 - var7 + 1;
- break;
- }
- }
-
- return var9;
- }
-
- public static final int getRowStart(JTextComponent var0, int var1) throws BadLocationException {
- Rectangle var2 = var0.modelToView(var1);
- if (var2 == null) {
- return -1;
- } else {
- int var3 = var1;
-
- for(int var4 = var2.y; var2 != null && var4 == var2.y; var2 = var3 >= 0 ? var0.modelToView(var3) : null) {
- var1 = var3--;
- }
-
- return var1;
- }
- }
-
- public static final int getRowEnd(JTextComponent var0, int var1) throws BadLocationException {
- Rectangle var2 = var0.modelToView(var1);
- if (var2 == null) {
- return -1;
- } else {
- int var3 = var0.getDocument().getLength();
- int var4 = var1;
-
- for(int var5 = var2.y; var2 != null && var5 == var2.y; var2 = var4 <= var3 ? var0.modelToView(var4) : null) {
- var1 = var4++;
- }
-
- return var1;
- }
- }
-
- public static final int getPositionAbove(JTextComponent var0, int var1, int var2) throws BadLocationException {
- int var3 = getRowStart(var0, var1) - 1;
- if (var3 < 0) {
- return -1;
- } else {
- int var4 = 32767;
- int var5 = 0;
- Rectangle var6 = null;
- if (var3 >= 0) {
- var6 = var0.modelToView(var3);
- var5 = var6.y;
- }
-
- while(var6 != null && var5 == var6.y) {
- int var7 = Math.abs(var6.x - var2);
- if (var7 < var4) {
- var1 = var3;
- var4 = var7;
- }
-
- --var3;
- var6 = var3 >= 0 ? var0.modelToView(var3) : null;
- }
-
- return var1;
- }
- }
-
- public static final int getPositionBelow(JTextComponent var0, int var1, int var2) throws BadLocationException {
- int var3 = getRowEnd(var0, var1) + 1;
- if (var3 <= 0) {
- return -1;
- } else {
- int var4 = 32767;
- int var5 = var0.getDocument().getLength();
- int var6 = 0;
- Rectangle var7 = null;
- if (var3 <= var5) {
- var7 = var0.modelToView(var3);
- var6 = var7.y;
- }
-
- while(var7 != null && var6 == var7.y) {
- int var8 = Math.abs(var2 - var7.x);
- if (var8 < var4) {
- var1 = var3;
- var4 = var8;
- }
-
- ++var3;
- var7 = var3 <= var5 ? var0.modelToView(var3) : null;
- }
-
- return var1;
- }
- }
-
- public static final int getWordStart(JTextComponent var0, int var1) throws BadLocationException {
- Document var2 = var0.getDocument();
- Element var3 = getParagraphElement(var0, var1);
- if (var3 == null) {
- throw new BadLocationException("No word at " + var1, var1);
- } else {
- int var4 = var3.getStartOffset();
- int var5 = Math.min(var3.getEndOffset(), var2.getLength());
- String var6 = var2.getText(var4, var5 - var4);
- if (var6 != null && var6.length() > 0) {
- BreakIterator var7 = BreakIterator.getWordInstance();
- var7.setText(var6);
- int var8 = var1 - var4;
- if (var8 >= var7.last()) {
- var8 = var7.last() - 1;
- }
-
- var7.following(var8);
- var1 = var4 + var7.previous();
- }
-
- return var1;
- }
- }
-
- public static final int getWordEnd(JTextComponent var0, int var1) throws BadLocationException {
- Document var2 = var0.getDocument();
- Element var3 = getParagraphElement(var0, var1);
- if (var3 == null) {
- throw new BadLocationException("No word at " + var1, var1);
- } else {
- int var4 = var3.getStartOffset();
- int var5 = Math.min(var3.getEndOffset(), var2.getLength());
- String var6 = var2.getText(var4, var5 - var4);
- if (var6 != null && var6.length() > 0) {
- BreakIterator var7 = BreakIterator.getWordInstance();
- var7.setText(var6);
- int var8 = var1 - var4;
- if (var8 >= var7.last()) {
- var8 = var7.last() - 1;
- }
-
- var1 = var4 + var7.following(var8);
- }
-
- return var1;
- }
- }
-
- public static final int getNextWord(JTextComponent var0, int var1) throws BadLocationException {
- Element var3 = getParagraphElement(var0, var1);
-
- int var2;
- for(var2 = getNextWordInParagraph(var3, var1, false); var2 == -1; var2 = getNextWordInParagraph(var3, var1, true)) {
- var1 = var3.getEndOffset();
- var3 = getParagraphElement(var0, var1);
- }
-
- return var2;
- }
-
- static int getNextWordInParagraph(Element var0, int var1, boolean var2) throws BadLocationException {
- if (var0 == null) {
- throw new BadLocationException("No more words", var1);
- } else {
- Document var3 = var0.getDocument();
- int var4 = var0.getStartOffset();
- int var5 = Math.min(var0.getEndOffset(), var3.getLength());
- if (var1 < var5 && var1 >= var4) {
- String var6 = var3.getText(var4, var5 - var4);
- BreakIterator var7 = BreakIterator.getWordInstance();
- var7.setText(var6);
- if (var2 && var7.first() == var1 - var4 && !Character.isWhitespace(var6.charAt(var7.first()))) {
- return var1;
- } else {
- int var8 = var7.following(var1 - var4);
- if (var8 != -1 && var8 < var6.length()) {
- char var9 = var6.charAt(var8);
- if (!Character.isWhitespace(var9)) {
- return var4 + var8;
- } else {
- var8 = var7.next();
- if (var8 != -1) {
- var1 = var4 + var8;
- if (var1 != var5) {
- return var1;
- }
- }
-
- return -1;
- }
- } else {
- return -1;
- }
- }
- } else {
- throw new BadLocationException("No more words", var1);
- }
- }
- }
-
- public static final int getPreviousWord(JTextComponent var0, int var1) throws BadLocationException {
- Element var3 = getParagraphElement(var0, var1);
-
- int var2;
- for(var2 = getPrevWordInParagraph(var3, var1); var2 == -1; var2 = getPrevWordInParagraph(var3, var1)) {
- var1 = var3.getStartOffset() - 1;
- var3 = getParagraphElement(var0, var1);
- }
-
- return var2;
- }
-
- static int getPrevWordInParagraph(Element var0, int var1) throws BadLocationException {
- if (var0 == null) {
- throw new BadLocationException("No more words", var1);
- } else {
- Document var2 = var0.getDocument();
- int var3 = var0.getStartOffset();
- int var4 = var0.getEndOffset();
- if (var1 <= var4 && var1 >= var3) {
- String var5 = var2.getText(var3, var4 - var3);
- BreakIterator var6 = BreakIterator.getWordInstance();
- var6.setText(var5);
- if (var6.following(var1 - var3) == -1) {
- var6.last();
- }
-
- int var7 = var6.previous();
- if (var7 == var1 - var3) {
- var7 = var6.previous();
- }
-
- if (var7 == -1) {
- return -1;
- } else {
- char var8 = var5.charAt(var7);
- if (!Character.isWhitespace(var8)) {
- return var3 + var7;
- } else {
- var7 = var6.previous();
- return var7 != -1 ? var3 + var7 : -1;
- }
- }
- } else {
- throw new BadLocationException("No more words", var1);
- }
- }
- }
-
- public static final Element getParagraphElement(JTextComponent var0, int var1) {
- Document var2 = var0.getDocument();
- if (var2 instanceof StyledDocument) {
- return ((StyledDocument)var2).getParagraphElement(var1);
- } else {
- Element var3 = var2.getDefaultRootElement();
- int var4 = var3.getElementIndex(var1);
- Element var5 = var3.getElement(var4);
- return var1 >= var5.getStartOffset() && var1 < var5.getEndOffset() ? var5 : null;
- }
- }
-
- static boolean isComposedTextElement(Element var0) {
- AttributeSet var1 = var0.getAttributes();
- return isComposedTextAttributeDefined(var1);
- }
-
- static boolean isComposedTextAttributeDefined(AttributeSet var0) {
- return var0 != null && var0.isDefined(StyleConstants.ComposedTextAttribute);
- }
-
- static int drawComposedText(AttributeSet var0, Graphics var1, int var2, int var3, int var4, int var5) throws BadLocationException {
- Graphics2D var6 = (Graphics2D)var1;
- AttributedString var7 = (AttributedString)var0.getAttribute(StyleConstants.ComposedTextAttribute);
- var7.addAttribute(TextAttribute.FONT, var1.getFont());
- if (var4 >= var5) {
- return var2;
- } else {
- AttributedCharacterIterator var8 = var7.getIterator((AttributedCharacterIterator.Attribute[])null, var4, var5);
- TextLayout var9 = new TextLayout(var8, var6.getFontRenderContext());
- var9.draw(var6, (float)var2, (float)var3);
- return var2 + (int)var9.getAdvance();
- }
- }
-
- static void paintComposedText(Graphics var0, Rectangle var1, GlyphView var2) {
- if (var0 instanceof Graphics2D) {
- Graphics2D var3 = (Graphics2D)var0;
- int var4 = var2.getStartOffset();
- int var5 = var2.getEndOffset();
- AttributeSet var6 = ((View)var2).getElement().getAttributes();
- AttributedString var7 = (AttributedString)var6.getAttribute(StyleConstants.ComposedTextAttribute);
- int var8 = ((View)var2).getElement().getStartOffset();
- int var9 = var1.y + (int)var2.getGlyphPainter().getAscent(var2);
- int var10 = var1.x;
- var7.addAttribute(TextAttribute.FONT, var2.getFont());
- var7.addAttribute(TextAttribute.FOREGROUND, var2.getForeground());
- if (StyleConstants.isBold(((View)var2).getAttributes())) {
- var7.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
- }
-
- if (StyleConstants.isItalic(((View)var2).getAttributes())) {
- var7.addAttribute(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
- }
-
- if (var2.isUnderline()) {
- var7.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
- }
-
- if (var2.isStrikeThrough()) {
- var7.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
- }
-
- if (var2.isSuperscript()) {
- var7.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER);
- }
-
- if (var2.isSubscript()) {
- var7.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB);
- }
-
- AttributedCharacterIterator var11 = var7.getIterator((AttributedCharacterIterator.Attribute[])null, var4 - var8, var5 - var8);
- TextLayout var12 = new TextLayout(var11, var3.getFontRenderContext());
- var12.draw(var3, (float)var10, (float)var9);
- }
-
- }
-
- static boolean isLeftToRight(Component var0) {
- return var0.getComponentOrientation().isLeftToRight();
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- static {
- try {
- Method var0 = (class$java$awt$Toolkit == null ? (class$java$awt$Toolkit = class$("java.awt.Toolkit")) : class$java$awt$Toolkit).getMethod("getMaximumCursorColors", (Class[])null);
- is1dot2 = var0 != null;
- } catch (NoSuchMethodException var1) {
- is1dot2 = false;
- }
-
- if (!is1dot2) {
- System.err.println("warning: running 1.2 version of Utilities");
- }
-
- }
- }
-