home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.applet.Applet;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Insets;
- import java.awt.LayoutManager;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.Window;
- import java.awt.event.ComponentListener;
- import java.awt.image.ImageObserver;
- import javax.accessibility.Accessible;
- import javax.accessibility.AccessibleContext;
- import javax.swing.border.Border;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.ChangeListener;
-
- public class JViewport extends JComponent implements Accessible {
- static final Object EnableWindowBlit = "EnableWindowBlit";
- protected boolean isViewSizeSet = false;
- protected Point lastPaintPosition = null;
- protected boolean backingStore = false;
- protected transient Image backingStoreImage = null;
- protected boolean scrollUnderway = false;
- private ComponentListener viewListener = null;
- private transient ChangeEvent changeEvent = null;
- private transient boolean windowBlit;
- private transient boolean repaintAll;
- private transient boolean waitingForRepaint;
- private transient Timer repaintTimer;
- // $FF: synthetic field
- static Class class$javax$swing$event$ChangeListener;
-
- public JViewport() {
- ((Container)this).setLayout(this.createLayoutManager());
- }
-
- // $FF: synthetic method
- static boolean access$0(JViewport var0) {
- return var0.waitingForRepaint;
- }
-
- public void addChangeListener(ChangeListener var1) {
- super.listenerList.add(class$javax$swing$event$ChangeListener != null ? class$javax$swing$event$ChangeListener : (class$javax$swing$event$ChangeListener = class$("javax.swing.event.ChangeListener")), var1);
- }
-
- protected void addImpl(Component var1, Object var2, int var3) {
- this.setView(var1);
- }
-
- private void blitWindowGraphics(int var1, int var2, int var3, int var4, int var5, int var6) {
- Container var7;
- for(var7 = ((Component)this).getParent(); !(var7 instanceof Window); var7 = ((Component)var7).getParent()) {
- }
-
- Graphics var8 = ((Component)var7).getGraphics();
- Rectangle var9 = new Rectangle(var1, var2, var3, var4);
- var9 = SwingUtilities.convertRectangle(this, var9, var7);
- var8.copyArea(var9.x, var9.y, var9.width, var9.height, var5, var6);
- }
-
- private boolean canUseWindowBlitter() {
- if (!(((Component)this).getParent() instanceof JComponent) && !(this.getView() instanceof JComponent)) {
- return false;
- } else {
- Rectangle var1 = new Rectangle(0, 0, ((JComponent)this).getWidth(), ((JComponent)this).getHeight());
- Rectangle var2 = new Rectangle();
- Object var6 = null;
-
- Object var5;
- for(var5 = this; !(var5 instanceof Window) && var5 != null; var5 = ((Component)var5).getParent()) {
- Rectangle var4;
- if (var5 instanceof JComponent) {
- var4 = ((JComponent)var5)._bounds;
- } else {
- var4 = ((Component)var5).getBounds();
- }
-
- var2.setBounds(var1);
- SwingUtilities.computeIntersection(0, 0, var4.width, var4.height, var1);
- if (!var1.equals(var2)) {
- return false;
- }
-
- if (var6 != null && var5 instanceof JComponent && !((JComponent)var5).isOptimizedDrawingEnabled()) {
- Component[] var7 = ((Container)var5).getComponents();
- int var8 = 0;
-
- for(int var9 = var7.length - 1; var9 >= 0; --var9) {
- if (var7[var9] == var6) {
- var8 = var9 - 1;
- break;
- }
- }
-
- while(var8 >= 0) {
- Rectangle var3;
- if (var7[var8] instanceof JComponent) {
- var3 = ((JComponent)var7[var8])._bounds;
- } else {
- var3 = var7[var8].getBounds();
- }
-
- if (var3.intersects(var1)) {
- return false;
- }
-
- --var8;
- }
- }
-
- var1.x += var4.x;
- var1.y += var4.y;
- var6 = var5;
- }
-
- return var5 != null;
- }
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- protected boolean computeBlit(int var1, int var2, Point var3, Point var4, Dimension var5, Rectangle var6) {
- int var7 = Math.abs(var1);
- int var8 = Math.abs(var2);
- Dimension var9 = this.getExtentSize();
- if (var1 == 0 && var2 != 0 && var8 < var9.height) {
- if (var2 < 0) {
- var3.y = -var2;
- var4.y = 0;
- var6.y = var9.height + var2;
- } else {
- var3.y = 0;
- var4.y = var2;
- var6.y = 0;
- }
-
- var6.x = var3.x = var4.x = 0;
- var5.width = var9.width;
- var5.height = var9.height - var8;
- var6.width = var9.width;
- var6.height = var8;
- return true;
- } else if (var2 == 0 && var1 != 0 && var7 < var9.width) {
- if (var1 < 0) {
- var3.x = -var1;
- var4.x = 0;
- var6.x = var9.width + var1;
- } else {
- var3.x = 0;
- var4.x = var1;
- var6.x = 0;
- }
-
- var6.y = var3.y = var4.y = 0;
- var5.width = var9.width - var7;
- var5.height = var9.height;
- var6.y = 0;
- var6.width = var7;
- var6.height = var9.height;
- return true;
- } else {
- return false;
- }
- }
-
- protected LayoutManager createLayoutManager() {
- return new ViewportLayout();
- }
-
- private Timer createRepaintTimer() {
- Timer var1 = new Timer(300, new 1(this));
- var1.setRepeats(false);
- return var1;
- }
-
- protected ViewListener createViewListener() {
- return new ViewListener(this);
- }
-
- protected void firePropertyChange(String var1, Object var2, Object var3) {
- super.firePropertyChange(var1, var2, var3);
- if (var1.equals("EnableWindowBlit")) {
- this.windowBlit = var3 != null;
- }
-
- }
-
- protected void fireStateChanged() {
- Object[] var1 = super.listenerList.getListenerList();
-
- for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
- if (var1[var2] == (class$javax$swing$event$ChangeListener != null ? class$javax$swing$event$ChangeListener : (class$javax$swing$event$ChangeListener = class$("javax.swing.event.ChangeListener")))) {
- if (this.changeEvent == null) {
- this.changeEvent = new ChangeEvent(this);
- }
-
- ((ChangeListener)var1[var2 + 1]).stateChanged(this.changeEvent);
- }
- }
-
- }
-
- private void flushViewDirtyRegion(Graphics var1) {
- RepaintManager var2 = RepaintManager.currentManager(this);
- JComponent var3 = (JComponent)this.getView();
- Rectangle var4 = var2.getDirtyRegion((JComponent)this.getView());
- if (var4 != null && var4.width > 0 && var4.height > 0) {
- var4.x += var3.getX();
- var4.y += var3.getY();
- Rectangle var5 = var1.getClipBounds();
- if (var5 == null) {
- var1.setClip(0, 0, ((JComponent)this).getWidth(), ((JComponent)this).getHeight());
- }
-
- var1.clipRect(var4.x, var4.y, var4.width, var4.height);
- this.paintView(var1);
- }
-
- }
-
- public AccessibleContext getAccessibleContext() {
- if (super.accessibleContext == null) {
- super.accessibleContext = new AccessibleJViewport(this);
- }
-
- return super.accessibleContext;
- }
-
- private Graphics getBackingStoreGraphics(Graphics var1) {
- Graphics var2 = this.backingStoreImage.getGraphics();
- var2.setColor(var1.getColor());
- var2.setFont(var1.getFont());
- var2.setClip(var1.getClipBounds());
- return var2;
- }
-
- public Dimension getExtentSize() {
- return ((Component)this).getSize();
- }
-
- public final Insets getInsets() {
- return new Insets(0, 0, 0, 0);
- }
-
- public final Insets getInsets(Insets var1) {
- var1.left = var1.top = var1.right = var1.bottom = 0;
- return var1;
- }
-
- public Component getView() {
- return ((Container)this).getComponentCount() > 0 ? ((Container)this).getComponent(0) : null;
- }
-
- private Point getViewLocation() {
- Component var1 = this.getView();
- return var1 != null ? var1.getLocation() : new Point(0, 0);
- }
-
- public Point getViewPosition() {
- Component var1 = this.getView();
- if (var1 != null) {
- Point var2 = var1.getLocation();
- var2.x = -var2.x;
- var2.y = -var2.y;
- return var2;
- } else {
- return new Point(0, 0);
- }
- }
-
- public Rectangle getViewRect() {
- return new Rectangle(this.getViewPosition(), this.getExtentSize());
- }
-
- public Dimension getViewSize() {
- Component var1 = this.getView();
- if (var1 == null) {
- return new Dimension(0, 0);
- } else {
- return this.isViewSizeSet ? var1.getSize() : var1.getPreferredSize();
- }
- }
-
- public boolean isBackingStoreEnabled() {
- return this.backingStore;
- }
-
- public boolean isOptimizedDrawingEnabled() {
- return false;
- }
-
- public void paint(Graphics var1) {
- int var2 = ((JComponent)this).getWidth();
- int var3 = ((JComponent)this).getHeight();
- if (var2 > 0 && var3 > 0) {
- if (this.repaintAll) {
- this.repaintAll = false;
- Rectangle var4 = var1.getClipBounds();
- if (var4.width >= ((JComponent)this).getWidth() && var4.height >= ((JComponent)this).getHeight()) {
- if (this.repaintTimer != null) {
- this.repaintTimer.stop();
- }
-
- this.waitingForRepaint = false;
- } else {
- this.waitingForRepaint = true;
- if (this.repaintTimer == null) {
- this.repaintTimer = this.createRepaintTimer();
- }
-
- this.repaintTimer.stop();
- this.repaintTimer.start();
- }
- } else if (this.waitingForRepaint) {
- Rectangle var18 = var1.getClipBounds();
- if (var18.width >= ((JComponent)this).getWidth() && var18.height >= ((JComponent)this).getHeight()) {
- this.waitingForRepaint = false;
- this.repaintTimer.stop();
- }
- }
-
- if (this.backingStore && !this.windowBlit) {
- Rectangle var19 = this.getView().getBounds();
- var1.clipRect(0, 0, var19.width, var19.height);
- if (this.backingStoreImage == null) {
- this.backingStoreImage = ((Component)this).createImage(var2, var3);
- Rectangle var5 = var1.getClipBounds();
- if (var5.width == var2 && var5.height == var3) {
- this.paintViaBackingStore(var1);
- } else {
- var1.setClip(0, 0, Math.min(var19.width, var2), Math.min(var19.height, var3));
- this.paintViaBackingStore(var1, var5);
- }
- } else if (this.scrollUnderway && !this.lastPaintPosition.equals(this.getViewLocation())) {
- Point var20 = new Point();
- Point var6 = new Point();
- Dimension var7 = new Dimension();
- Rectangle var8 = new Rectangle();
- Point var9 = this.getViewLocation();
- int var10 = var9.x - this.lastPaintPosition.x;
- int var11 = var9.y - this.lastPaintPosition.y;
- boolean var12 = this.computeBlit(var10, var11, var20, var6, var7, var8);
- if (!var12) {
- this.paintViaBackingStore(var1);
- } else {
- int var13 = var6.x - var20.x;
- int var14 = var6.y - var20.y;
- Rectangle var15 = var1.getClipBounds();
- var1.setClip(0, 0, var2, var3);
- Graphics var16 = this.getBackingStoreGraphics(var1);
- var16.copyArea(var20.x, var20.y, var7.width, var7.height, var13, var14);
- var1.setClip(var15.x, var15.y, var15.width, var15.height);
- Rectangle var17 = var19.intersection(var8);
- var16.setClip(var17);
- super.paint(var16);
- var1.drawImage(this.backingStoreImage, 0, 0, this);
- }
- } else {
- this.paintViaBackingStore(var1);
- }
-
- this.lastPaintPosition = this.getViewLocation();
- this.scrollUnderway = false;
- } else {
- super.paint(var1);
- this.lastPaintPosition = this.getViewLocation();
- }
- }
- }
-
- private void paintViaBackingStore(Graphics var1) {
- Graphics var2 = this.getBackingStoreGraphics(var1);
- super.paint(var2);
- var1.drawImage(this.backingStoreImage, 0, 0, this);
- }
-
- private void paintViaBackingStore(Graphics var1, Rectangle var2) {
- Graphics var3 = this.getBackingStoreGraphics(var1);
- super.paint(var3);
- var1.setClip(var2);
- var1.drawImage(this.backingStoreImage, 0, 0, this);
- }
-
- private void paintView(Graphics var1) {
- Rectangle var2 = var1.getClipBounds();
- RepaintManager var3 = RepaintManager.currentManager(this);
- boolean var4 = var3.isDoubleBufferingEnabled();
- JComponent var5 = (JComponent)this.getView();
- var2.x -= var5.getX();
- var2.y -= var5.getY();
- Image var6 = var3.getOffscreenBuffer(this, var2.width, var2.height);
- Graphics var7 = var6.getGraphics();
- var7.translate(-var2.x, -var2.y);
- var7.setClip(var2.x, var2.y, var2.width, var2.height);
- var3.setDoubleBufferingEnabled(false);
- var5.paint(var7);
- if (var4) {
- var3.setDoubleBufferingEnabled(true);
- }
-
- var1.drawImage(var6, var2.x + var5.getX(), var2.y + var5.getY(), (ImageObserver)null);
- var7.dispose();
- }
-
- protected String paramString() {
- String var1 = this.isViewSizeSet ? "true" : "false";
- String var2 = this.lastPaintPosition != null ? this.lastPaintPosition.toString() : "";
- String var3 = this.backingStore ? "true" : "false";
- String var4 = this.backingStoreImage != null ? this.backingStoreImage.toString() : "";
- String var5 = this.scrollUnderway ? "true" : "false";
- return super.paramString() + ",backingStore=" + var3 + ",backingStoreImage=" + var4 + ",isViewSizeSet=" + var1 + ",lastPaintPosition=" + var2 + ",scrollUnderway=" + var5;
- }
-
- private int positionAdjustment(int var1, int var2, int var3) {
- if (var3 >= 0 && var2 + var3 <= var1) {
- return 0;
- } else if (var3 <= 0 && var2 + var3 >= var1) {
- return 0;
- } else if (var3 > 0 && var2 <= var1) {
- return -var3 + var1 - var2;
- } else if (var3 >= 0 && var2 >= var1) {
- return -var3;
- } else if (var3 <= 0 && var2 <= var1) {
- return -var3;
- } else {
- return var3 < 0 && var2 >= var1 ? -var3 + var1 - var2 : 0;
- }
- }
-
- public void remove(Component var1) {
- var1.removeComponentListener(this.viewListener);
- super.remove(var1);
- }
-
- public void removeChangeListener(ChangeListener var1) {
- super.listenerList.remove(class$javax$swing$event$ChangeListener != null ? class$javax$swing$event$ChangeListener : (class$javax$swing$event$ChangeListener = class$("javax.swing.event.ChangeListener")), var1);
- }
-
- public void repaint(long var1, int var3, int var4, int var5, int var6) {
- Container var7 = ((Component)this).getParent();
- if (var7 != null) {
- ((Component)var7).repaint(var1, var3 + ((JComponent)this).getX(), var4 + ((JComponent)this).getY(), var5, var6);
- } else {
- super.repaint(var1, var3, var4, var5, var6);
- }
-
- }
-
- public void reshape(int var1, int var2, int var3, int var4) {
- boolean var5 = ((JComponent)this).getWidth() != var3 || ((JComponent)this).getHeight() != var4;
- if (var5) {
- this.backingStoreImage = null;
- }
-
- super.reshape(var1, var2, var3, var4);
- if (var5) {
- this.fireStateChanged();
- }
-
- }
-
- public void scrollRectToVisible(Rectangle var1) {
- Component var2 = this.getView();
- if (var2 != null) {
- if (!var2.isValid()) {
- this.validateView();
- }
-
- int var3 = 0;
- int var4 = 0;
- Rectangle var5 = ((Component)this).getBounds();
- var3 = this.positionAdjustment(var5.width, var1.width, var1.x);
- var4 = this.positionAdjustment(var5.height, var1.height, var1.y);
- if (var3 != 0 || var4 != 0) {
- Point var6 = this.getViewPosition();
- this.setViewPosition(new Point(var6.x - var3, var6.y - var4));
- this.scrollUnderway = false;
- }
-
- }
- }
-
- public void setBackingStoreEnabled(boolean var1) {
- this.backingStore = var1;
- }
-
- public final void setBorder(Border var1) {
- if (var1 != null) {
- throw new IllegalArgumentException("JViewport.setBorder() not supported");
- }
- }
-
- public void setExtentSize(Dimension var1) {
- Dimension var2 = this.getExtentSize();
- if (!var1.equals(var2)) {
- ((Component)this).setSize(var1);
- this.fireStateChanged();
- }
-
- }
-
- public void setView(Component var1) {
- int var2 = ((Container)this).getComponentCount();
-
- for(int var3 = var2 - 1; var3 >= 0; --var3) {
- ((Container)this).remove(var3);
- }
-
- this.isViewSizeSet = false;
- if (var1 != null) {
- super.addImpl(var1, (Object)null, -1);
- this.viewListener = this.createViewListener();
- var1.addComponentListener(this.viewListener);
- }
-
- ((JComponent)this).revalidate();
- ((Component)this).repaint();
- }
-
- public void setViewPosition(Point var1) {
- Component var2 = this.getView();
- if (var2 != null) {
- int var5 = var1.x;
- int var6 = var1.y;
- int var3;
- int var4;
- if (var2 instanceof JComponent) {
- JComponent var7 = (JComponent)var2;
- var3 = var7.getX();
- var4 = var7.getY();
- } else {
- Rectangle var11 = var2.getBounds();
- var3 = var11.x;
- var4 = var11.y;
- }
-
- int var12 = -var5;
- int var8 = -var6;
- if (var3 != var12 || var4 != var8) {
- if (!this.waitingForRepaint && this.windowBlit && this.canUseWindowBlitter()) {
- Graphics var9 = ((JComponent)this).getGraphics();
- this.flushViewDirtyRegion(var9);
- var2.setLocation(var12, var8);
- var9.clipRect(0, 0, ((JComponent)this).getWidth(), ((JComponent)this).getHeight());
- this.repaintAll = this.windowBlitPaint(var9);
- var9.dispose();
- RepaintManager var10 = RepaintManager.currentManager(this);
- var10.markCompletelyClean((JComponent)((Component)this).getParent());
- var10.markCompletelyClean(this);
- var10.markCompletelyClean((JComponent)var2);
- } else {
- this.scrollUnderway = true;
- var2.setLocation(var12, var8);
- }
-
- this.fireStateChanged();
- }
-
- }
- }
-
- public void setViewSize(Dimension var1) {
- Component var2 = this.getView();
- if (var2 != null) {
- Dimension var3 = var2.getSize();
- if (!var1.equals(var3)) {
- this.scrollUnderway = false;
- var2.setSize(var1);
- this.isViewSizeSet = true;
- this.fireStateChanged();
- }
- }
-
- }
-
- public Dimension toViewCoordinates(Dimension var1) {
- return new Dimension(var1);
- }
-
- public Point toViewCoordinates(Point var1) {
- return new Point(var1);
- }
-
- private void validateView() {
- Object var1 = null;
- Object var2 = this;
-
- while(true) {
- if (var2 != null) {
- if (var2 instanceof CellRendererPane || ((Component)var2).getPeer() == null) {
- return;
- }
-
- if (!(var2 instanceof JComponent) || !((JComponent)var2).isValidateRoot()) {
- var2 = ((Component)var2).getParent();
- continue;
- }
-
- var1 = var2;
- }
-
- if (var1 == null) {
- return;
- }
-
- Object var3 = null;
- Object var4 = var1;
-
- while(true) {
- if (var4 != null) {
- if (!((Component)var4).isVisible() || ((Component)var4).getPeer() == null) {
- return;
- }
-
- if (!(var4 instanceof Window) && !(var4 instanceof Applet)) {
- var4 = ((Component)var4).getParent();
- continue;
- }
-
- var3 = var4;
- }
-
- if (var3 == null) {
- return;
- }
-
- ((Component)var1).validate();
- RepaintManager var5 = RepaintManager.currentManager(this);
- if (var5 != null) {
- var5.removeInvalidComponent((JComponent)var1);
- }
-
- return;
- }
- }
- }
-
- private boolean windowBlitPaint(Graphics var1) {
- int var2 = ((JComponent)this).getWidth();
- int var3 = ((JComponent)this).getHeight();
- if (var2 != 0 && var3 != 0) {
- RepaintManager var5 = RepaintManager.currentManager(this);
- JComponent var6 = (JComponent)this.getView();
- boolean var4;
- if (this.lastPaintPosition != null && !this.lastPaintPosition.equals(this.getViewLocation())) {
- Point var7 = new Point();
- Point var8 = new Point();
- Dimension var9 = new Dimension();
- Rectangle var10 = new Rectangle();
- Point var11 = this.getViewLocation();
- int var12 = var11.x - this.lastPaintPosition.x;
- int var13 = var11.y - this.lastPaintPosition.y;
- boolean var14 = this.computeBlit(var12, var13, var7, var8, var9, var10);
- if (!var14) {
- this.paintView(var1);
- var4 = false;
- } else {
- boolean var15 = var5.isDoubleBufferingEnabled();
- int var16 = var8.x - var7.x;
- int var17 = var8.y - var7.y;
- Rectangle var18 = ((Component)var6).getBounds().intersection(var10);
- var18.x -= var6.getX();
- var18.y -= var6.getY();
- Image var19 = var5.getOffscreenBuffer(this, ((JComponent)this).getWidth(), ((JComponent)this).getHeight());
- Graphics var20 = var19.getGraphics();
- var20.translate(-var18.x, -var18.y);
- var20.setClip(var18.x, var18.y, var18.width, var18.height);
- var5.setDoubleBufferingEnabled(false);
- var6.paint(var20);
- var5.setDoubleBufferingEnabled(var15);
- this.blitWindowGraphics(var7.x, var7.y, var9.width, var9.height, var16, var17);
- var18.x += var6.getX();
- var18.y += var6.getY();
- var1.setClip(var18.x, var18.y, var18.width, var18.height);
- var1.drawImage(var19, var18.x, var18.y, (ImageObserver)null);
- var20.dispose();
- var4 = true;
- }
- } else {
- this.paintView(var1);
- var4 = false;
- }
-
- this.lastPaintPosition = this.getViewLocation();
- return var4;
- } else {
- return false;
- }
- }
- }
-