home *** CD-ROM | disk | FTP | other *** search
- package jclass.bwt;
-
- import java.awt.Color;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Rectangle;
-
- class TextLine {
- JCTextAreaComponent comp;
- char[] text;
- int row;
- int start_pos;
- int num_char;
- int width;
-
- TextLine(JCTextAreaComponent var1, int var2, String var3) {
- this.text = new char[0];
- this.comp = var1;
- this.row = var2;
- this.setText(var3);
- }
-
- TextLine(JCTextAreaComponent var1, int var2, char[] var3, int var4, int var5) {
- this(var1, var2, new String(var3, var4, var5));
- this.start_pos = var4;
- }
-
- synchronized void setStartPos(int var1) {
- this.start_pos = var1;
- }
-
- void calcWidth() {
- this.width = this.comp.fm.charsWidth(this.text, 0, this.num_char);
- }
-
- synchronized void append(String var1) {
- this.insert(var1, this.num_char);
- }
-
- synchronized void deleteToEnd(int var1) {
- this.delete(var1, this.num_char);
- }
-
- synchronized void delete(int var1, int var2) {
- if (var2 > var1) {
- this.width -= this.comp.fm.charsWidth(this.text, var1, var2 - var1);
- System.arraycopy(this.text, var2, this.text, var1, this.num_char - var2);
- this.num_char -= var2 - var1;
- }
-
- }
-
- void insert(String var1, int var2) {
- int var3 = var1 != null ? var1.length() : 0;
- if (var3 != 0) {
- if (this.num_char + var3 + var2 >= this.text.length) {
- char[] var4 = new char[Math.max(this.num_char * 2, this.num_char + var2 + var3 + 1)];
- System.arraycopy(this.text, 0, var4, 0, this.num_char);
- this.text = var4;
- }
-
- if (this.num_char > var2) {
- System.arraycopy(this.text, var2, this.text, var2 + var3, this.num_char - var2);
- }
-
- var1.getChars(0, var3, this.text, var2);
- this.num_char += var3;
- this.width += this.comp.fm.stringWidth(var1);
- }
- }
-
- synchronized void replace(String var1, int var2, int var3) {
- this.delete(var2, var3);
- this.insert(var1, var2);
- }
-
- synchronized void setText(String var1) {
- this.num_char = 0;
- this.insert(var1, 0);
- this.calcWidth();
- }
-
- int getWidth() {
- return this.width;
- }
-
- int getWidth(int var1) {
- int var2 = Math.max(0, Math.min(this.num_char, var1 - this.start_pos));
- return this.comp.fm.charsWidth(this.text, 0, var2);
- }
-
- int getWidthToEnd(int var1) {
- int var2 = var1 - this.start_pos;
- return this.comp.fm.charsWidth(this.text, var2, Math.max(0, this.num_char - var2));
- }
-
- int xToPosition(int var1) {
- int[] var2 = this.comp.fm.getWidths();
- Rectangle var4 = this.comp.getDrawingArea();
- switch (this.comp.alignment) {
- case 1:
- var1 -= var4.x + (var4.width - this.width) / 2;
- break;
- case 2:
- var1 -= var4.x + var4.width - this.width - this.comp.horiz_origin;
- break;
- default:
- var1 -= var4.x - this.comp.horiz_origin;
- }
-
- int var3;
- for(var3 = 0; var3 < this.num_char; ++var3) {
- int var5 = var2[this.text[var3]];
- if (var1 < var5 / 2) {
- break;
- }
-
- var1 -= var5;
- }
-
- return var3 + this.start_pos;
- }
-
- synchronized void paint(Graphics var1) {
- Rectangle var2 = this.comp.getDrawingArea();
- var2.reshape(var2.x - this.comp.horiz_origin, var2.y + this.comp.getRowPosition(this.row) - this.comp.vert_origin, var2.width + this.comp.horiz_origin, this.comp.getRowHeight(this.row));
- if (var2.intersects(this.comp.getPaintRect())) {
- FontMetrics var3 = this.comp.fm;
- int var4 = var2.height;
- int var5 = var4 - var3.getAscent();
- int var6 = var2.x;
- int var7 = var2.y + var4 - var5;
- int var8 = this.comp.select_start - this.start_pos;
- int var9 = this.comp.select_end - this.start_pos;
- switch (this.comp.alignment) {
- case 1:
- var6 += (var2.width - this.width) / 2;
- break;
- case 2:
- var6 += var2.width - this.width;
- }
-
- if (var8 != var9 && var8 < this.num_char && var9 >= 0) {
- var8 = Math.max(var8, 0);
- var9 = Math.min(var9, this.num_char);
- if (var8 > 0) {
- var1.drawChars(this.text, 0, var8, var6, var7);
- var6 += var3.charsWidth(this.text, 0, var8);
- }
-
- int var10 = var3.charsWidth(this.text, var8, var9 - var8);
- Color var11 = var1.getColor();
- this.comp.setSelectedBg(var1);
- var1.fillRect(var6, var2.y, var10, var2.height);
- this.comp.setSelectedFg(var1);
- var1.drawChars(this.text, var8, var9 - var8, var6, var7);
- var6 += var10;
- var1.setColor(var11);
- if (var9 < this.num_char) {
- var1.drawChars(this.text, var9, this.num_char - var9, var6, var7);
- return;
- }
- } else {
- var1.drawChars(this.text, 0, this.num_char, var6, var7);
- }
-
- }
- }
-
- public String toString() {
- return "row=" + this.row + " start=" + this.start_pos + " num_char=" + this.num_char + " width=" + this.width + " text=" + new String(this.text, 0, this.num_char) + "|";
- }
- }
-