home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import netscape.util.ClassInfo;
- import netscape.util.CodingException;
- import netscape.util.Decoder;
- import netscape.util.Encoder;
-
- public class ScrollBar extends View implements Target {
- Scrollable scrollableView;
- Button increaseButton;
- Button decreaseButton;
- Image knobImage;
- Image trayTopImage;
- Image trayBottomImage;
- Image trayLeftImage;
- Image trayRightImage;
- Timer timer;
- int scrollValue;
- int origScrollValue;
- int knobLength;
- int lastMouseValue;
- int lastAltMouseValue;
- int lineIncrement;
- int axis;
- boolean active;
- boolean enabled;
- boolean shouldRedraw;
- float pageSizeAsPercent;
- int pixelScrollValue;
- ScrollBarOwner scrollBarOwner;
- public static final int DEFAULT_LINE_INCREMENT = 12;
- public static final float DEFAULT_PAGE_SIZE = 1.0F;
- public static final int DEFAULT_WIDTH = 0;
- public static final int DEFAULT_HEIGHT = 0;
- public static final String UPDATE = "updateScrollValue";
- public static final String SCROLL_PAGE_BACKWARD = "scrollPageBackward";
- public static final String SCROLL_PAGE_FORWARD = "scrollPageForward";
- public static final String SCROLL_LINE_BACKWARD = "scrollLineBackward";
- public static final String SCROLL_LINE_FORWARD = "scrollLineForward";
- private static final String TIMER_SCROLL_PAGE = "timerScroll";
- static final String SCROLLVIEW_KEY = "scrollView";
- static final String INCREASEBUTTON_KEY = "increaseButton";
- static final String DECREASEBUTTON_KEY = "decreaseButton";
- static final String KNOBIMAGE_KEY = "image";
- static final String SCROLLVALUE_KEY = "scrollValue";
- static final String AXIS_KEY = "axis";
- static final String ACTIVE_KEY = "active";
- static final String ENABLED_KEY = "enabled";
- static final String LINE_INCREMENT_KEY = "lineIncrement";
- static final String OWNER_KEY = "owner";
-
- public ScrollBar() {
- this(0, 0, 0, 0);
- }
-
- public ScrollBar(Rect var1) {
- this(var1.x, var1.y, var1.width, var1.height);
- }
-
- public ScrollBar(int var1, int var2, int var3, int var4) {
- this(var1, var2, var3, var4, 1);
- }
-
- public ScrollBar(int var1, int var2, int var3, int var4, int var5) {
- super(var1, var2, var3, var4);
- this.axis = var5;
- this.lineIncrement = 12;
- this.pageSizeAsPercent = 1.0F;
- this.setEnabled(true);
- Button var6 = new Button(0, 0, 16, 16);
- var6.setType(3);
- var6.setBordered(true);
- var6.setRaisedBorder(BezelBorder.raisedScrollButtonBezel());
- var6.setLoweredBorder(BezelBorder.loweredScrollButtonBezel());
- if (this.axis == 0) {
- var6.setImage(Bitmap.bitmapNamed("netscape/application/ScrollRightArrow.gif"));
- var6.setAltImage(Bitmap.bitmapNamed("netscape/application/ScrollRightArrowActive.gif"));
- } else {
- var6.setImage(Bitmap.bitmapNamed("netscape/application/ScrollDownArrow.gif"));
- var6.setAltImage(Bitmap.bitmapNamed("netscape/application/ScrollDownArrowActive.gif"));
- }
-
- this.setIncreaseButton(var6);
- var6 = new Button(0, 0, 16, 16);
- var6.setType(3);
- var6.setBordered(true);
- var6.setRaisedBorder(BezelBorder.raisedScrollButtonBezel());
- var6.setLoweredBorder(BezelBorder.loweredScrollButtonBezel());
- if (this.axis == 0) {
- var6.setImage(Bitmap.bitmapNamed("netscape/application/ScrollLeftArrow.gif"));
- var6.setAltImage(Bitmap.bitmapNamed("netscape/application/ScrollLeftArrowActive.gif"));
- } else {
- var6.setImage(Bitmap.bitmapNamed("netscape/application/ScrollUpArrow.gif"));
- var6.setAltImage(Bitmap.bitmapNamed("netscape/application/ScrollUpArrowActive.gif"));
- }
-
- this.setDecreaseButton(var6);
- if (this.axis == 0) {
- ((View)this).setHorizResizeInstruction(2);
- ((View)this).setVertResizeInstruction(8);
- } else {
- ((View)this).setHorizResizeInstruction(1);
- ((View)this).setVertResizeInstruction(16);
- }
-
- if (this.axis == 0) {
- this.setKnobImage(Bitmap.bitmapNamed("netscape/application/ScrollKnobH.gif"));
- } else {
- this.setKnobImage(Bitmap.bitmapNamed("netscape/application/ScrollKnobV.gif"));
- }
-
- this.trayTopImage = Bitmap.bitmapNamed("netscape/application/ScrollTrayTop.gif");
- this.trayBottomImage = Bitmap.bitmapNamed("netscape/application/ScrollTrayBottom.gif");
- this.trayLeftImage = Bitmap.bitmapNamed("netscape/application/ScrollTrayLeft.gif");
- this.trayRightImage = Bitmap.bitmapNamed("netscape/application/ScrollTrayRight.gif");
- if (this.axis == 0 && super.bounds.height == 0 || this.axis != 0 && super.bounds.width == 0) {
- this._adjustToFit();
- }
-
- this._computeScrollValue();
- this._setupKeyboard();
- }
-
- public boolean isTransparent() {
- return false;
- }
-
- public Rect interiorRect() {
- return Rect.newRect(1, 1, ((View)this).width() - 2, ((View)this).height() - 2);
- }
-
- public Size minSize() {
- int var1;
- int var2;
- if (this.increaseButton != null) {
- var1 = this.increaseButton.bounds.width;
- var2 = this.increaseButton.bounds.height;
- } else {
- var2 = 0;
- var1 = 0;
- }
-
- if (this.decreaseButton != null) {
- if (this.axis == 0) {
- var1 += this.decreaseButton.bounds.width;
- if (var2 < this.decreaseButton.bounds.height) {
- var2 = this.decreaseButton.bounds.height;
- }
- } else {
- if (var1 < this.decreaseButton.bounds.width) {
- var1 = this.decreaseButton.bounds.width;
- }
-
- var2 += this.decreaseButton.bounds.height;
- }
- }
-
- return new Size(var1 + 2, var2 + 2);
- }
-
- void _adjustToFit() {
- Size var1 = this.minSize();
- if (this.axis == 0) {
- ((View)this).sizeTo(super.bounds.width, var1.height);
- } else {
- ((View)this).sizeTo(var1.width, super.bounds.height);
- }
- }
-
- public void didSizeBy(int var1, int var2) {
- super.didSizeBy(var1, var2);
- this._computeScrollValue();
- }
-
- public void setIncreaseButton(Button var1) {
- if (this.increaseButton != null) {
- this.increaseButton.removeFromSuperview();
- }
-
- this.increaseButton = var1;
- if (this.increaseButton != null) {
- this.increaseButton.setTarget(this);
- this.increaseButton.setCommand("scrollLineForward");
- if (this.axis == 0) {
- this.increaseButton.setHorizResizeInstruction(1);
- this.increaseButton.setVertResizeInstruction(16);
- } else {
- this.increaseButton.setHorizResizeInstruction(2);
- this.increaseButton.setVertResizeInstruction(8);
- }
-
- this._adjustToFit();
- }
-
- if (this.enabled && this.active) {
- this.addParts();
- }
-
- }
-
- public Button increaseButton() {
- return this.increaseButton;
- }
-
- public void setDecreaseButton(Button var1) {
- if (this.decreaseButton != null) {
- this.decreaseButton.removeFromSuperview();
- }
-
- this.decreaseButton = var1;
- if (this.decreaseButton != null) {
- this.decreaseButton.setTarget(this);
- this.decreaseButton.setCommand("scrollLineBackward");
- if (this.axis == 0) {
- this.decreaseButton.setHorizResizeInstruction(0);
- this.decreaseButton.setVertResizeInstruction(16);
- } else {
- this.decreaseButton.setHorizResizeInstruction(2);
- this.decreaseButton.setVertResizeInstruction(4);
- }
-
- this._adjustToFit();
- }
-
- if (this.enabled && this.active) {
- this.addParts();
- }
-
- }
-
- public Button decreaseButton() {
- return this.decreaseButton;
- }
-
- public void addParts() {
- byte var1 = 1;
- byte var2 = 1;
- if (this.decreaseButton != null) {
- this.decreaseButton.moveTo(var1, var2);
- }
-
- if (this.axis == 0) {
- if (this.increaseButton != null) {
- this.increaseButton.moveTo(((View)this).width() - 1 - this.increaseButton.width(), var2);
- }
- } else if (this.increaseButton != null) {
- this.increaseButton.moveTo(var1, ((View)this).height() - 1 - this.increaseButton.height());
- }
-
- ((View)this).addSubview(this.increaseButton);
- ((View)this).addSubview(this.decreaseButton);
- }
-
- public void removeParts() {
- if (this.increaseButton != null) {
- this.increaseButton.removeFromSuperview();
- }
-
- if (this.decreaseButton != null) {
- this.decreaseButton.removeFromSuperview();
- }
-
- }
-
- public void setScrollableObject(Scrollable var1) {
- if (this.scrollableView != var1) {
- this.scrollableView = var1;
- this._computeScrollValue();
- }
- }
-
- public Scrollable scrollableObject() {
- return this.scrollableView;
- }
-
- public void setScrollBarOwner(ScrollBarOwner var1) {
- this.scrollBarOwner = var1;
- }
-
- public ScrollBarOwner scrollBarOwner() {
- return this.scrollBarOwner;
- }
-
- public Rect scrollTrayRect() {
- if (this.axis == 0) {
- int var1 = 1;
- if (this.decreaseButton != null) {
- var1 += this.decreaseButton.bounds.width;
- }
-
- int var2 = ((View)this).width() - 1;
- if (this.increaseButton != null) {
- var2 -= this.increaseButton.width();
- }
-
- return Rect.newRect(var1, 1, var2 - var1, ((View)this).height() - 2);
- } else {
- int var3 = 1;
- if (this.decreaseButton != null) {
- var3 += this.decreaseButton.height();
- }
-
- int var4 = ((View)this).height() - 1;
- if (this.increaseButton != null) {
- var4 -= this.increaseButton.height();
- }
-
- return Rect.newRect(1, var3, ((View)this).width() - 2, var4 - var3);
- }
- }
-
- public int scrollTrayLength() {
- Rect var1 = this.scrollTrayRect();
- int var2 = this.axis == 0 ? var1.width : var1.height;
- Rect.returnRect(var1);
- return var2;
- }
-
- public void setKnobImage(Image var1) {
- this.knobImage = var1;
- this._adjustToFit();
- }
-
- public Image knobImage() {
- return this.knobImage;
- }
-
- public Rect knobRect() {
- Rect var1 = this.scrollTrayRect();
- int var2;
- int var3;
- int var4;
- int var5;
- if (this.axis == 0) {
- var2 = var1.x + this.scrollValue;
- var3 = var1.y;
- var4 = this.knobLength;
- var5 = var1.height;
- } else {
- var2 = var1.x;
- var3 = var1.y + this.scrollValue;
- var4 = var1.width;
- var5 = this.knobLength;
- }
-
- var1.setBounds(var2, var3, var4, var5);
- return var1;
- }
-
- public void setKnobLength(int var1) {
- int var2 = this.scrollTrayLength();
- if (var1 < this.minKnobLength()) {
- var1 = this.minKnobLength();
- } else if (var1 > var2) {
- var1 = var2;
- }
-
- this.knobLength = var1;
- }
-
- public int knobLength() {
- return this.knobLength;
- }
-
- public int minKnobLength() {
- return this.axis == 0 ? ((View)this).height() - 2 : ((View)this).width() - 2;
- }
-
- public void setEnabled(boolean var1) {
- if (var1 != this.enabled) {
- this.enabled = var1;
- if (this.active && this.enabled) {
- this.addParts();
- } else {
- if (this.enabled) {
- return;
- }
-
- this.removeParts();
- }
-
- ((View)this).setDirty(true);
- if (this.scrollBarOwner != null) {
- if (this.enabled) {
- this.scrollBarOwner.scrollBarWasEnabled(this);
- return;
- }
-
- this.scrollBarOwner.scrollBarWasDisabled(this);
- }
-
- }
- }
-
- public boolean isEnabled() {
- return this.enabled;
- }
-
- public void setActive(boolean var1) {
- if (var1 != this.active) {
- this.active = var1;
- if (this.active && this.enabled) {
- this.addParts();
- } else if (!this.active) {
- this.removeParts();
- }
-
- ((View)this).setDirty(true);
- if (this.scrollBarOwner != null) {
- if (this.active) {
- this.scrollBarOwner.scrollBarDidBecomeActive(this);
- return;
- }
-
- this.scrollBarOwner.scrollBarDidBecomeInactive(this);
- }
-
- }
- }
-
- public boolean isActive() {
- return this.active;
- }
-
- public void drawViewKnobInRect(Graphics var1, Rect var2) {
- BezelBorder.raisedScrollButtonBezel().drawInRect(var1, var2);
- var1.setColor(Color.lightGray);
- var1.fillRect(var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
- if (this.knobImage != null) {
- this.knobImage.drawCentered(var1, var2);
- }
-
- }
-
- public void drawView(Graphics var1) {
- var1.setColor(Color.gray153);
- var1.drawLine(0, 0, 0, ((View)this).height() - 1);
- var1.drawLine(1, 0, ((View)this).width() - 1, 0);
- var1.setColor(Color.gray231);
- var1.drawLine(((View)this).width() - 1, 0, ((View)this).width() - 1, ((View)this).height());
- var1.drawLine(0, ((View)this).height() - 1, ((View)this).width() - 1, ((View)this).height() - 1);
- Rect var2 = this.scrollTrayRect();
- int var4 = this.interiorRect().x;
- int var5 = this.interiorRect().y;
- int var6 = this.interiorRect().maxX();
- int var7 = this.interiorRect().maxY();
- int var11 = var2.x;
- int var10 = var2.y;
- int var8 = var2.x + var2.width;
- int var9 = var2.y + var2.height;
- if (this.isEnabled() && this.isActive()) {
- if (this.knobLength <= this.scrollTrayLength()) {
- var4 = var2.x;
- var6 = var2.maxX();
- var5 = var2.y;
- var7 = var2.maxY();
- if (this.axis == 0) {
- var11 = var4 + this.scrollValue - 1;
- var8 = var4 + this.scrollValue + this.knobLength;
- if (this.scrollValue > 0) {
- var1.setColor(Color.gray153);
- var1.drawLine(var4, var5, var11, var5);
- var1.drawLine(var4, var5 + 1, var4, var7 - 2);
- this.trayTopImage.drawTiled(var1, var4 + 1, var5 + 1, var11 - var4, 1);
- this.trayBottomImage.drawTiled(var1, var4 + 1, var7 - 1, var11 - var4, 1);
- this.trayLeftImage.drawTiled(var1, var4 + 1, var5 + 1, 1, var7 - 3);
- var1.setColor(Color.lightGray);
- var1.fillRect(var4 + 2, var5 + 2, var11 - var4 - 1, var7 - var5 - 3);
- }
-
- if (var8 < var6) {
- var1.setColor(Color.gray153);
- var1.drawLine(var8, var5, var6 - 2, var5);
- var1.drawLine(var6 - 1, var5, var6 - 1, var7 - 1);
- this.trayTopImage.drawTiled(var1, var8, var5 + 1, var6 - var8 - 1, 1);
- this.trayBottomImage.drawTiled(var1, var8, var7 - 1, var6 - var8 - 1, 1);
- this.trayLeftImage.drawTiled(var1, var8, var5 + 1, 1, var7 - 3);
- this.trayRightImage.drawTiled(var1, var6 - 2, var5 + 1, 1, var7 - 3);
- var1.setColor(Color.lightGray);
- var1.fillRect(var8 + 1, var5 + 2, var6 - var8 - 3, var7 - var5 - 3);
- }
- } else {
- var10 = var5 + this.scrollValue - 1;
- var9 = var5 + this.scrollValue + this.knobLength;
- if (this.scrollValue > 0) {
- var1.setColor(Color.gray153);
- var1.drawLine(var4, var5 + 1, var4, var10);
- var1.drawLine(var4, var5, var6 - 1, var5);
- this.trayTopImage.drawTiled(var1, var4 + 1, var5 + 1, var6 - 2, 1);
- this.trayLeftImage.drawTiled(var1, var4 + 1, var5 + 1, 1, var10 - var5);
- this.trayRightImage.drawTiled(var1, var6 - 1, var5 + 1, 1, var10 - var5);
- var1.setColor(Color.lightGray);
- var1.fillRect(var4 + 2, var5 + 2, var6 - var4 - 3, var10 - var5 - 1);
- }
-
- if (var9 < var7) {
- var1.setColor(Color.gray153);
- var1.drawLine(var4, var9, var4, var7 - 2);
- var1.drawLine(var4, var7 - 1, var6 - 1, var7 - 1);
- this.trayTopImage.drawTiled(var1, var4 + 1, var9, var6 - var4 - 2, 1);
- this.trayBottomImage.drawTiled(var1, var4 + 1, var7 - 2, var6 - var4 - 1, 1);
- this.trayLeftImage.drawTiled(var1, var4 + 1, var9, 1, var7 - var9 - 2);
- this.trayRightImage.drawTiled(var1, var6 - 1, var9, 1, var7 - var9 - 2);
- var1.setColor(Color.lightGray);
- var1.fillRect(var4 + 2, var9 + 1, var6 - var4 - 3, var7 - var9 - 3);
- }
- }
-
- Rect.returnRect(var2);
- Rect var3 = this.knobRect();
- this.drawViewKnobInRect(var1, var3);
- Rect.returnRect(var3);
- } else if (this.axis == 0) {
- var1.setColor(Color.lightGray);
- var1.fillRect(var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
- var1.setColor(Color.gray102);
- var1.drawLine(var4, var7 - 1, var6 - 1, var7 - 1);
- var1.drawLine(var8 - 1, var5, var8 - 1, var7 - 2);
- var1.setColor(Color.gray231);
- var1.drawLine(var11, var5, var11, var7 - 2);
- var1.drawLine(var11 + 1, var5, var8 - 2, var5);
- } else {
- var1.setColor(Color.lightGray);
- var1.fillRect(var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
- var1.setColor(Color.gray102);
- var1.drawLine(var6 - 1, var5, var6 - 1, var7 - 1);
- var1.drawLine(var4, var9 - 1, var6 - 2, var9 - 1);
- var1.setColor(Color.gray231);
- var1.drawLine(var4, var10, var6 - 2, var10);
- var1.drawLine(var4, var10 + 1, var4, var9 - 2);
- }
- } else {
- if (this.axis == 0) {
- var1.setColor(Color.lightGray);
- var1.fillRect(var4 + 1, var5 + 1, var11 - 3, var7 - 3);
- var1.fillRect(var8 + 1, var5 + 1, var6 - var8 - 2, var7 - 3);
- var1.fillRect(var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
- var1.setColor(Color.gray153);
- var1.drawLine(var4, var7 - 1, var6 - 1, var7 - 1);
- var1.drawLine(var6 - 1, var5, var6 - 1, var7 - 2);
- var1.drawLine(var11 - 1, var5, var11 - 1, var7 - 2);
- var1.drawLine(var8 - 1, var5, var8 - 1, var7 - 2);
- var1.drawLine(var4 + 5, var5 + 7, var4 + 5, var5 + 8);
- var1.drawLine(var4 + 6, var5 + 6, var4 + 6, var5 + 9);
- var1.drawLine(var4 + 7, var5 + 5, var4 + 7, var5 + 10);
- var1.drawLine(var4 + 8, var5 + 4, var4 + 8, var5 + 11);
- var1.drawLine(var4 + 9, var5 + 3, var4 + 9, var5 + 12);
- var1.drawLine(var8 + 6, var5 + 3, var8 + 6, var5 + 12);
- var1.drawLine(var8 + 7, var5 + 4, var8 + 7, var5 + 11);
- var1.drawLine(var8 + 8, var5 + 5, var8 + 8, var5 + 10);
- var1.drawLine(var8 + 9, var5 + 6, var8 + 9, var5 + 9);
- var1.drawLine(var8 + 10, var5 + 7, var8 + 10, var5 + 8);
- var1.setColor(Color.gray231);
- var1.drawLine(var4, var5, var4, var7 - 2);
- var1.drawLine(var4 + 1, var5, var11 - 2, var5);
- var1.drawLine(var11, var5, var11, var7 - 2);
- var1.drawLine(var11 + 1, var5, var8 - 2, var5);
- var1.drawLine(var8, var5, var8, var7 - 2);
- var1.drawLine(var8 + 1, var5, var6 - 2, var5);
- } else {
- var1.setColor(Color.lightGray);
- var1.fillRect(var4 + 1, var5 + 1, var6 - 3, var10 - 3);
- var1.fillRect(var4 + 1, var9 + 1, var6 - 3, var7 - var9 - 2);
- var1.fillRect(var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
- var1.setColor(Color.gray153);
- var1.drawLine(var6 - 1, var5, var6 - 1, var7 - 1);
- var1.drawLine(var4, var7 - 1, var6 - 2, var7 - 1);
- var1.drawLine(var4, var10 - 1, var6 - 2, var10 - 1);
- var1.drawLine(var4, var9 - 1, var6 - 2, var9 - 1);
- var1.drawLine(var4 + 7, var5 + 5, var4 + 8, var5 + 5);
- var1.drawLine(var4 + 6, var5 + 6, var4 + 9, var5 + 6);
- var1.drawLine(var4 + 5, var5 + 7, var4 + 10, var5 + 7);
- var1.drawLine(var4 + 4, var5 + 8, var4 + 11, var5 + 8);
- var1.drawLine(var4 + 3, var5 + 9, var4 + 12, var5 + 9);
- var1.drawLine(var4 + 3, var9 + 6, var4 + 12, var9 + 6);
- var1.drawLine(var4 + 4, var9 + 7, var4 + 11, var9 + 7);
- var1.drawLine(var4 + 5, var9 + 8, var4 + 10, var9 + 8);
- var1.drawLine(var4 + 6, var9 + 9, var4 + 9, var9 + 9);
- var1.drawLine(var4 + 7, var9 + 10, var4 + 8, var9 + 10);
- var1.setColor(Color.gray231);
- var1.drawLine(var4, var5, var6 - 2, var5);
- var1.drawLine(var4, var5 + 1, var4, var10 - 2);
- var1.drawLine(var4, var10, var6 - 2, var10);
- var1.drawLine(var4, var10 + 1, var4, var9 - 2);
- var1.drawLine(var4, var9, var6 - 2, var9);
- var1.drawLine(var4, var9 + 1, var4, var7 - 2);
- }
-
- Rect.returnRect(var2);
- }
- }
-
- public void drawScrollTray() {
- Rect var1 = this.scrollTrayRect();
- ((View)this).addDirtyRect(var1);
- Rect.returnRect(var1);
- }
-
- void _setScrollValue(int var1) {
- if (var1 < 0) {
- this.scrollValue = 0;
- } else if (var1 > this._maxScrollValue()) {
- this.scrollValue = this._maxScrollValue();
- } else {
- this.scrollValue = var1;
- }
- }
-
- void _setScrollPercent(float var1) {
- if (!(var1 < 0.0F) && !(var1 > 1.0F)) {
- int var2 = (int)(var1 * (float)this._maxScrollValue());
- if (var2 == 0 && var1 != 0.0F) {
- this._setScrollValue((int)Math.ceil((double)(var1 * (float)this._maxScrollValue())));
- } else {
- this._setScrollValue(var2);
- }
- }
- }
-
- void _setPercentVisible(float var1) {
- int var2 = this.scrollTrayLength();
- int var3 = (int)(var1 * (float)var2);
- this.setKnobLength(var3);
- if (var2 >= 1 && var2 > var3) {
- this.setActive(true);
- } else {
- this.setActive(false);
- }
- }
-
- void _computeScrollValue() {
- int var6 = this.scrollValue;
- int var7 = this.knobLength;
- boolean var9 = this.active;
- byte var1 = 0;
- int var2;
- int var4;
- int var5;
- if (this.scrollableView != null) {
- int var8 = this.axis();
- var2 = this.scrollableView.lengthOfScrollViewForAxis(var8);
- var5 = this.scrollableView.lengthOfContentViewForAxis(var8);
- var4 = this.scrollableView.positionOfContentViewForAxis(var8);
- } else {
- var2 = 0;
- var5 = 0;
- var4 = 0;
- }
-
- if (var5 == 0) {
- this._setPercentVisible(1.0F);
- } else {
- this._setPercentVisible((float)var2 / (float)var5);
- }
-
- int var3 = var5 - var2;
- if (var3 <= 0) {
- this._setScrollPercent(0.0F);
- } else {
- this._setScrollPercent((float)(var1 - var4) / (float)var3);
- }
-
- if ((this.scrollValue != var6 || this.knobLength != var7 || this.active != var9) && this.isActive() && this.isEnabled()) {
- this.drawScrollTray();
- }
-
- }
-
- public int scrollValue() {
- return this.scrollValue;
- }
-
- int pixelScrollValue() {
- return this.pixelScrollValue;
- }
-
- int _maxScrollValue() {
- return this.scrollTrayLength() - this.knobLength;
- }
-
- public float scrollPercent() {
- int var1 = this._maxScrollValue();
- return var1 == 0 ? 0.0F : (float)this.scrollValue() / (float)var1;
- }
-
- int _mouseValue(MouseEvent var1) {
- Rect var2 = this.scrollTrayRect();
- int var3 = this.axis == 0 ? var1.x - var2.x : var1.y - var2.y;
- Rect.returnRect(var2);
- return var3;
- }
-
- public boolean mouseDown(MouseEvent var1) {
- if (this.isEnabled() && this.isActive()) {
- this.lastMouseValue = this.lastAltMouseValue = this._mouseValue(var1);
- if (var1.isMetaKeyDown() && (this.lastMouseValue >= this.scrollValue + this.knobLength || this.lastMouseValue < this.scrollValue)) {
- int var2 = this.scrollValue;
- this._setScrollValue(this.lastMouseValue - this.knobLength / 2);
- int var3 = this.scrollValue - var2;
- if (var3 != 0) {
- this.scrollToCurrentPosition();
- }
- } else if (this.lastMouseValue < this.scrollValue) {
- this.scrollPageBackward();
- this.timer = new Timer(this, "timerScroll", 75);
- this.timer.setInitialDelay(300);
- if (this.lastMouseValue < this.scrollValue) {
- this.timer.start();
- } else if (this.lastMouseValue < this.scrollValue + this.knobLength) {
- this.timer = null;
- }
- } else if (this.lastMouseValue >= this.scrollValue + this.knobLength) {
- this.scrollPageForward();
- this.timer = new Timer(this, "timerScroll", 75);
- this.timer.setInitialDelay(300);
- if (this.lastMouseValue >= this.scrollValue - this.knobLength) {
- this.timer.start();
- } else if (this.lastMouseValue >= this.scrollValue) {
- this.timer = null;
- }
- }
-
- this.origScrollValue = this.scrollValue;
- return true;
- } else {
- return false;
- }
- }
-
- public void mouseDragged(MouseEvent var1) {
- int var2 = this._mouseValue(var1);
- if (this.isEnabled() && this.isActive() && this.timer == null) {
- if (var1.isControlKeyDown()) {
- this.pixelScrollValue = this.lastAltMouseValue - var2;
- this.scrollByPixel(this.pixelScrollValue);
- this.lastAltMouseValue = var2;
- this.origScrollValue = this.scrollValue;
- } else {
- this.lastAltMouseValue = var2;
- int var4 = this.scrollValue;
- this._setScrollValue(this.origScrollValue + (var2 - this.lastMouseValue));
- int var3 = this.scrollValue - var4;
- if (var3 != 0) {
- this.scrollToCurrentPosition();
- }
-
- }
- } else {
- this.lastMouseValue = var2;
- this.origScrollValue = this.scrollValue;
- }
- }
-
- private void timerScroll() {
- if (this.lastMouseValue < this.scrollValue) {
- this.scrollPageBackward();
- if (this.lastMouseValue >= this.scrollValue) {
- this.timer.stop();
- if (this.lastMouseValue < this.scrollValue + this.knobLength) {
- this.timer = null;
- }
- }
- } else if (this.lastMouseValue >= this.scrollValue + this.knobLength) {
- this.scrollPageForward();
- if (this.lastMouseValue < this.scrollValue - this.knobLength) {
- this.timer.stop();
- if (this.lastMouseValue >= this.scrollValue) {
- this.timer = null;
- }
- }
- }
-
- this.origScrollValue = this.scrollValue;
- }
-
- public void mouseUp(MouseEvent var1) {
- if (this.timer != null) {
- this.timer.stop();
- this.timer = null;
- }
-
- }
-
- public void performCommand(String var1, Object var2) {
- if ("timerScroll".equals(var1)) {
- this.timerScroll();
- } else if ("updateScrollValue".equals(var1)) {
- this.update();
- } else if ("scrollLineForward".equals(var1)) {
- this.scrollLineForward();
- } else if ("scrollLineBackward".equals(var1)) {
- this.scrollLineBackward();
- } else if ("scrollPageForward".equals(var1)) {
- this.scrollPageForward();
- } else if ("scrollPageBackward".equals(var1)) {
- this.scrollPageBackward();
- } else {
- throw new NoSuchMethodError("unknown command: " + var1);
- }
- }
-
- private void update() {
- int var1 = this.scrollValue;
- int var2 = this.knobLength;
- boolean var3 = this.active;
- var3 = this.active;
- this._computeScrollValue();
- if (var3 != this.active) {
- ((View)this).setDirty(true);
- } else {
- if (this.shouldRedraw || (this.scrollValue != var1 || this.knobLength != var2 || this.active != var3) && this.isActive() && this.isEnabled()) {
- this.drawScrollTray();
- }
-
- }
- }
-
- public void describeClassInfo(ClassInfo var1) {
- super.describeClassInfo(var1);
- var1.addClass("netscape.application.ScrollBar", 2);
- var1.addField("scrollView", (byte)18);
- var1.addField("increaseButton", (byte)18);
- var1.addField("decreaseButton", (byte)18);
- var1.addField("image", (byte)18);
- var1.addField("scrollValue", (byte)8);
- var1.addField("axis", (byte)8);
- var1.addField("active", (byte)0);
- var1.addField("enabled", (byte)0);
- var1.addField("lineIncrement", (byte)8);
- var1.addField("owner", (byte)18);
- }
-
- public void encode(Encoder var1) throws CodingException {
- super.encode(var1);
- var1.encodeObject("scrollView", this.scrollableView);
- var1.encodeObject("increaseButton", this.increaseButton);
- var1.encodeObject("decreaseButton", this.decreaseButton);
- var1.encodeObject("image", this.knobImage);
- var1.encodeInt("scrollValue", this.scrollValue);
- var1.encodeInt("axis", this.axis);
- var1.encodeBoolean("active", this.active);
- var1.encodeBoolean("enabled", this.enabled);
- var1.encodeInt("lineIncrement", this.lineIncrement);
- var1.encodeObject("owner", this.scrollBarOwner);
- }
-
- public void decode(Decoder var1) throws CodingException {
- int var2 = var1.versionForClassName("netscape.application.ScrollBar");
- super.decode(var1);
- this.scrollableView = (Scrollable)var1.decodeObject("scrollView");
- this.increaseButton = (Button)var1.decodeObject("increaseButton");
- this.decreaseButton = (Button)var1.decodeObject("decreaseButton");
- this.knobImage = (Image)var1.decodeObject("image");
- this.scrollValue = var1.decodeInt("scrollValue");
- this.axis = var1.decodeInt("axis");
- this.active = var1.decodeBoolean("active");
- this.enabled = var1.decodeBoolean("enabled");
- if (var2 >= 2) {
- this.lineIncrement = var1.decodeInt("lineIncrement");
- this.scrollBarOwner = (ScrollBarOwner)var1.decodeObject("owner");
- } else {
- this.lineIncrement = 12;
- this.scrollBarOwner = null;
- }
-
- this._computeScrollValue();
- }
-
- public int axis() {
- return this.axis;
- }
-
- public float pageSizeAsPercent() {
- return this.pageSizeAsPercent;
- }
-
- public void setPageSizeAsPercent(float var1) {
- if (!(var1 <= 0.0F) && !(var1 > 1.0F)) {
- this.pageSizeAsPercent = var1;
- }
- }
-
- public void setLineIncrement(int var1) {
- if (var1 > 0) {
- this.lineIncrement = var1;
- }
-
- }
-
- public int lineIncrement() {
- return this.lineIncrement;
- }
-
- private void scrollTo(int var1, int var2) {
- this.shouldRedraw = true;
- if (this.scrollableView != null) {
- this.scrollableView.scrollTo(var1, var2);
- }
-
- this.shouldRedraw = false;
- }
-
- private void scrollBy(int var1, int var2) {
- this.shouldRedraw = true;
- if (this.scrollableView != null) {
- this.scrollableView.scrollBy(var1, var2);
- }
-
- this.shouldRedraw = false;
- }
-
- private void scrollByPixel(int var1) {
- if (this.scrollableView != null) {
- if (this.axis == 0) {
- this.scrollBy(var1, 0);
- return;
- }
-
- this.scrollBy(0, var1);
- }
-
- }
-
- private void scrollByLine(int var1) {
- if (this.scrollableView != null) {
- if (this.axis == 0) {
- this.scrollBy(var1 * this.lineIncrement, 0);
- return;
- }
-
- this.scrollBy(0, var1 * this.lineIncrement);
- }
-
- }
-
- private void scrollByPage(float var1) {
- if (this.scrollableView != null) {
- if (this.axis == 0) {
- this.scrollBy((int)(var1 * (float)this.scrollableView.lengthOfScrollViewForAxis(this.axis)), 0);
- return;
- }
-
- this.scrollBy(0, (int)(var1 * (float)this.scrollableView.lengthOfScrollViewForAxis(this.axis)));
- }
-
- }
-
- private void scrollToPercent(float var1) {
- if (this.scrollableView != null) {
- int var2 = this.scrollableView.lengthOfContentViewForAxis(this.axis);
- int var3 = this.scrollableView.lengthOfScrollViewForAxis(this.axis);
- int var4 = -((int)(var1 * (float)(var2 - var3)));
- if (this.axis == 0) {
- this.scrollTo(var4, this.scrollableView.positionOfContentViewForAxis(1));
- return;
- }
-
- this.scrollTo(this.scrollableView.positionOfContentViewForAxis(0), var4);
- }
-
- }
-
- public void scrollLineForward() {
- this.scrollByLine(-1);
- }
-
- public void scrollLineBackward() {
- this.scrollByLine(1);
- }
-
- public void scrollPageForward() {
- this.scrollByPage(-this.pageSizeAsPercent);
- }
-
- public void scrollPageBackward() {
- this.scrollByPage(this.pageSizeAsPercent);
- }
-
- public void scrollToCurrentPosition() {
- this.scrollToPercent(this.scrollPercent());
- }
-
- public void setScrollPercent(float var1) {
- this._setScrollPercent(var1);
- this.scrollToCurrentPosition();
- }
-
- void _setupKeyboard() {
- ((View)this).removeAllCommandsForKeys();
- if (this.axis() == 0) {
- ((View)this).setCommandForKey("scrollLineForward", 1007, 1);
- ((View)this).setCommandForKey("scrollLineBackward", 1006, 1);
- } else {
- ((View)this).setCommandForKey("scrollLineForward", 1005, 1);
- ((View)this).setCommandForKey("scrollLineBackward", 1004, 1);
- }
- }
-
- public boolean hidesSubviewsFromKeyboard() {
- return true;
- }
- }
-