home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.text;
-
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import java.text.BreakIterator;
-
- public class Utilities {
- 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 = 0;
- int var10 = var0.offset;
- int var11 = var0.offset + var0.count;
-
- for(int var12 = var0.offset; var12 < var11; ++var12) {
- if (var8[var12] == '\t') {
- if (var9 > 0) {
- var3.drawChars(var8, var10, var9, var1, var2);
- var9 = 0;
- }
-
- var10 = var12 + 1;
- var7 = (int)var4.nextTabStop((float)var7, var5 + var12 - var0.offset);
- var1 = var7;
- } else if (var8[var12] != '\n' && var8[var12] != '\r') {
- ++var9;
- var7 += var6.charWidth(var8[var12]);
- } else {
- if (var9 > 0) {
- var3.drawChars(var8, var10, var9, var1, var2);
- var9 = 0;
- }
-
- var10 = var12 + 1;
- var1 = var7;
- }
- }
-
- if (var9 > 0) {
- var3.drawChars(var8, var10, var9, 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 + var0.count;
-
- for(int var8 = var0.offset; var8 < var7; ++var8) {
- if (var6[var8] == '\t') {
- var5 = (int)var3.nextTabStop((float)var5, var4 + var8 - var0.offset);
- } else {
- var5 += var1.charWidth(var6[var8]);
- }
- }
-
- return var5 - var2;
- }
-
- public static final int getTabbedTextOffset(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5) {
- int var6 = var2;
- int var7 = var2;
- char[] var8 = var0.array;
- int var9 = var0.offset + var0.count;
-
- for(int var10 = var0.offset; var10 < var9; ++var10) {
- if (var8[var10] == '\t') {
- var7 = (int)var4.nextTabStop((float)var7, var5 + var10 - var0.offset);
- } else {
- var7 += var1.charWidth(var8[var10]);
- }
-
- if (var3 >= var6 && var3 < var7) {
- if (var3 - var6 < var7 - var3) {
- return var10 - var0.offset;
- }
-
- return var10 + 1 - var0.offset;
- }
-
- var6 = var7;
- }
-
- return var0.count;
- }
-
- static final int getRowStart(JTextComponent var0, int var1) throws BadLocationException {
- Rectangle var2 = var0.modelToView(var1);
- int var3 = var1;
-
- for(int var4 = var2.y; var2 != null && var4 == var2.y; var2 = var3 >= 0 ? var0.modelToView(var3) : null) {
- var1 = var3--;
- }
-
- return var1;
- }
-
- static final int getRowEnd(JTextComponent var0, int var1) throws BadLocationException {
- Rectangle var2 = var0.modelToView(var1);
- 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;
- }
-
- static final int getPositionAbove(JTextComponent var0, int var1, int var2) throws BadLocationException {
- int var3 = getRowStart(var0, var1) - 1;
- 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;
- }
-
- static final int getPositionBelow(JTextComponent var0, int var1, int var2) throws BadLocationException {
- int var3 = getRowEnd(var0, var1) + 1;
- 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;
- }
-
- static final int getWordStart(JTextComponent var0, int var1) throws BadLocationException {
- Document var2 = var0.getDocument();
- Element var3 = getParagraphElement(var0, var1);
- 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;
- }
-
- static final int getWordEnd(JTextComponent var0, int var1) throws BadLocationException {
- Document var2 = var0.getDocument();
- Element var3 = getParagraphElement(var0, var1);
- 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;
- }
-
- static final int getNextWord(JTextComponent var0, int var1) throws BadLocationException {
- Document var2 = var0.getDocument();
- Element var3 = getParagraphElement(var0, var1);
- 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.next();
- }
-
- return var1;
- }
-
- static final int getPreviousWord(JTextComponent var0, int var1) throws BadLocationException {
- Document var2 = var0.getDocument();
- Element var3 = getParagraphElement(var0, var1);
- 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);
- if (var1 == var4 + var7.previous()) {
- var7.previous();
- int var9 = var7.previous();
- if (var9 == -1) {
- var1 = var4;
- } else {
- var1 = var4 + var9;
- }
- }
- }
-
- return var1;
- }
-
- 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 var5;
- }
- }
- }
-