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 / GlyphView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  8.4 KB  |  397 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Font;
  7. import java.awt.Graphics;
  8. import java.awt.Rectangle;
  9. import java.awt.Shape;
  10. import javax.swing.event.DocumentEvent;
  11.  
  12. public class GlyphView extends View implements TabableView, Cloneable {
  13.    Segment text = new Segment();
  14.    short offset = 0;
  15.    short length = 0;
  16.    TabExpander expander;
  17.    // $FF: renamed from: x int
  18.    int field_0;
  19.    GlyphPainter painter;
  20.    static GlyphPainter defaultPainter;
  21.  
  22.    public GlyphView(Element var1) {
  23.       super(var1);
  24.    }
  25.  
  26.    protected final Object clone() {
  27.       Object var1;
  28.       try {
  29.          var1 = super.clone();
  30.       } catch (CloneNotSupportedException var3) {
  31.          var1 = null;
  32.       }
  33.  
  34.       return var1;
  35.    }
  36.  
  37.    public GlyphPainter getGlyphPainter() {
  38.       return this.painter;
  39.    }
  40.  
  41.    public void setGlyphPainter(GlyphPainter var1) {
  42.       this.painter = var1;
  43.    }
  44.  
  45.    public Segment getText(int var1, int var2) {
  46.       try {
  47.          Document var3 = ((View)this).getDocument();
  48.          var3.getText(var1, var2 - var1, this.text);
  49.       } catch (BadLocationException var4) {
  50.          throw new StateInvariantError("GlyphView: Stale view: " + var4);
  51.       }
  52.  
  53.       return this.text;
  54.    }
  55.  
  56.    public Color getBackground() {
  57.       Document var1 = ((View)this).getDocument();
  58.       if (var1 instanceof StyledDocument) {
  59.          AttributeSet var2 = ((View)this).getAttributes();
  60.          if (var2.isDefined(StyleConstants.Background)) {
  61.             return ((StyledDocument)var1).getBackground(var2);
  62.          }
  63.       }
  64.  
  65.       return null;
  66.    }
  67.  
  68.    public Color getForeground() {
  69.       Document var1 = ((View)this).getDocument();
  70.       if (var1 instanceof StyledDocument) {
  71.          AttributeSet var3 = ((View)this).getAttributes();
  72.          return ((StyledDocument)var1).getForeground(var3);
  73.       } else {
  74.          Container var2 = ((View)this).getContainer();
  75.          return var2 != null ? ((Component)var2).getForeground() : null;
  76.       }
  77.    }
  78.  
  79.    public Font getFont() {
  80.       Document var1 = ((View)this).getDocument();
  81.       if (var1 instanceof StyledDocument) {
  82.          AttributeSet var3 = ((View)this).getAttributes();
  83.          return ((StyledDocument)var1).getFont(var3);
  84.       } else {
  85.          Container var2 = ((View)this).getContainer();
  86.          return var2 != null ? ((Component)var2).getFont() : null;
  87.       }
  88.    }
  89.  
  90.    public boolean isUnderline() {
  91.       AttributeSet var1 = ((View)this).getAttributes();
  92.       return StyleConstants.isUnderline(var1);
  93.    }
  94.  
  95.    public boolean isStrikeThrough() {
  96.       AttributeSet var1 = ((View)this).getAttributes();
  97.       return StyleConstants.isStrikeThrough(var1);
  98.    }
  99.  
  100.    public boolean isSubscript() {
  101.       AttributeSet var1 = ((View)this).getAttributes();
  102.       return StyleConstants.isSubscript(var1);
  103.    }
  104.  
  105.    public boolean isSuperscript() {
  106.       AttributeSet var1 = ((View)this).getAttributes();
  107.       return StyleConstants.isSuperscript(var1);
  108.    }
  109.  
  110.    public TabExpander getTabExpander() {
  111.       return this.expander;
  112.    }
  113.  
  114.    protected void checkPainter() {
  115.       if (this.painter == null) {
  116.          if (defaultPainter == null) {
  117.             String var1 = "javax.swing.text.GlyphPainter1";
  118.  
  119.             try {
  120.                ClassLoader var3 = this.getClass().getClassLoader();
  121.                Class var2;
  122.                if (var3 != null) {
  123.                   var2 = var3.loadClass(var1);
  124.                } else {
  125.                   var2 = Class.forName(var1);
  126.                }
  127.  
  128.                Object var4 = var2.newInstance();
  129.                if (var4 instanceof GlyphPainter) {
  130.                   defaultPainter = (GlyphPainter)var4;
  131.                }
  132.             } catch (Throwable var5) {
  133.                throw new StateInvariantError("GlyphView: Can't load glyph painter: " + var1);
  134.             }
  135.          }
  136.  
  137.          this.setGlyphPainter(defaultPainter.getPainter(this, this.getStartOffset(), this.getEndOffset()));
  138.       }
  139.  
  140.    }
  141.  
  142.    public float getTabbedSpan(float var1, TabExpander var2) {
  143.       this.checkPainter();
  144.       this.expander = var2;
  145.       this.field_0 = (int)var1;
  146.       int var3 = this.getStartOffset();
  147.       int var4 = this.getEndOffset();
  148.       float var5 = this.painter.getSpan(this, var3, var4, this.expander, var1);
  149.       return var5;
  150.    }
  151.  
  152.    public float getPartialSpan(int var1, int var2) {
  153.       this.checkPainter();
  154.       float var3 = this.painter.getSpan(this, var1, var2, this.expander, (float)this.field_0);
  155.       return var3;
  156.    }
  157.  
  158.    public int getStartOffset() {
  159.       Element var1 = ((View)this).getElement();
  160.       return this.length > 0 ? var1.getStartOffset() + this.offset : var1.getStartOffset();
  161.    }
  162.  
  163.    public int getEndOffset() {
  164.       Element var1 = ((View)this).getElement();
  165.       return this.length > 0 ? var1.getStartOffset() + this.offset + this.length : var1.getEndOffset();
  166.    }
  167.  
  168.    public void paint(Graphics var1, Shape var2) {
  169.       this.checkPainter();
  170.       boolean var3 = false;
  171.       Container var4 = ((View)this).getContainer();
  172.       int var5 = this.getStartOffset();
  173.       int var6 = this.getEndOffset();
  174.       Rectangle var7 = var2 instanceof Rectangle ? (Rectangle)var2 : var2.getBounds();
  175.       Color var8 = this.getBackground();
  176.       Color var9 = this.getForeground();
  177.       if (var8 != null) {
  178.          var1.setColor(var8);
  179.          var1.fillRect(var7.x, var7.y, var7.width, var7.height);
  180.       }
  181.  
  182.       if (var4 instanceof JTextComponent) {
  183.          JTextComponent var10 = (JTextComponent)var4;
  184.          Highlighter var11 = var10.getHighlighter();
  185.          if (var11 instanceof LayeredHighlighter) {
  186.             ((LayeredHighlighter)var11).paintLayeredHighlights(var1, var5, var6, var2, var10, this);
  187.          }
  188.       }
  189.  
  190.       if (Utilities.isComposedTextElement(((View)this).getElement())) {
  191.          Utilities.paintComposedText(var1, var2.getBounds(), this);
  192.          var3 = true;
  193.       } else if (var4 instanceof JTextComponent) {
  194.          JTextComponent var17 = (JTextComponent)var4;
  195.          Color var18 = var17.getSelectedTextColor();
  196.          Caret var12 = var17.getCaret();
  197.          if (var12 != null && !var12.isSelectionVisible()) {
  198.             var18 = var9;
  199.          }
  200.  
  201.          if (var18 != null && !var18.equals(var9)) {
  202.             int var13 = var17.getSelectionStart();
  203.             int var14 = var17.getSelectionEnd();
  204.             if (var13 != var14) {
  205.                int var15;
  206.                if (var13 <= var5) {
  207.                   var15 = var5;
  208.                } else {
  209.                   var15 = Math.min(var13, var6);
  210.                }
  211.  
  212.                int var16;
  213.                if (var14 >= var6) {
  214.                   var16 = var6;
  215.                } else {
  216.                   var16 = Math.max(var14, var5);
  217.                }
  218.  
  219.                if (var15 != var16) {
  220.                   var3 = true;
  221.                   if (var15 > var5) {
  222.                      this.paintTextUsingColor(var1, var2, var9, var5, var15);
  223.                   }
  224.  
  225.                   this.paintTextUsingColor(var1, var2, var18, var15, var16);
  226.                   if (var16 < var6) {
  227.                      this.paintTextUsingColor(var1, var2, var9, var16, var6);
  228.                   }
  229.                }
  230.             }
  231.          }
  232.       }
  233.  
  234.       if (!var3) {
  235.          this.paintTextUsingColor(var1, var2, var9, var5, var6);
  236.       }
  237.  
  238.    }
  239.  
  240.    final void paintTextUsingColor(Graphics var1, Shape var2, Color var3, int var4, int var5) {
  241.       var1.setColor(var3);
  242.       this.painter.paint(this, var1, var2, var4, var5);
  243.       boolean var6 = this.isUnderline();
  244.       boolean var7 = this.isStrikeThrough();
  245.       if (var6 || var7) {
  246.          Rectangle var8 = var2 instanceof Rectangle ? (Rectangle)var2 : var2.getBounds();
  247.          View var9 = ((View)this).getParent();
  248.          if (var9 != null && var9.getEndOffset() == var5) {
  249.             for(Segment var10 = this.getText(var4, var5); var10.count > 0 && Character.isWhitespace(var10.array[var10.count - 1]); --var10.count) {
  250.                --var5;
  251.             }
  252.          }
  253.  
  254.          int var15 = var8.x;
  255.          int var11 = this.getStartOffset();
  256.          if (var11 != var4) {
  257.             var15 += (int)this.painter.getSpan(this, var11, var4, this.getTabExpander(), (float)var15);
  258.          }
  259.  
  260.          int var12 = var15 + (int)this.painter.getSpan(this, var4, var5, this.getTabExpander(), (float)var15);
  261.          int var13 = (int)this.painter.getDescent(this);
  262.          int var14 = var8.y + var8.height - (int)this.painter.getDescent(this);
  263.          if (var6) {
  264.             ++var14;
  265.          } else if (var7) {
  266.             var14 -= (int)(this.painter.getAscent(this) * 0.3F);
  267.          }
  268.  
  269.          var1.drawLine(var15, var14, var12, var14);
  270.       }
  271.  
  272.    }
  273.  
  274.    public float getPreferredSpan(int var1) {
  275.       this.checkPainter();
  276.       int var2 = this.getStartOffset();
  277.       int var3 = this.getEndOffset();
  278.       switch (var1) {
  279.          case 0:
  280.             float var4 = this.painter.getSpan(this, var2, var3, this.expander, (float)this.field_0);
  281.             return Math.max(var4, 1.0F);
  282.          case 1:
  283.             float var5 = this.painter.getHeight(this);
  284.             if (this.isSuperscript()) {
  285.                var5 += var5 / 3.0F;
  286.             }
  287.  
  288.             return var5;
  289.          default:
  290.             throw new IllegalArgumentException("Invalid axis: " + var1);
  291.       }
  292.    }
  293.  
  294.    public float getAlignment(int var1) {
  295.       this.checkPainter();
  296.       if (var1 == 1) {
  297.          boolean var2 = this.isSuperscript();
  298.          boolean var3 = this.isSubscript();
  299.          float var4 = this.painter.getHeight(this);
  300.          float var5 = this.painter.getDescent(this);
  301.          float var6 = this.painter.getAscent(this);
  302.          float var7;
  303.          if (var2) {
  304.             var7 = 1.0F;
  305.          } else if (var3) {
  306.             var7 = var4 > 0.0F ? (var4 - (var5 + var6 / 2.0F)) / var4 : 0.0F;
  307.          } else {
  308.             var7 = var4 > 0.0F ? (var4 - var5) / var4 : 0.0F;
  309.          }
  310.  
  311.          return var7;
  312.       } else {
  313.          return super.getAlignment(var1);
  314.       }
  315.    }
  316.  
  317.    public Shape modelToView(int var1, Shape var2, Position.Bias var3) throws BadLocationException {
  318.       this.checkPainter();
  319.       return this.painter.modelToView(this, var1, var3, var2);
  320.    }
  321.  
  322.    public int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4) {
  323.       this.checkPainter();
  324.       return this.painter.viewToModel(this, var1, var2, var3, var4);
  325.    }
  326.  
  327.    public int getBreakWeight(int var1, float var2, float var3) {
  328.       if (var1 != 0) {
  329.          return super.getBreakWeight(var1, var2, var3);
  330.       } else {
  331.          this.checkPainter();
  332.          int var4 = this.getStartOffset();
  333.          int var5 = this.painter.getBoundedPosition(this, var4, var2, var3);
  334.          if (var5 == var4) {
  335.             return 0;
  336.          } else {
  337.             Segment var6 = this.getText(var4, var5);
  338.  
  339.             for(char var7 = var6.last(); var7 != '\uffff'; var7 = var6.previous()) {
  340.                if (Character.isWhitespace(var7)) {
  341.                   return 2000;
  342.                }
  343.             }
  344.  
  345.             return 1000;
  346.          }
  347.       }
  348.    }
  349.  
  350.    public View breakView(int var1, int var2, float var3, float var4) {
  351.       if (var1 != 0) {
  352.          return this;
  353.       } else {
  354.          this.checkPainter();
  355.          int var5 = this.painter.getBoundedPosition(this, var2, var3, var4);
  356.          Segment var6 = this.getText(var2, var5);
  357.  
  358.          for(char var7 = var6.last(); var7 != '\uffff'; var7 = var6.previous()) {
  359.             if (Character.isWhitespace(var7)) {
  360.                var5 = var2 + (var6.getIndex() - var6.getBeginIndex()) + 1;
  361.                break;
  362.             }
  363.          }
  364.  
  365.          GlyphView var8 = (GlyphView)this.createFragment(var2, var5);
  366.          var8.field_0 = (int)var3;
  367.          return var8;
  368.       }
  369.    }
  370.  
  371.    public View createFragment(int var1, int var2) {
  372.       this.checkPainter();
  373.       Element var3 = ((View)this).getElement();
  374.       GlyphView var4 = (GlyphView)this.clone();
  375.       var4.offset = (short)(var1 - var3.getStartOffset());
  376.       var4.length = (short)(var2 - var1);
  377.       var4.painter = this.painter.getPainter(var4, var1, var2);
  378.       return var4;
  379.    }
  380.  
  381.    public int getNextVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
  382.       return this.painter.getNextVisualPositionFrom(this, var1, var2, var3, var4, var5);
  383.    }
  384.  
  385.    public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  386.       ((View)this).preferenceChanged((View)null, true, false);
  387.    }
  388.  
  389.    public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  390.       ((View)this).preferenceChanged((View)null, true, false);
  391.    }
  392.  
  393.    public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  394.       ((View)this).preferenceChanged((View)null, true, true);
  395.    }
  396. }
  397.