home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import java.awt.Shape;
- import javax.swing.event.DocumentEvent;
-
- public class GlyphView extends View implements TabableView, Cloneable {
- Segment text = new Segment();
- short offset = 0;
- short length = 0;
- TabExpander expander;
- // $FF: renamed from: x int
- int field_0;
- GlyphPainter painter;
- static GlyphPainter defaultPainter;
-
- public GlyphView(Element var1) {
- super(var1);
- }
-
- protected final Object clone() {
- Object var1;
- try {
- var1 = super.clone();
- } catch (CloneNotSupportedException var3) {
- var1 = null;
- }
-
- return var1;
- }
-
- public GlyphPainter getGlyphPainter() {
- return this.painter;
- }
-
- public void setGlyphPainter(GlyphPainter var1) {
- this.painter = var1;
- }
-
- public Segment getText(int var1, int var2) {
- try {
- Document var3 = ((View)this).getDocument();
- var3.getText(var1, var2 - var1, this.text);
- } catch (BadLocationException var4) {
- throw new StateInvariantError("GlyphView: Stale view: " + var4);
- }
-
- return this.text;
- }
-
- public Color getBackground() {
- Document var1 = ((View)this).getDocument();
- if (var1 instanceof StyledDocument) {
- AttributeSet var2 = ((View)this).getAttributes();
- if (var2.isDefined(StyleConstants.Background)) {
- return ((StyledDocument)var1).getBackground(var2);
- }
- }
-
- return null;
- }
-
- public Color getForeground() {
- Document var1 = ((View)this).getDocument();
- if (var1 instanceof StyledDocument) {
- AttributeSet var3 = ((View)this).getAttributes();
- return ((StyledDocument)var1).getForeground(var3);
- } else {
- Container var2 = ((View)this).getContainer();
- return var2 != null ? ((Component)var2).getForeground() : null;
- }
- }
-
- public Font getFont() {
- Document var1 = ((View)this).getDocument();
- if (var1 instanceof StyledDocument) {
- AttributeSet var3 = ((View)this).getAttributes();
- return ((StyledDocument)var1).getFont(var3);
- } else {
- Container var2 = ((View)this).getContainer();
- return var2 != null ? ((Component)var2).getFont() : null;
- }
- }
-
- public boolean isUnderline() {
- AttributeSet var1 = ((View)this).getAttributes();
- return StyleConstants.isUnderline(var1);
- }
-
- public boolean isStrikeThrough() {
- AttributeSet var1 = ((View)this).getAttributes();
- return StyleConstants.isStrikeThrough(var1);
- }
-
- public boolean isSubscript() {
- AttributeSet var1 = ((View)this).getAttributes();
- return StyleConstants.isSubscript(var1);
- }
-
- public boolean isSuperscript() {
- AttributeSet var1 = ((View)this).getAttributes();
- return StyleConstants.isSuperscript(var1);
- }
-
- public TabExpander getTabExpander() {
- return this.expander;
- }
-
- protected void checkPainter() {
- if (this.painter == null) {
- if (defaultPainter == null) {
- String var1 = "javax.swing.text.GlyphPainter1";
-
- try {
- ClassLoader var3 = this.getClass().getClassLoader();
- Class var2;
- if (var3 != null) {
- var2 = var3.loadClass(var1);
- } else {
- var2 = Class.forName(var1);
- }
-
- Object var4 = var2.newInstance();
- if (var4 instanceof GlyphPainter) {
- defaultPainter = (GlyphPainter)var4;
- }
- } catch (Throwable var5) {
- throw new StateInvariantError("GlyphView: Can't load glyph painter: " + var1);
- }
- }
-
- this.setGlyphPainter(defaultPainter.getPainter(this, this.getStartOffset(), this.getEndOffset()));
- }
-
- }
-
- public float getTabbedSpan(float var1, TabExpander var2) {
- this.checkPainter();
- this.expander = var2;
- this.field_0 = (int)var1;
- int var3 = this.getStartOffset();
- int var4 = this.getEndOffset();
- float var5 = this.painter.getSpan(this, var3, var4, this.expander, var1);
- return var5;
- }
-
- public float getPartialSpan(int var1, int var2) {
- this.checkPainter();
- float var3 = this.painter.getSpan(this, var1, var2, this.expander, (float)this.field_0);
- return var3;
- }
-
- public int getStartOffset() {
- Element var1 = ((View)this).getElement();
- return this.length > 0 ? var1.getStartOffset() + this.offset : var1.getStartOffset();
- }
-
- public int getEndOffset() {
- Element var1 = ((View)this).getElement();
- return this.length > 0 ? var1.getStartOffset() + this.offset + this.length : var1.getEndOffset();
- }
-
- public void paint(Graphics var1, Shape var2) {
- this.checkPainter();
- boolean var3 = false;
- Container var4 = ((View)this).getContainer();
- int var5 = this.getStartOffset();
- int var6 = this.getEndOffset();
- Rectangle var7 = var2 instanceof Rectangle ? (Rectangle)var2 : var2.getBounds();
- Color var8 = this.getBackground();
- Color var9 = this.getForeground();
- if (var8 != null) {
- var1.setColor(var8);
- var1.fillRect(var7.x, var7.y, var7.width, var7.height);
- }
-
- if (var4 instanceof JTextComponent) {
- JTextComponent var10 = (JTextComponent)var4;
- Highlighter var11 = var10.getHighlighter();
- if (var11 instanceof LayeredHighlighter) {
- ((LayeredHighlighter)var11).paintLayeredHighlights(var1, var5, var6, var2, var10, this);
- }
- }
-
- if (Utilities.isComposedTextElement(((View)this).getElement())) {
- Utilities.paintComposedText(var1, var2.getBounds(), this);
- var3 = true;
- } else if (var4 instanceof JTextComponent) {
- JTextComponent var17 = (JTextComponent)var4;
- Color var18 = var17.getSelectedTextColor();
- Caret var12 = var17.getCaret();
- if (var12 != null && !var12.isSelectionVisible()) {
- var18 = var9;
- }
-
- if (var18 != null && !var18.equals(var9)) {
- int var13 = var17.getSelectionStart();
- int var14 = var17.getSelectionEnd();
- if (var13 != var14) {
- int var15;
- if (var13 <= var5) {
- var15 = var5;
- } else {
- var15 = Math.min(var13, var6);
- }
-
- int var16;
- if (var14 >= var6) {
- var16 = var6;
- } else {
- var16 = Math.max(var14, var5);
- }
-
- if (var15 != var16) {
- var3 = true;
- if (var15 > var5) {
- this.paintTextUsingColor(var1, var2, var9, var5, var15);
- }
-
- this.paintTextUsingColor(var1, var2, var18, var15, var16);
- if (var16 < var6) {
- this.paintTextUsingColor(var1, var2, var9, var16, var6);
- }
- }
- }
- }
- }
-
- if (!var3) {
- this.paintTextUsingColor(var1, var2, var9, var5, var6);
- }
-
- }
-
- final void paintTextUsingColor(Graphics var1, Shape var2, Color var3, int var4, int var5) {
- var1.setColor(var3);
- this.painter.paint(this, var1, var2, var4, var5);
- boolean var6 = this.isUnderline();
- boolean var7 = this.isStrikeThrough();
- if (var6 || var7) {
- Rectangle var8 = var2 instanceof Rectangle ? (Rectangle)var2 : var2.getBounds();
- View var9 = ((View)this).getParent();
- if (var9 != null && var9.getEndOffset() == var5) {
- for(Segment var10 = this.getText(var4, var5); var10.count > 0 && Character.isWhitespace(var10.array[var10.count - 1]); --var10.count) {
- --var5;
- }
- }
-
- int var15 = var8.x;
- int var11 = this.getStartOffset();
- if (var11 != var4) {
- var15 += (int)this.painter.getSpan(this, var11, var4, this.getTabExpander(), (float)var15);
- }
-
- int var12 = var15 + (int)this.painter.getSpan(this, var4, var5, this.getTabExpander(), (float)var15);
- int var13 = (int)this.painter.getDescent(this);
- int var14 = var8.y + var8.height - (int)this.painter.getDescent(this);
- if (var6) {
- ++var14;
- } else if (var7) {
- var14 -= (int)(this.painter.getAscent(this) * 0.3F);
- }
-
- var1.drawLine(var15, var14, var12, var14);
- }
-
- }
-
- public float getPreferredSpan(int var1) {
- this.checkPainter();
- int var2 = this.getStartOffset();
- int var3 = this.getEndOffset();
- switch (var1) {
- case 0:
- float var4 = this.painter.getSpan(this, var2, var3, this.expander, (float)this.field_0);
- return Math.max(var4, 1.0F);
- case 1:
- float var5 = this.painter.getHeight(this);
- if (this.isSuperscript()) {
- var5 += var5 / 3.0F;
- }
-
- return var5;
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- public float getAlignment(int var1) {
- this.checkPainter();
- if (var1 == 1) {
- boolean var2 = this.isSuperscript();
- boolean var3 = this.isSubscript();
- float var4 = this.painter.getHeight(this);
- float var5 = this.painter.getDescent(this);
- float var6 = this.painter.getAscent(this);
- float var7;
- if (var2) {
- var7 = 1.0F;
- } else if (var3) {
- var7 = var4 > 0.0F ? (var4 - (var5 + var6 / 2.0F)) / var4 : 0.0F;
- } else {
- var7 = var4 > 0.0F ? (var4 - var5) / var4 : 0.0F;
- }
-
- return var7;
- } else {
- return super.getAlignment(var1);
- }
- }
-
- public Shape modelToView(int var1, Shape var2, Position.Bias var3) throws BadLocationException {
- this.checkPainter();
- return this.painter.modelToView(this, var1, var3, var2);
- }
-
- public int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4) {
- this.checkPainter();
- return this.painter.viewToModel(this, var1, var2, var3, var4);
- }
-
- public int getBreakWeight(int var1, float var2, float var3) {
- if (var1 != 0) {
- return super.getBreakWeight(var1, var2, var3);
- } else {
- this.checkPainter();
- int var4 = this.getStartOffset();
- int var5 = this.painter.getBoundedPosition(this, var4, var2, var3);
- if (var5 == var4) {
- return 0;
- } else {
- Segment var6 = this.getText(var4, var5);
-
- for(char var7 = var6.last(); var7 != '\uffff'; var7 = var6.previous()) {
- if (Character.isWhitespace(var7)) {
- return 2000;
- }
- }
-
- return 1000;
- }
- }
- }
-
- public View breakView(int var1, int var2, float var3, float var4) {
- if (var1 != 0) {
- return this;
- } else {
- this.checkPainter();
- int var5 = this.painter.getBoundedPosition(this, var2, var3, var4);
- Segment var6 = this.getText(var2, var5);
-
- for(char var7 = var6.last(); var7 != '\uffff'; var7 = var6.previous()) {
- if (Character.isWhitespace(var7)) {
- var5 = var2 + (var6.getIndex() - var6.getBeginIndex()) + 1;
- break;
- }
- }
-
- GlyphView var8 = (GlyphView)this.createFragment(var2, var5);
- var8.field_0 = (int)var3;
- return var8;
- }
- }
-
- public View createFragment(int var1, int var2) {
- this.checkPainter();
- Element var3 = ((View)this).getElement();
- GlyphView var4 = (GlyphView)this.clone();
- var4.offset = (short)(var1 - var3.getStartOffset());
- var4.length = (short)(var2 - var1);
- var4.painter = this.painter.getPainter(var4, var1, var2);
- return var4;
- }
-
- public int getNextVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
- return this.painter.getNextVisualPositionFrom(this, var1, var2, var3, var4, var5);
- }
-
- public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- ((View)this).preferenceChanged((View)null, true, false);
- }
-
- public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- ((View)this).preferenceChanged((View)null, true, false);
- }
-
- public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- ((View)this).preferenceChanged((View)null, true, true);
- }
- }
-