home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / JViewport.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  9.4 KB  |  404 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.awt.Insets;
  9. import java.awt.LayoutManager;
  10. import java.awt.Point;
  11. import java.awt.Rectangle;
  12. import java.awt.event.ComponentListener;
  13. import javax.accessibility.Accessible;
  14. import javax.accessibility.AccessibleContext;
  15. import javax.swing.border.Border;
  16. import javax.swing.event.ChangeEvent;
  17. import javax.swing.event.ChangeListener;
  18.  
  19. public class JViewport extends JComponent implements Accessible {
  20.    protected boolean isViewSizeSet = false;
  21.    protected Point lastPaintPosition = null;
  22.    protected boolean backingStore = false;
  23.    protected transient Image backingStoreImage = null;
  24.    protected boolean scrollUnderway = false;
  25.    private ComponentListener viewListener = null;
  26.    private transient ChangeEvent changeEvent = null;
  27.    // $FF: synthetic field
  28.    static Class class$javax$swing$event$ChangeListener;
  29.  
  30.    public JViewport() {
  31.       ((Container)this).setLayout(this.createLayoutManager());
  32.    }
  33.  
  34.    public void addChangeListener(ChangeListener var1) {
  35.       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);
  36.    }
  37.  
  38.    protected void addImpl(Component var1, Object var2, int var3) {
  39.       this.setView(var1);
  40.    }
  41.  
  42.    // $FF: synthetic method
  43.    static Class class$(String var0) {
  44.       try {
  45.          return Class.forName(var0);
  46.       } catch (ClassNotFoundException var2) {
  47.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  48.       }
  49.    }
  50.  
  51.    protected boolean computeBlit(int var1, int var2, Point var3, Point var4, Dimension var5, Rectangle var6) {
  52.       int var7 = Math.abs(var1);
  53.       int var8 = Math.abs(var2);
  54.       Dimension var9 = this.getExtentSize();
  55.       if (var1 == 0 && var2 != 0 && var8 < var9.height) {
  56.          if (var2 < 0) {
  57.             var3.y = -var2;
  58.             var4.y = 0;
  59.             var6.y = var9.height + var2;
  60.          } else {
  61.             var3.y = 0;
  62.             var4.y = var2;
  63.             var6.y = 0;
  64.          }
  65.  
  66.          var6.x = var3.x = var4.x = 0;
  67.          var5.width = var9.width;
  68.          var5.height = var9.height - var8;
  69.          var6.width = var9.width;
  70.          var6.height = var8;
  71.          return true;
  72.       } else if (var2 == 0 && var1 != 0 && var7 < var9.width) {
  73.          if (var1 < 0) {
  74.             var3.x = -var1;
  75.             var4.x = 0;
  76.             var6.x = var9.width + var1;
  77.          } else {
  78.             var3.x = 0;
  79.             var4.x = var1;
  80.             var6.x = 0;
  81.          }
  82.  
  83.          var6.y = var3.y = var4.y = 0;
  84.          var5.width = var9.width - var7;
  85.          var5.height = var9.height;
  86.          var6.y = 0;
  87.          var6.width = var7;
  88.          var6.height = var9.height;
  89.          return true;
  90.       } else {
  91.          return false;
  92.       }
  93.    }
  94.  
  95.    protected LayoutManager createLayoutManager() {
  96.       return new ViewportLayout();
  97.    }
  98.  
  99.    protected ViewListener createViewListener() {
  100.       return new ViewListener(this);
  101.    }
  102.  
  103.    protected void fireStateChanged() {
  104.       Object[] var1 = super.listenerList.getListenerList();
  105.  
  106.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  107.          if (var1[var2] == (class$javax$swing$event$ChangeListener != null ? class$javax$swing$event$ChangeListener : (class$javax$swing$event$ChangeListener = class$("javax.swing.event.ChangeListener")))) {
  108.             if (this.changeEvent == null) {
  109.                this.changeEvent = new ChangeEvent(this);
  110.             }
  111.  
  112.             ((ChangeListener)var1[var2 + 1]).stateChanged(this.changeEvent);
  113.          }
  114.       }
  115.  
  116.    }
  117.  
  118.    public AccessibleContext getAccessibleContext() {
  119.       if (super.accessibleContext == null) {
  120.          super.accessibleContext = new AccessibleJViewport(this);
  121.       }
  122.  
  123.       return super.accessibleContext;
  124.    }
  125.  
  126.    private Graphics getBackingStoreGraphics(Graphics var1) {
  127.       Graphics var2 = this.backingStoreImage.getGraphics();
  128.       var2.setColor(var1.getColor());
  129.       var2.setFont(var1.getFont());
  130.       var2.setClip(var1.getClipBounds());
  131.       return var2;
  132.    }
  133.  
  134.    public Dimension getExtentSize() {
  135.       return ((Component)this).getSize();
  136.    }
  137.  
  138.    public final Insets getInsets() {
  139.       return new Insets(0, 0, 0, 0);
  140.    }
  141.  
  142.    public final Insets getInsets(Insets var1) {
  143.       var1.left = var1.top = var1.right = var1.bottom = 0;
  144.       return var1;
  145.    }
  146.  
  147.    public Component getView() {
  148.       return ((Container)this).getComponentCount() > 0 ? ((Container)this).getComponent(0) : null;
  149.    }
  150.  
  151.    private Point getViewLocation() {
  152.       Component var1 = this.getView();
  153.       return var1 != null ? var1.getLocation() : new Point(0, 0);
  154.    }
  155.  
  156.    public Point getViewPosition() {
  157.       Component var1 = this.getView();
  158.       if (var1 != null) {
  159.          Point var2 = var1.getLocation();
  160.          var2.x = -var2.x;
  161.          var2.y = -var2.y;
  162.          return var2;
  163.       } else {
  164.          return new Point(0, 0);
  165.       }
  166.    }
  167.  
  168.    public Rectangle getViewRect() {
  169.       return new Rectangle(this.getViewPosition(), this.getExtentSize());
  170.    }
  171.  
  172.    public Dimension getViewSize() {
  173.       Component var1 = this.getView();
  174.       if (var1 == null) {
  175.          return new Dimension(0, 0);
  176.       } else {
  177.          return this.isViewSizeSet ? var1.getSize() : var1.getPreferredSize();
  178.       }
  179.    }
  180.  
  181.    public boolean isBackingStoreEnabled() {
  182.       return this.backingStore;
  183.    }
  184.  
  185.    public boolean isOptimizedDrawingEnabled() {
  186.       return false;
  187.    }
  188.  
  189.    public void paint(Graphics var1) {
  190.       int var2 = ((JComponent)this).getWidth();
  191.       int var3 = ((JComponent)this).getHeight();
  192.       if (var2 > 0 && var3 > 0) {
  193.          if (!this.backingStore) {
  194.             super.paint(var1);
  195.             this.lastPaintPosition = this.getViewLocation();
  196.          } else {
  197.             Rectangle var4 = this.getView().getBounds();
  198.             var1.clipRect(0, 0, var4.width, var4.height);
  199.             if (this.backingStoreImage == null) {
  200.                this.backingStoreImage = ((Component)this).createImage(var2, var3);
  201.                this.paintViaBackingStore(var1);
  202.             } else if (this.scrollUnderway && !this.lastPaintPosition.equals(this.getViewLocation())) {
  203.                Point var5 = new Point();
  204.                Point var6 = new Point();
  205.                Dimension var7 = new Dimension();
  206.                Rectangle var8 = new Rectangle();
  207.                Point var9 = this.getViewLocation();
  208.                int var10 = var9.x - this.lastPaintPosition.x;
  209.                int var11 = var9.y - this.lastPaintPosition.y;
  210.                boolean var12 = this.computeBlit(var10, var11, var5, var6, var7, var8);
  211.                if (!var12) {
  212.                   this.paintViaBackingStore(var1);
  213.                } else {
  214.                   int var13 = var6.x - var5.x;
  215.                   int var14 = var6.y - var5.y;
  216.                   Graphics var15 = this.getBackingStoreGraphics(var1);
  217.                   var15.copyArea(var5.x, var5.y, var7.width, var7.height, var13, var14);
  218.                   Rectangle var16 = var4.intersection(var8);
  219.                   var15.setClip(var16);
  220.                   super.paint(var15);
  221.                   var1.drawImage(this.backingStoreImage, 0, 0, this);
  222.                }
  223.             } else {
  224.                this.paintViaBackingStore(var1);
  225.             }
  226.  
  227.             this.lastPaintPosition = this.getViewLocation();
  228.             this.scrollUnderway = false;
  229.          }
  230.       }
  231.    }
  232.  
  233.    private void paintViaBackingStore(Graphics var1) {
  234.       Graphics var2 = this.getBackingStoreGraphics(var1);
  235.       super.paint(var2);
  236.       var1.drawImage(this.backingStoreImage, 0, 0, this);
  237.    }
  238.  
  239.    protected String paramString() {
  240.       String var1 = this.isViewSizeSet ? "true" : "false";
  241.       String var2 = this.lastPaintPosition != null ? this.lastPaintPosition.toString() : "";
  242.       String var3 = this.backingStore ? "true" : "false";
  243.       String var4 = this.backingStoreImage != null ? this.backingStoreImage.toString() : "";
  244.       String var5 = this.scrollUnderway ? "true" : "false";
  245.       return super.paramString() + ",backingStore=" + var3 + ",backingStoreImage=" + var4 + ",isViewSizeSet=" + var1 + ",lastPaintPosition=" + var2 + ",scrollUnderway=" + var5;
  246.    }
  247.  
  248.    private int positionAdjustment(int var1, int var2, int var3) {
  249.       if (var3 >= 0 && var2 + var3 <= var1) {
  250.          return 0;
  251.       } else if (var3 <= 0 && var2 + var3 >= var1) {
  252.          return 0;
  253.       } else if (var3 > 0 && var2 <= var1) {
  254.          return -var3 + var1 - var2;
  255.       } else if (var3 >= 0 && var2 >= var1) {
  256.          return -var3;
  257.       } else if (var3 <= 0 && var2 <= var1) {
  258.          return -var3;
  259.       } else {
  260.          return var3 < 0 && var2 >= var1 ? -var3 + var1 - var2 : 0;
  261.       }
  262.    }
  263.  
  264.    public void remove(Component var1) {
  265.       var1.removeComponentListener(this.viewListener);
  266.       super.remove(var1);
  267.    }
  268.  
  269.    public void removeChangeListener(ChangeListener var1) {
  270.       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);
  271.    }
  272.  
  273.    public void repaint(long var1, int var3, int var4, int var5, int var6) {
  274.       Container var7 = ((Component)this).getParent();
  275.       if (var7 != null) {
  276.          ((Component)var7).repaint(var1, var3 + ((JComponent)this).getX(), var4 + ((JComponent)this).getY(), var5, var6);
  277.       } else {
  278.          super.repaint(var1, var3, var4, var5, var6);
  279.       }
  280.  
  281.    }
  282.  
  283.    public void reshape(int var1, int var2, int var3, int var4) {
  284.       boolean var5 = ((JComponent)this).getWidth() != var3 || ((JComponent)this).getHeight() != var4;
  285.       if (var5) {
  286.          this.backingStoreImage = null;
  287.       }
  288.  
  289.       super.reshape(var1, var2, var3, var4);
  290.       if (var5) {
  291.          this.fireStateChanged();
  292.       }
  293.  
  294.    }
  295.  
  296.    public void scrollRectToVisible(Rectangle var1) {
  297.       Component var2 = this.getView();
  298.       if (var2 != null) {
  299.          int var3 = 0;
  300.          int var4 = 0;
  301.          Rectangle var5 = ((Component)this).getBounds();
  302.          var3 = this.positionAdjustment(var5.width, var1.width, var1.x);
  303.          var4 = this.positionAdjustment(var5.height, var1.height, var1.y);
  304.          if (var3 != 0 || var4 != 0) {
  305.             Point var6 = this.getViewPosition();
  306.             this.setViewPosition(new Point(var6.x - var3, var6.y - var4));
  307.             this.scrollUnderway = false;
  308.          }
  309.  
  310.       }
  311.    }
  312.  
  313.    public void setBackingStoreEnabled(boolean var1) {
  314.       this.backingStore = var1;
  315.    }
  316.  
  317.    public final void setBorder(Border var1) {
  318.       if (var1 != null) {
  319.          throw new IllegalArgumentException("JViewport.setBorder() not supported");
  320.       }
  321.    }
  322.  
  323.    public void setExtentSize(Dimension var1) {
  324.       Dimension var2 = this.getExtentSize();
  325.       if (!var1.equals(var2)) {
  326.          ((Component)this).setSize(var1);
  327.          this.fireStateChanged();
  328.       }
  329.  
  330.    }
  331.  
  332.    public void setView(Component var1) {
  333.       int var2 = ((Container)this).getComponentCount();
  334.  
  335.       for(int var3 = var2 - 1; var3 >= 0; --var3) {
  336.          ((Container)this).remove(var3);
  337.       }
  338.  
  339.       this.isViewSizeSet = false;
  340.       if (var1 != null) {
  341.          super.addImpl(var1, (Object)null, -1);
  342.          this.viewListener = this.createViewListener();
  343.          var1.addComponentListener(this.viewListener);
  344.       }
  345.  
  346.    }
  347.  
  348.    public void setViewPosition(Point var1) {
  349.       Component var2 = this.getView();
  350.       if (var2 != null) {
  351.          int var5 = var1.x;
  352.          int var6 = var1.y;
  353.          int var3;
  354.          int var4;
  355.          if (var2 instanceof JComponent) {
  356.             JComponent var7 = (JComponent)var2;
  357.             var3 = var7.getX();
  358.             var4 = var7.getY();
  359.             Math.min(var5, var7.getWidth() - 1);
  360.             Math.min(var6, var7.getHeight() - 1);
  361.          } else {
  362.             Rectangle var11 = var2.getBounds();
  363.             var3 = var11.x;
  364.             var4 = var11.y;
  365.             Math.min(var5, var11.width - 1);
  366.             Math.min(var6, var11.height - 1);
  367.          }
  368.  
  369.          var5 = Math.max(0, var1.x);
  370.          var6 = Math.max(0, var1.y);
  371.          int var12 = -var5;
  372.          int var8 = -var6;
  373.          if (var3 != var12 || var4 != var8) {
  374.             this.scrollUnderway = true;
  375.             var2.setLocation(var12, var8);
  376.             this.fireStateChanged();
  377.          }
  378.  
  379.       }
  380.    }
  381.  
  382.    public void setViewSize(Dimension var1) {
  383.       Component var2 = this.getView();
  384.       if (var2 != null) {
  385.          Dimension var3 = var2.getSize();
  386.          if (!var1.equals(var3)) {
  387.             this.scrollUnderway = false;
  388.             var2.setSize(var1);
  389.             this.isViewSizeSet = true;
  390.             this.fireStateChanged();
  391.          }
  392.       }
  393.  
  394.    }
  395.  
  396.    public Dimension toViewCoordinates(Dimension var1) {
  397.       return new Dimension(var1);
  398.    }
  399.  
  400.    public Point toViewCoordinates(Point var1) {
  401.       return new Point(var1);
  402.    }
  403. }
  404.