home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import java.util.StringTokenizer;
- import netscape.util.ClassInfo;
- import netscape.util.Codable;
- import netscape.util.CodingException;
- import netscape.util.Decoder;
- import netscape.util.Encoder;
- import netscape.util.InconsistencyException;
-
- public class TextParagraphFormat implements Cloneable, Codable {
- int _leftIndent;
- int _leftMargin;
- int _rightMargin;
- int _lineSpacing;
- int[] _tabStops;
- int _justification;
- boolean _wrapsUnderFirstCharacter;
- static final String LEFTINDENT_KEY = "leftIndent";
- static final String LEFTMARGIN_KEY = "leftMargin";
- static final String RIGHTINDENT_KEY = "rightMargin";
- static final String LINESPACING_KEY = "lineSpacing";
- static final String TABSTOPS_KEY = "tabStops";
- static final String JUSTIFICATION_KEY = "justification";
- static final String WRAPS_UNDER_FIRST_CHARACTER_KEY = "wrapsUnderFirstCharacter";
-
- public Object clone() {
- try {
- Object var2 = super.clone();
- TextParagraphFormat var1 = (TextParagraphFormat)var2;
- if (this._tabStops != null) {
- var1.clearAllTabPositions();
- var1.setTabPositions(this._tabStops);
- }
-
- return var2;
- } catch (CloneNotSupportedException var4) {
- throw new InconsistencyException(this + ": clone() not supported :" + var4);
- }
- }
-
- public void setLeftMargin(int var1) {
- this._leftMargin = var1;
- }
-
- public int leftMargin() {
- return this._leftMargin;
- }
-
- public void setLeftIndent(int var1) {
- this._leftIndent = var1;
- }
-
- public int leftIndent() {
- return this._leftIndent;
- }
-
- public void setRightMargin(int var1) {
- this._rightMargin = var1;
- }
-
- public int rightMargin() {
- return this._rightMargin;
- }
-
- public void setLineSpacing(int var1) {
- this._lineSpacing = var1;
- }
-
- public int lineSpacing() {
- return this._lineSpacing;
- }
-
- public void setJustification(int var1) {
- if (this._justification >= 0 && this._justification <= 3) {
- this._justification = var1;
- }
- }
-
- public int justification() {
- return this._justification;
- }
-
- public void setWrapsUnderFirstCharacter(boolean var1) {
- this._wrapsUnderFirstCharacter = var1;
- }
-
- public boolean wrapsUnderFirstCharacter() {
- return this._justification == 0 ? this._wrapsUnderFirstCharacter : false;
- }
-
- public void clearAllTabPositions() {
- this._tabStops = null;
- }
-
- public void addTabPosition(int var1) {
- if (var1 >= 0) {
- if (this._tabStops == null) {
- this._growTabArrayTo(20);
- this._tabStops[0] = var1;
- } else {
- int var3 = this._tabStops.length;
- if (this._tabStops[var3 - 1] != -1) {
- this._growTabArrayTo(this._tabStops.length + 10);
- var3 = this._tabStops.length;
- }
-
- for(int var2 = 0; var2 < var3; ++var2) {
- if (this._tabStops[var2] > var1) {
- return;
- }
-
- if (this._tabStops[var2] == -1) {
- this._tabStops[var2] = var1;
- return;
- }
- }
-
- }
- }
- }
-
- public void setTabPositions(int[] var1) {
- if (var1 != null) {
- this.clearAllTabPositions();
- int var2 = var1.length;
-
- for(int var3 = 0; var3 < var2; ++var3) {
- this.addTabPosition(var1[var3]);
- }
-
- }
- }
-
- public int[] tabPositions() {
- int var1 = 0;
- int var2 = 0;
-
- for(int var3 = this._tabStops.length; var2 < var3 && this._tabStops[var2] != -1; ++var2) {
- ++var1;
- }
-
- int[] var4 = new int[var1];
- System.arraycopy(this._tabStops, 0, var4, 0, var1);
- return var4;
- }
-
- public int positionForTab(int var1) {
- return this._tabStops != null && var1 >= 0 && var1 < this._tabStops.length ? this._tabStops[var1] : -1;
- }
-
- public void describeClassInfo(ClassInfo var1) {
- var1.addClass("netscape.application.TextParagraphFormat", 1);
- var1.addField("leftIndent", (byte)8);
- var1.addField("leftMargin", (byte)8);
- var1.addField("rightMargin", (byte)8);
- var1.addField("lineSpacing", (byte)8);
- var1.addField("tabStops", (byte)16);
- var1.addField("justification", (byte)8);
- var1.addField("wrapsUnderFirstCharacter", (byte)0);
- }
-
- public void encode(Encoder var1) throws CodingException {
- var1.encodeInt("leftIndent", this._leftIndent);
- var1.encodeInt("leftMargin", this._leftMargin);
- var1.encodeInt("rightMargin", this._rightMargin);
- var1.encodeInt("lineSpacing", this._lineSpacing);
- if (this._tabStops != null) {
- FastStringBuffer var2 = new FastStringBuffer();
- int var4 = this._tabStops.length;
-
- for(int var3 = 0; var3 < var4; ++var3) {
- var2.append(this._tabStops[var3] + ".");
- }
-
- var1.encodeString("tabStops", var2.toString());
- } else {
- var1.encodeString("tabStops", (String)null);
- }
-
- var1.encodeInt("justification", this._justification);
- var1.encodeBoolean("wrapsUnderFirstCharacter", this._wrapsUnderFirstCharacter);
- }
-
- public void decode(Decoder var1) throws CodingException {
- this._leftIndent = var1.decodeInt("leftIndent");
- this._leftMargin = var1.decodeInt("leftMargin");
- this._rightMargin = var1.decodeInt("rightMargin");
- this._lineSpacing = var1.decodeInt("lineSpacing");
- String var2 = var1.decodeString("tabStops");
- if (var2 != null) {
- try {
- StringTokenizer var3 = new StringTokenizer(var2, ".", false);
- this.addTabPosition(Integer.parseInt(var3.nextToken()));
- } catch (Exception var4) {
- throw new CodingException("Illegal tab stop data: \"" + var2 + "\"");
- }
- }
-
- this._justification = var1.decodeInt("justification");
- this._wrapsUnderFirstCharacter = var1.decodeBoolean("wrapsUnderFirstCharacter");
- }
-
- public void finishDecoding() throws CodingException {
- }
-
- private void _growTabArrayTo(int var1) {
- if (var1 >= 1) {
- if (this._tabStops == null || this._tabStops.length < var1) {
- int[] var4 = this._tabStops;
- int var2 = var1 + 5;
-
- for(this._tabStops = new int[var2]; var2-- > 0; this._tabStops[var2] = -1) {
- }
-
- if (var4 != null) {
- int var3 = var4.length;
-
- for(int var5 = 0; var5 < var3; ++var5) {
- this._tabStops[var5] = var4[var5];
- }
-
- }
- }
- }
- }
-
- public String toString() {
- StringBuffer var1 = new StringBuffer();
- var1.append("leftIndent = " + this._leftIndent + " " + "leftMargin = " + this._leftMargin + " " + "rightMargin = " + this._rightMargin + " " + "lineSpacing = " + this._lineSpacing + " " + "justification = " + this._justification);
- return var1.toString();
- }
- }
-