home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD 31 / SUPERCDa.iso / Inet / HotJava / hjava.exe / Windows / resource / jre / lib / rt.jar / java / awt / ScrollPane.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-11  |  5.9 KB  |  282 lines

  1. package java.awt;
  2.  
  3. import java.awt.peer.LightweightPeer;
  4. import java.awt.peer.ScrollPanePeer;
  5.  
  6. public class ScrollPane extends Container {
  7.    public static final int SCROLLBARS_AS_NEEDED = 0;
  8.    public static final int SCROLLBARS_ALWAYS = 1;
  9.    public static final int SCROLLBARS_NEVER = 2;
  10.    private int scrollbarDisplayPolicy;
  11.    private ScrollPaneAdjustable vAdjustable;
  12.    private ScrollPaneAdjustable hAdjustable;
  13.    private static final String base = "scrollpane";
  14.    private static int nameCounter;
  15.    private static final long serialVersionUID = 7956609840827222915L;
  16.  
  17.    public ScrollPane() {
  18.       this(0);
  19.    }
  20.  
  21.    public ScrollPane(int var1) {
  22.       super.layoutMgr = null;
  23.       super.width = 100;
  24.       super.height = 100;
  25.       switch (var1) {
  26.          case 0:
  27.          case 1:
  28.          case 2:
  29.             this.scrollbarDisplayPolicy = var1;
  30.             this.vAdjustable = new ScrollPaneAdjustable(this, new PeerFixer(this, this), 1);
  31.             this.hAdjustable = new ScrollPaneAdjustable(this, new PeerFixer(this, this), 0);
  32.             return;
  33.          default:
  34.             throw new IllegalArgumentException("illegal scrollbar display policy");
  35.       }
  36.    }
  37.  
  38.    String constructComponentName() {
  39.       return "scrollpane" + nameCounter++;
  40.    }
  41.  
  42.    protected final void addImpl(Component var1, Object var2, int var3) {
  43.       Object var4 = ((Component)this).getTreeLock();
  44.       synchronized(var4){}
  45.  
  46.       try {
  47.          if (((Container)this).getComponentCount() > 0) {
  48.             ((Container)this).remove(0);
  49.          }
  50.  
  51.          if (var3 > 0) {
  52.             throw new IllegalArgumentException("position greater than 0");
  53.          }
  54.  
  55.          super.addImpl(var1, var2, var3);
  56.       } catch (Throwable var6) {
  57.          throw var6;
  58.       }
  59.  
  60.    }
  61.  
  62.    public int getScrollbarDisplayPolicy() {
  63.       return this.scrollbarDisplayPolicy;
  64.    }
  65.  
  66.    public Dimension getViewportSize() {
  67.       Insets var1 = ((Container)this).getInsets();
  68.       return new Dimension(super.width - var1.right - var1.left, super.height - var1.top - var1.bottom);
  69.    }
  70.  
  71.    public int getHScrollbarHeight() {
  72.       int var1 = 0;
  73.       if (this.scrollbarDisplayPolicy != 2) {
  74.          ScrollPanePeer var2 = (ScrollPanePeer)super.peer;
  75.          if (var2 != null) {
  76.             var1 = var2.getHScrollbarHeight();
  77.          }
  78.       }
  79.  
  80.       return var1;
  81.    }
  82.  
  83.    public int getVScrollbarWidth() {
  84.       int var1 = 0;
  85.       if (this.scrollbarDisplayPolicy != 2) {
  86.          ScrollPanePeer var2 = (ScrollPanePeer)super.peer;
  87.          if (var2 != null) {
  88.             var1 = var2.getVScrollbarWidth();
  89.          }
  90.       }
  91.  
  92.       return var1;
  93.    }
  94.  
  95.    public Adjustable getVAdjustable() {
  96.       return this.vAdjustable;
  97.    }
  98.  
  99.    public Adjustable getHAdjustable() {
  100.       return this.hAdjustable;
  101.    }
  102.  
  103.    public void setScrollPosition(int var1, int var2) {
  104.       Object var3 = ((Component)this).getTreeLock();
  105.       synchronized(var3){}
  106.  
  107.       try {
  108.          if (super.ncomponents <= 0) {
  109.             throw new NullPointerException("child is null");
  110.          }
  111.  
  112.          this.hAdjustable.setValue(var1);
  113.          this.vAdjustable.setValue(var2);
  114.       } catch (Throwable var5) {
  115.          throw var5;
  116.       }
  117.  
  118.    }
  119.  
  120.    public void setScrollPosition(Point var1) {
  121.       this.setScrollPosition(var1.x, var1.y);
  122.    }
  123.  
  124.    public Point getScrollPosition() {
  125.       if (super.ncomponents <= 0) {
  126.          throw new NullPointerException("child is null");
  127.       } else {
  128.          return new Point(this.hAdjustable.getValue(), this.vAdjustable.getValue());
  129.       }
  130.    }
  131.  
  132.    public final void setLayout(LayoutManager var1) {
  133.       throw new AWTError("ScrollPane controls layout");
  134.    }
  135.  
  136.    public void doLayout() {
  137.       this.layout();
  138.    }
  139.  
  140.    Dimension calculateChildSize() {
  141.       Dimension var1 = ((Component)this).getSize();
  142.       Insets var2 = ((Container)this).getInsets();
  143.       int var3 = var1.width - var2.left * 2;
  144.       int var4 = var1.height - var2.top * 2;
  145.       Component var7 = ((Container)this).getComponent(0);
  146.       Dimension var8 = new Dimension(var7.getPreferredSize());
  147.       boolean var5;
  148.       boolean var6;
  149.       if (this.scrollbarDisplayPolicy == 0) {
  150.          var5 = var8.height > var4;
  151.          var6 = var8.width > var3;
  152.       } else if (this.scrollbarDisplayPolicy == 1) {
  153.          var6 = true;
  154.          var5 = true;
  155.       } else {
  156.          var6 = false;
  157.          var5 = false;
  158.       }
  159.  
  160.       int var9 = this.getVScrollbarWidth();
  161.       int var10 = this.getHScrollbarHeight();
  162.       if (var5) {
  163.          var3 -= var9;
  164.       }
  165.  
  166.       if (var6) {
  167.          var4 -= var10;
  168.       }
  169.  
  170.       if (var8.width < var3) {
  171.          var8.width = var3;
  172.       }
  173.  
  174.       if (var8.height < var4) {
  175.          var8.height = var4;
  176.       }
  177.  
  178.       return var8;
  179.    }
  180.  
  181.    /** @deprecated */
  182.    public void layout() {
  183.       if (super.ncomponents > 0) {
  184.          Component var1 = ((Container)this).getComponent(0);
  185.          Point var2 = this.getScrollPosition();
  186.          Dimension var3 = this.calculateChildSize();
  187.          Dimension var4 = this.getViewportSize();
  188.          Insets var5 = ((Container)this).getInsets();
  189.          var1.reshape(var5.left - var2.x, var5.top - var2.y, var3.width, var3.height);
  190.          ScrollPanePeer var6 = (ScrollPanePeer)super.peer;
  191.          if (var6 != null) {
  192.             var6.childResized(var3.width, var3.height);
  193.          }
  194.  
  195.          var4 = this.getViewportSize();
  196.          this.hAdjustable.setSpan(0, var3.width, var4.width);
  197.          this.vAdjustable.setSpan(0, var3.height, var4.height);
  198.       }
  199.  
  200.    }
  201.  
  202.    public void printComponents(Graphics var1) {
  203.       if (super.ncomponents > 0) {
  204.          Component var2 = super.component[0];
  205.          Point var3 = var2.getLocation();
  206.          Dimension var4 = this.getViewportSize();
  207.          Insets var5 = ((Container)this).getInsets();
  208.          Graphics var6 = var1.create();
  209.  
  210.          try {
  211.             var6.clipRect(var5.left, var5.top, var4.width, var4.height);
  212.             var6.translate(var3.x, var3.y);
  213.             var2.printAll(var6);
  214.          } finally {
  215.             var6.dispose();
  216.          }
  217.  
  218.       }
  219.    }
  220.  
  221.    public void addNotify() {
  222.       Object var1 = ((Component)this).getTreeLock();
  223.       synchronized(var1){}
  224.  
  225.       try {
  226.          int var3 = 0;
  227.          int var4 = 0;
  228.          if (((Container)this).getComponentCount() > 0) {
  229.             var3 = this.vAdjustable.getValue();
  230.             var4 = this.hAdjustable.getValue();
  231.             this.vAdjustable.setValue(0);
  232.             this.hAdjustable.setValue(0);
  233.          }
  234.  
  235.          if (super.peer == null) {
  236.             super.peer = ((Component)this).getToolkit().createScrollPane(this);
  237.          }
  238.  
  239.          super.addNotify();
  240.          if (((Container)this).getComponentCount() > 0) {
  241.             this.vAdjustable.setValue(var3);
  242.             this.hAdjustable.setValue(var4);
  243.          }
  244.  
  245.          if (((Container)this).getComponentCount() > 0) {
  246.             Component var5 = ((Container)this).getComponent(0);
  247.             if (var5.peer instanceof LightweightPeer) {
  248.                ((Container)this).remove(0);
  249.                Panel var6 = new Panel();
  250.                ((Container)var6).setLayout(new BorderLayout());
  251.                ((Container)var6).add(var5);
  252.                ((Container)this).add(var6);
  253.             }
  254.          }
  255.       } catch (Throwable var8) {
  256.          throw var8;
  257.       }
  258.  
  259.    }
  260.  
  261.    public String paramString() {
  262.       String var1;
  263.       switch (this.scrollbarDisplayPolicy) {
  264.          case 0:
  265.             var1 = "as-needed";
  266.             break;
  267.          case 1:
  268.             var1 = "always";
  269.             break;
  270.          case 2:
  271.             var1 = "never";
  272.             break;
  273.          default:
  274.             var1 = "invalid display policy";
  275.       }
  276.  
  277.       Point var2 = super.ncomponents > 0 ? this.getScrollPosition() : new Point(0, 0);
  278.       Insets var3 = ((Container)this).getInsets();
  279.       return super.paramString() + ",ScrollPosition=(" + var2.x + "," + var2.y + ")" + ",Insets=(" + var3.top + "," + var3.left + "," + var3.bottom + "," + var3.right + ")" + ",ScrollbarDisplayPolicy=" + var1;
  280.    }
  281. }
  282.