home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / text / Utilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  4.7 KB  |  266 lines

  1. package com.sun.java.swing.text;
  2.  
  3. import java.awt.FontMetrics;
  4. import java.awt.Graphics;
  5. import java.awt.Rectangle;
  6. import java.text.BreakIterator;
  7.  
  8. public class Utilities {
  9.    public static final int drawTabbedText(Segment var0, int var1, int var2, Graphics var3, TabExpander var4, int var5) {
  10.       FontMetrics var6 = var3.getFontMetrics();
  11.       int var7 = var1;
  12.       char[] var8 = var0.array;
  13.       int var9 = 0;
  14.       int var10 = var0.offset;
  15.       int var11 = var0.offset + var0.count;
  16.  
  17.       for(int var12 = var0.offset; var12 < var11; ++var12) {
  18.          if (var8[var12] == '\t') {
  19.             if (var9 > 0) {
  20.                var3.drawChars(var8, var10, var9, var1, var2);
  21.                var9 = 0;
  22.             }
  23.  
  24.             var10 = var12 + 1;
  25.             var7 = (int)var4.nextTabStop((float)var7, var5 + var12 - var0.offset);
  26.             var1 = var7;
  27.          } else if (var8[var12] != '\n' && var8[var12] != '\r') {
  28.             ++var9;
  29.             var7 += var6.charWidth(var8[var12]);
  30.          } else {
  31.             if (var9 > 0) {
  32.                var3.drawChars(var8, var10, var9, var1, var2);
  33.                var9 = 0;
  34.             }
  35.  
  36.             var10 = var12 + 1;
  37.             var1 = var7;
  38.          }
  39.       }
  40.  
  41.       if (var9 > 0) {
  42.          var3.drawChars(var8, var10, var9, var1, var2);
  43.       }
  44.  
  45.       return var7;
  46.    }
  47.  
  48.    public static final int getTabbedTextWidth(Segment var0, FontMetrics var1, int var2, TabExpander var3, int var4) {
  49.       int var5 = var2;
  50.       char[] var6 = var0.array;
  51.       int var7 = var0.offset + var0.count;
  52.  
  53.       for(int var8 = var0.offset; var8 < var7; ++var8) {
  54.          if (var6[var8] == '\t') {
  55.             var5 = (int)var3.nextTabStop((float)var5, var4 + var8 - var0.offset);
  56.          } else {
  57.             var5 += var1.charWidth(var6[var8]);
  58.          }
  59.       }
  60.  
  61.       return var5 - var2;
  62.    }
  63.  
  64.    public static final int getTabbedTextOffset(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5) {
  65.       int var6 = var2;
  66.       int var7 = var2;
  67.       char[] var8 = var0.array;
  68.       int var9 = var0.offset + var0.count;
  69.  
  70.       for(int var10 = var0.offset; var10 < var9; ++var10) {
  71.          if (var8[var10] == '\t') {
  72.             var7 = (int)var4.nextTabStop((float)var7, var5 + var10 - var0.offset);
  73.          } else {
  74.             var7 += var1.charWidth(var8[var10]);
  75.          }
  76.  
  77.          if (var3 >= var6 && var3 < var7) {
  78.             if (var3 - var6 < var7 - var3) {
  79.                return var10 - var0.offset;
  80.             }
  81.  
  82.             return var10 + 1 - var0.offset;
  83.          }
  84.  
  85.          var6 = var7;
  86.       }
  87.  
  88.       return var0.count;
  89.    }
  90.  
  91.    static final int getRowStart(JTextComponent var0, int var1) throws BadLocationException {
  92.       Rectangle var2 = var0.modelToView(var1);
  93.       int var3 = var1;
  94.  
  95.       for(int var4 = var2.y; var2 != null && var4 == var2.y; var2 = var3 >= 0 ? var0.modelToView(var3) : null) {
  96.          var1 = var3--;
  97.       }
  98.  
  99.       return var1;
  100.    }
  101.  
  102.    static final int getRowEnd(JTextComponent var0, int var1) throws BadLocationException {
  103.       Rectangle var2 = var0.modelToView(var1);
  104.       int var3 = var0.getDocument().getLength();
  105.       int var4 = var1;
  106.  
  107.       for(int var5 = var2.y; var2 != null && var5 == var2.y; var2 = var4 <= var3 ? var0.modelToView(var4) : null) {
  108.          var1 = var4++;
  109.       }
  110.  
  111.       return var1;
  112.    }
  113.  
  114.    static final int getPositionAbove(JTextComponent var0, int var1, int var2) throws BadLocationException {
  115.       int var3 = getRowStart(var0, var1) - 1;
  116.       int var4 = 32767;
  117.       int var5 = 0;
  118.       Rectangle var6 = null;
  119.       if (var3 >= 0) {
  120.          var6 = var0.modelToView(var3);
  121.          var5 = var6.y;
  122.       }
  123.  
  124.       while(var6 != null && var5 == var6.y) {
  125.          int var7 = Math.abs(var6.x - var2);
  126.          if (var7 < var4) {
  127.             var1 = var3;
  128.             var4 = var7;
  129.          }
  130.  
  131.          --var3;
  132.          var6 = var3 >= 0 ? var0.modelToView(var3) : null;
  133.       }
  134.  
  135.       return var1;
  136.    }
  137.  
  138.    static final int getPositionBelow(JTextComponent var0, int var1, int var2) throws BadLocationException {
  139.       int var3 = getRowEnd(var0, var1) + 1;
  140.       int var4 = 32767;
  141.       int var5 = var0.getDocument().getLength();
  142.       int var6 = 0;
  143.       Rectangle var7 = null;
  144.       if (var3 <= var5) {
  145.          var7 = var0.modelToView(var3);
  146.          var6 = var7.y;
  147.       }
  148.  
  149.       while(var7 != null && var6 == var7.y) {
  150.          int var8 = Math.abs(var2 - var7.x);
  151.          if (var8 < var4) {
  152.             var1 = var3;
  153.             var4 = var8;
  154.          }
  155.  
  156.          ++var3;
  157.          var7 = var3 <= var5 ? var0.modelToView(var3) : null;
  158.       }
  159.  
  160.       return var1;
  161.    }
  162.  
  163.    static final int getWordStart(JTextComponent var0, int var1) throws BadLocationException {
  164.       Document var2 = var0.getDocument();
  165.       Element var3 = getParagraphElement(var0, var1);
  166.       int var4 = var3.getStartOffset();
  167.       int var5 = Math.min(var3.getEndOffset(), var2.getLength());
  168.       String var6 = var2.getText(var4, var5 - var4);
  169.       if (var6 != null && var6.length() > 0) {
  170.          BreakIterator var7 = BreakIterator.getWordInstance();
  171.          var7.setText(var6);
  172.          int var8 = var1 - var4;
  173.          if (var8 >= var7.last()) {
  174.             var8 = var7.last() - 1;
  175.          }
  176.  
  177.          var7.following(var8);
  178.          var1 = var4 + var7.previous();
  179.       }
  180.  
  181.       return var1;
  182.    }
  183.  
  184.    static final int getWordEnd(JTextComponent var0, int var1) throws BadLocationException {
  185.       Document var2 = var0.getDocument();
  186.       Element var3 = getParagraphElement(var0, var1);
  187.       int var4 = var3.getStartOffset();
  188.       int var5 = Math.min(var3.getEndOffset(), var2.getLength());
  189.       String var6 = var2.getText(var4, var5 - var4);
  190.       if (var6 != null && var6.length() > 0) {
  191.          BreakIterator var7 = BreakIterator.getWordInstance();
  192.          var7.setText(var6);
  193.          int var8 = var1 - var4;
  194.          if (var8 >= var7.last()) {
  195.             var8 = var7.last() - 1;
  196.          }
  197.  
  198.          var1 = var4 + var7.following(var8);
  199.       }
  200.  
  201.       return var1;
  202.    }
  203.  
  204.    static final int getNextWord(JTextComponent var0, int var1) throws BadLocationException {
  205.       Document var2 = var0.getDocument();
  206.       Element var3 = getParagraphElement(var0, var1);
  207.       int var4 = var3.getStartOffset();
  208.       int var5 = Math.min(var3.getEndOffset(), var2.getLength());
  209.       String var6 = var2.getText(var4, var5 - var4);
  210.       if (var6 != null && var6.length() > 0) {
  211.          BreakIterator var7 = BreakIterator.getWordInstance();
  212.          var7.setText(var6);
  213.          int var8 = var1 - var4;
  214.          if (var8 >= var7.last()) {
  215.             var8 = var7.last() - 1;
  216.          }
  217.  
  218.          var7.following(var8);
  219.          var1 = var4 + var7.next();
  220.       }
  221.  
  222.       return var1;
  223.    }
  224.  
  225.    static final int getPreviousWord(JTextComponent var0, int var1) throws BadLocationException {
  226.       Document var2 = var0.getDocument();
  227.       Element var3 = getParagraphElement(var0, var1);
  228.       int var4 = var3.getStartOffset();
  229.       int var5 = Math.min(var3.getEndOffset(), var2.getLength());
  230.       String var6 = var2.getText(var4, var5 - var4);
  231.       if (var6 != null && var6.length() > 0) {
  232.          BreakIterator var7 = BreakIterator.getWordInstance();
  233.          var7.setText(var6);
  234.          int var8 = var1 - var4;
  235.          if (var8 >= var7.last()) {
  236.             var8 = var7.last() - 1;
  237.          }
  238.  
  239.          var7.following(var8);
  240.          if (var1 == var4 + var7.previous()) {
  241.             var7.previous();
  242.             int var9 = var7.previous();
  243.             if (var9 == -1) {
  244.                var1 = var4;
  245.             } else {
  246.                var1 = var4 + var9;
  247.             }
  248.          }
  249.       }
  250.  
  251.       return var1;
  252.    }
  253.  
  254.    static final Element getParagraphElement(JTextComponent var0, int var1) {
  255.       Document var2 = var0.getDocument();
  256.       if (var2 instanceof StyledDocument) {
  257.          return ((StyledDocument)var2).getParagraphElement(var1);
  258.       } else {
  259.          Element var3 = var2.getDefaultRootElement();
  260.          int var4 = var3.getElementIndex(var1);
  261.          Element var5 = var3.getElement(var4);
  262.          return var5;
  263.       }
  264.    }
  265. }
  266.