home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / text / Utilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  8.7 KB  |  483 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Component;
  4. import java.awt.FontMetrics;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.Rectangle;
  8. import java.awt.font.TextAttribute;
  9. import java.awt.font.TextLayout;
  10. import java.lang.reflect.Method;
  11. import java.text.AttributedCharacterIterator;
  12. import java.text.AttributedString;
  13. import java.text.BreakIterator;
  14.  
  15. public class Utilities {
  16.    static boolean is1dot2 = false;
  17.    // $FF: synthetic field
  18.    static Class class$java$awt$Toolkit;
  19.  
  20.    public static final int drawTabbedText(Segment var0, int var1, int var2, Graphics var3, TabExpander var4, int var5) {
  21.       FontMetrics var6 = var3.getFontMetrics();
  22.       int var7 = var1;
  23.       char[] var8 = var0.array;
  24.       int var9 = var0.offset;
  25.       int var10 = 0;
  26.       int var11 = var0.offset;
  27.       int var12 = var0.offset + var0.count;
  28.  
  29.       for(int var13 = var9; var13 < var12; ++var13) {
  30.          if (var8[var13] == '\t') {
  31.             if (var10 > 0) {
  32.                var3.drawChars(var8, var11, var10, var1, var2);
  33.                var10 = 0;
  34.             }
  35.  
  36.             var11 = var13 + 1;
  37.             if (var4 != null) {
  38.                var7 = (int)var4.nextTabStop((float)var7, var5 + var13 - var9);
  39.             } else {
  40.                var7 += var6.charWidth(' ');
  41.             }
  42.  
  43.             var1 = var7;
  44.          } else if (var8[var13] != '\n' && var8[var13] != '\r') {
  45.             ++var10;
  46.             var7 += var6.charWidth(var8[var13]);
  47.          } else {
  48.             if (var10 > 0) {
  49.                var3.drawChars(var8, var11, var10, var1, var2);
  50.                var10 = 0;
  51.             }
  52.  
  53.             var11 = var13 + 1;
  54.             var1 = var7;
  55.          }
  56.       }
  57.  
  58.       if (var10 > 0) {
  59.          var3.drawChars(var8, var11, var10, var1, var2);
  60.       }
  61.  
  62.       return var7;
  63.    }
  64.  
  65.    public static final int getTabbedTextWidth(Segment var0, FontMetrics var1, int var2, TabExpander var3, int var4) {
  66.       int var5 = var2;
  67.       char[] var6 = var0.array;
  68.       int var7 = var0.offset;
  69.       int var8 = var0.offset + var0.count;
  70.  
  71.       for(int var9 = var7; var9 < var8; ++var9) {
  72.          if (var6[var9] == '\t') {
  73.             if (var3 != null) {
  74.                var5 = (int)var3.nextTabStop((float)var5, var4 + var9 - var7);
  75.             } else {
  76.                var5 += var1.charWidth(' ');
  77.             }
  78.          } else if (var6[var9] != '\n') {
  79.             var5 += var1.charWidth(var6[var9]);
  80.          }
  81.       }
  82.  
  83.       return var5 - var2;
  84.    }
  85.  
  86.    public static final int getTabbedTextOffset(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5) {
  87.       return getTabbedTextOffset(var0, var1, var2, var3, var4, var5, true);
  88.    }
  89.  
  90.    public static final int getTabbedTextOffset(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5, boolean var6) {
  91.       int var7 = var2;
  92.       int var8 = var2;
  93.       char[] var9 = var0.array;
  94.       int var10 = var0.offset;
  95.       int var11 = var0.count;
  96.       int var12 = var0.offset + var0.count;
  97.  
  98.       for(int var13 = var0.offset; var13 < var12; ++var13) {
  99.          if (var9[var13] == '\t') {
  100.             if (var4 != null) {
  101.                var8 = (int)var4.nextTabStop((float)var8, var5 + var13 - var10);
  102.             } else {
  103.                var8 += var1.charWidth(' ');
  104.             }
  105.          } else {
  106.             var8 += var1.charWidth(var9[var13]);
  107.          }
  108.  
  109.          if (var3 >= var7 && var3 < var8) {
  110.             if (var6 && var3 - var7 >= var8 - var3) {
  111.                return var13 + 1 - var10;
  112.             }
  113.  
  114.             return var13 - var10;
  115.          }
  116.  
  117.          var7 = var8;
  118.       }
  119.  
  120.       return var11;
  121.    }
  122.  
  123.    public static final int getBreakLocation(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5) {
  124.       char[] var6 = var0.array;
  125.       int var7 = var0.offset;
  126.       int var8 = var0.count;
  127.       int var9 = getTabbedTextOffset(var0, var1, var2, var3, var4, var5, false);
  128.  
  129.       for(int var10 = var7 + Math.min(var9, var8 - 1); var10 >= var7; --var10) {
  130.          char var11 = var6[var10];
  131.          if (Character.isWhitespace(var11)) {
  132.             var9 = var10 - var7 + 1;
  133.             break;
  134.          }
  135.       }
  136.  
  137.       return var9;
  138.    }
  139.  
  140.    public static final int getRowStart(JTextComponent var0, int var1) throws BadLocationException {
  141.       Rectangle var2 = var0.modelToView(var1);
  142.       if (var2 == null) {
  143.          return -1;
  144.       } else {
  145.          int var3 = var1;
  146.  
  147.          for(int var4 = var2.y; var2 != null && var4 == var2.y; var2 = var3 >= 0 ? var0.modelToView(var3) : null) {
  148.             var1 = var3--;
  149.          }
  150.  
  151.          return var1;
  152.       }
  153.    }
  154.  
  155.    public static final int getRowEnd(JTextComponent var0, int var1) throws BadLocationException {
  156.       Rectangle var2 = var0.modelToView(var1);
  157.       if (var2 == null) {
  158.          return -1;
  159.       } else {
  160.          int var3 = var0.getDocument().getLength();
  161.          int var4 = var1;
  162.  
  163.          for(int var5 = var2.y; var2 != null && var5 == var2.y; var2 = var4 <= var3 ? var0.modelToView(var4) : null) {
  164.             var1 = var4++;
  165.          }
  166.  
  167.          return var1;
  168.       }
  169.    }
  170.  
  171.    public static final int getPositionAbove(JTextComponent var0, int var1, int var2) throws BadLocationException {
  172.       int var3 = getRowStart(var0, var1) - 1;
  173.       if (var3 < 0) {
  174.          return -1;
  175.       } else {
  176.          int var4 = 32767;
  177.          int var5 = 0;
  178.          Rectangle var6 = null;
  179.          if (var3 >= 0) {
  180.             var6 = var0.modelToView(var3);
  181.             var5 = var6.y;
  182.          }
  183.  
  184.          while(var6 != null && var5 == var6.y) {
  185.             int var7 = Math.abs(var6.x - var2);
  186.             if (var7 < var4) {
  187.                var1 = var3;
  188.                var4 = var7;
  189.             }
  190.  
  191.             --var3;
  192.             var6 = var3 >= 0 ? var0.modelToView(var3) : null;
  193.          }
  194.  
  195.          return var1;
  196.       }
  197.    }
  198.  
  199.    public static final int getPositionBelow(JTextComponent var0, int var1, int var2) throws BadLocationException {
  200.       int var3 = getRowEnd(var0, var1) + 1;
  201.       if (var3 <= 0) {
  202.          return -1;
  203.       } else {
  204.          int var4 = 32767;
  205.          int var5 = var0.getDocument().getLength();
  206.          int var6 = 0;
  207.          Rectangle var7 = null;
  208.          if (var3 <= var5) {
  209.             var7 = var0.modelToView(var3);
  210.             var6 = var7.y;
  211.          }
  212.  
  213.          while(var7 != null && var6 == var7.y) {
  214.             int var8 = Math.abs(var2 - var7.x);
  215.             if (var8 < var4) {
  216.                var1 = var3;
  217.                var4 = var8;
  218.             }
  219.  
  220.             ++var3;
  221.             var7 = var3 <= var5 ? var0.modelToView(var3) : null;
  222.          }
  223.  
  224.          return var1;
  225.       }
  226.    }
  227.  
  228.    public static final int getWordStart(JTextComponent var0, int var1) throws BadLocationException {
  229.       Document var2 = var0.getDocument();
  230.       Element var3 = getParagraphElement(var0, var1);
  231.       if (var3 == null) {
  232.          throw new BadLocationException("No word at " + var1, var1);
  233.       } else {
  234.          int var4 = var3.getStartOffset();
  235.          int var5 = Math.min(var3.getEndOffset(), var2.getLength());
  236.          String var6 = var2.getText(var4, var5 - var4);
  237.          if (var6 != null && var6.length() > 0) {
  238.             BreakIterator var7 = BreakIterator.getWordInstance();
  239.             var7.setText(var6);
  240.             int var8 = var1 - var4;
  241.             if (var8 >= var7.last()) {
  242.                var8 = var7.last() - 1;
  243.             }
  244.  
  245.             var7.following(var8);
  246.             var1 = var4 + var7.previous();
  247.          }
  248.  
  249.          return var1;
  250.       }
  251.    }
  252.  
  253.    public static final int getWordEnd(JTextComponent var0, int var1) throws BadLocationException {
  254.       Document var2 = var0.getDocument();
  255.       Element var3 = getParagraphElement(var0, var1);
  256.       if (var3 == null) {
  257.          throw new BadLocationException("No word at " + var1, var1);
  258.       } else {
  259.          int var4 = var3.getStartOffset();
  260.          int var5 = Math.min(var3.getEndOffset(), var2.getLength());
  261.          String var6 = var2.getText(var4, var5 - var4);
  262.          if (var6 != null && var6.length() > 0) {
  263.             BreakIterator var7 = BreakIterator.getWordInstance();
  264.             var7.setText(var6);
  265.             int var8 = var1 - var4;
  266.             if (var8 >= var7.last()) {
  267.                var8 = var7.last() - 1;
  268.             }
  269.  
  270.             var1 = var4 + var7.following(var8);
  271.          }
  272.  
  273.          return var1;
  274.       }
  275.    }
  276.  
  277.    public static final int getNextWord(JTextComponent var0, int var1) throws BadLocationException {
  278.       Element var3 = getParagraphElement(var0, var1);
  279.  
  280.       int var2;
  281.       for(var2 = getNextWordInParagraph(var3, var1, false); var2 == -1; var2 = getNextWordInParagraph(var3, var1, true)) {
  282.          var1 = var3.getEndOffset();
  283.          var3 = getParagraphElement(var0, var1);
  284.       }
  285.  
  286.       return var2;
  287.    }
  288.  
  289.    static int getNextWordInParagraph(Element var0, int var1, boolean var2) throws BadLocationException {
  290.       if (var0 == null) {
  291.          throw new BadLocationException("No more words", var1);
  292.       } else {
  293.          Document var3 = var0.getDocument();
  294.          int var4 = var0.getStartOffset();
  295.          int var5 = Math.min(var0.getEndOffset(), var3.getLength());
  296.          if (var1 < var5 && var1 >= var4) {
  297.             String var6 = var3.getText(var4, var5 - var4);
  298.             BreakIterator var7 = BreakIterator.getWordInstance();
  299.             var7.setText(var6);
  300.             if (var2 && var7.first() == var1 - var4 && !Character.isWhitespace(var6.charAt(var7.first()))) {
  301.                return var1;
  302.             } else {
  303.                int var8 = var7.following(var1 - var4);
  304.                if (var8 != -1 && var8 < var6.length()) {
  305.                   char var9 = var6.charAt(var8);
  306.                   if (!Character.isWhitespace(var9)) {
  307.                      return var4 + var8;
  308.                   } else {
  309.                      var8 = var7.next();
  310.                      if (var8 != -1) {
  311.                         var1 = var4 + var8;
  312.                         if (var1 != var5) {
  313.                            return var1;
  314.                         }
  315.                      }
  316.  
  317.                      return -1;
  318.                   }
  319.                } else {
  320.                   return -1;
  321.                }
  322.             }
  323.          } else {
  324.             throw new BadLocationException("No more words", var1);
  325.          }
  326.       }
  327.    }
  328.  
  329.    public static final int getPreviousWord(JTextComponent var0, int var1) throws BadLocationException {
  330.       Element var3 = getParagraphElement(var0, var1);
  331.  
  332.       int var2;
  333.       for(var2 = getPrevWordInParagraph(var3, var1); var2 == -1; var2 = getPrevWordInParagraph(var3, var1)) {
  334.          var1 = var3.getStartOffset() - 1;
  335.          var3 = getParagraphElement(var0, var1);
  336.       }
  337.  
  338.       return var2;
  339.    }
  340.  
  341.    static int getPrevWordInParagraph(Element var0, int var1) throws BadLocationException {
  342.       if (var0 == null) {
  343.          throw new BadLocationException("No more words", var1);
  344.       } else {
  345.          Document var2 = var0.getDocument();
  346.          int var3 = var0.getStartOffset();
  347.          int var4 = var0.getEndOffset();
  348.          if (var1 <= var4 && var1 >= var3) {
  349.             String var5 = var2.getText(var3, var4 - var3);
  350.             BreakIterator var6 = BreakIterator.getWordInstance();
  351.             var6.setText(var5);
  352.             if (var6.following(var1 - var3) == -1) {
  353.                var6.last();
  354.             }
  355.  
  356.             int var7 = var6.previous();
  357.             if (var7 == var1 - var3) {
  358.                var7 = var6.previous();
  359.             }
  360.  
  361.             if (var7 == -1) {
  362.                return -1;
  363.             } else {
  364.                char var8 = var5.charAt(var7);
  365.                if (!Character.isWhitespace(var8)) {
  366.                   return var3 + var7;
  367.                } else {
  368.                   var7 = var6.previous();
  369.                   return var7 != -1 ? var3 + var7 : -1;
  370.                }
  371.             }
  372.          } else {
  373.             throw new BadLocationException("No more words", var1);
  374.          }
  375.       }
  376.    }
  377.  
  378.    public static final Element getParagraphElement(JTextComponent var0, int var1) {
  379.       Document var2 = var0.getDocument();
  380.       if (var2 instanceof StyledDocument) {
  381.          return ((StyledDocument)var2).getParagraphElement(var1);
  382.       } else {
  383.          Element var3 = var2.getDefaultRootElement();
  384.          int var4 = var3.getElementIndex(var1);
  385.          Element var5 = var3.getElement(var4);
  386.          return var1 >= var5.getStartOffset() && var1 < var5.getEndOffset() ? var5 : null;
  387.       }
  388.    }
  389.  
  390.    static boolean isComposedTextElement(Element var0) {
  391.       AttributeSet var1 = var0.getAttributes();
  392.       return isComposedTextAttributeDefined(var1);
  393.    }
  394.  
  395.    static boolean isComposedTextAttributeDefined(AttributeSet var0) {
  396.       return var0 != null && var0.isDefined(StyleConstants.ComposedTextAttribute);
  397.    }
  398.  
  399.    static int drawComposedText(AttributeSet var0, Graphics var1, int var2, int var3, int var4, int var5) throws BadLocationException {
  400.       Graphics2D var6 = (Graphics2D)var1;
  401.       AttributedString var7 = (AttributedString)var0.getAttribute(StyleConstants.ComposedTextAttribute);
  402.       var7.addAttribute(TextAttribute.FONT, var1.getFont());
  403.       if (var4 >= var5) {
  404.          return var2;
  405.       } else {
  406.          AttributedCharacterIterator var8 = var7.getIterator((AttributedCharacterIterator.Attribute[])null, var4, var5);
  407.          TextLayout var9 = new TextLayout(var8, var6.getFontRenderContext());
  408.          var9.draw(var6, (float)var2, (float)var3);
  409.          return var2 + (int)var9.getAdvance();
  410.       }
  411.    }
  412.  
  413.    static void paintComposedText(Graphics var0, Rectangle var1, GlyphView var2) {
  414.       if (var0 instanceof Graphics2D) {
  415.          Graphics2D var3 = (Graphics2D)var0;
  416.          int var4 = var2.getStartOffset();
  417.          int var5 = var2.getEndOffset();
  418.          AttributeSet var6 = ((View)var2).getElement().getAttributes();
  419.          AttributedString var7 = (AttributedString)var6.getAttribute(StyleConstants.ComposedTextAttribute);
  420.          int var8 = ((View)var2).getElement().getStartOffset();
  421.          int var9 = var1.y + (int)var2.getGlyphPainter().getAscent(var2);
  422.          int var10 = var1.x;
  423.          var7.addAttribute(TextAttribute.FONT, var2.getFont());
  424.          var7.addAttribute(TextAttribute.FOREGROUND, var2.getForeground());
  425.          if (StyleConstants.isBold(((View)var2).getAttributes())) {
  426.             var7.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
  427.          }
  428.  
  429.          if (StyleConstants.isItalic(((View)var2).getAttributes())) {
  430.             var7.addAttribute(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
  431.          }
  432.  
  433.          if (var2.isUnderline()) {
  434.             var7.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
  435.          }
  436.  
  437.          if (var2.isStrikeThrough()) {
  438.             var7.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
  439.          }
  440.  
  441.          if (var2.isSuperscript()) {
  442.             var7.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER);
  443.          }
  444.  
  445.          if (var2.isSubscript()) {
  446.             var7.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB);
  447.          }
  448.  
  449.          AttributedCharacterIterator var11 = var7.getIterator((AttributedCharacterIterator.Attribute[])null, var4 - var8, var5 - var8);
  450.          TextLayout var12 = new TextLayout(var11, var3.getFontRenderContext());
  451.          var12.draw(var3, (float)var10, (float)var9);
  452.       }
  453.  
  454.    }
  455.  
  456.    static boolean isLeftToRight(Component var0) {
  457.       return var0.getComponentOrientation().isLeftToRight();
  458.    }
  459.  
  460.    // $FF: synthetic method
  461.    static Class class$(String var0) {
  462.       try {
  463.          return Class.forName(var0);
  464.       } catch (ClassNotFoundException var2) {
  465.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  466.       }
  467.    }
  468.  
  469.    static {
  470.       try {
  471.          Method var0 = (class$java$awt$Toolkit == null ? (class$java$awt$Toolkit = class$("java.awt.Toolkit")) : class$java$awt$Toolkit).getMethod("getMaximumCursorColors", (Class[])null);
  472.          is1dot2 = var0 != null;
  473.       } catch (NoSuchMethodException var1) {
  474.          is1dot2 = false;
  475.       }
  476.  
  477.       if (!is1dot2) {
  478.          System.err.println("warning: running 1.2 version of Utilities");
  479.       }
  480.  
  481.    }
  482. }
  483.