home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / awt / ScrollPane.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  5.9 KB  |  238 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.name = "scrollpane" + nameCounter++;
  23.       super.layoutMgr = null;
  24.       super.width = 100;
  25.       super.height = 100;
  26.       switch (var1) {
  27.          case 0:
  28.          case 1:
  29.          case 2:
  30.             this.scrollbarDisplayPolicy = var1;
  31.             this.vAdjustable = new ScrollPaneAdjustable(this, new PeerFixer(this, this), 1);
  32.             this.hAdjustable = new ScrollPaneAdjustable(this, new PeerFixer(this, this), 0);
  33.             return;
  34.          default:
  35.             throw new IllegalArgumentException("illegal scrollbar display policy");
  36.       }
  37.    }
  38.  
  39.    protected final void addImpl(Component var1, Object var2, int var3) {
  40.       Object var4 = ((Component)this).getTreeLock();
  41.       synchronized(var4){}
  42.  
  43.       try {
  44.          if (((Container)this).getComponentCount() > 0) {
  45.             ((Container)this).remove(0);
  46.          }
  47.  
  48.          if (var3 > 0) {
  49.             throw new IllegalArgumentException("position greater than 0");
  50.          }
  51.  
  52.          super.addImpl(var1, var2, var3);
  53.       } catch (Throwable var6) {
  54.          throw var6;
  55.       }
  56.  
  57.    }
  58.  
  59.    public int getScrollbarDisplayPolicy() {
  60.       return this.scrollbarDisplayPolicy;
  61.    }
  62.  
  63.    public Dimension getViewportSize() {
  64.       Insets var1 = ((Container)this).getInsets();
  65.       return new Dimension(super.width - var1.right - var1.left, super.height - var1.top - var1.bottom);
  66.    }
  67.  
  68.    public int getHScrollbarHeight() {
  69.       int var1 = 0;
  70.       if (this.scrollbarDisplayPolicy != 2) {
  71.          ScrollPanePeer var2 = (ScrollPanePeer)super.peer;
  72.          if (var2 != null) {
  73.             var1 = var2.getHScrollbarHeight();
  74.          }
  75.       }
  76.  
  77.       return var1;
  78.    }
  79.  
  80.    public int getVScrollbarWidth() {
  81.       int var1 = 0;
  82.       if (this.scrollbarDisplayPolicy != 2) {
  83.          ScrollPanePeer var2 = (ScrollPanePeer)super.peer;
  84.          if (var2 != null) {
  85.             var1 = var2.getVScrollbarWidth();
  86.          }
  87.       }
  88.  
  89.       return var1;
  90.    }
  91.  
  92.    public Adjustable getVAdjustable() {
  93.       return this.vAdjustable;
  94.    }
  95.  
  96.    public Adjustable getHAdjustable() {
  97.       return this.hAdjustable;
  98.    }
  99.  
  100.    public void setScrollPosition(int var1, int var2) {
  101.       Object var3 = ((Component)this).getTreeLock();
  102.       synchronized(var3){}
  103.  
  104.       try {
  105.          if (super.ncomponents <= 0) {
  106.             throw new NullPointerException("child is null");
  107.          }
  108.  
  109.          this.hAdjustable.setValue(var1);
  110.          this.vAdjustable.setValue(var2);
  111.       } catch (Throwable var5) {
  112.          throw var5;
  113.       }
  114.  
  115.    }
  116.  
  117.    public void setScrollPosition(Point var1) {
  118.       this.setScrollPosition(var1.x, var1.y);
  119.    }
  120.  
  121.    public Point getScrollPosition() {
  122.       if (super.ncomponents <= 0) {
  123.          throw new NullPointerException("child is null");
  124.       } else {
  125.          return new Point(this.hAdjustable.getValue(), this.vAdjustable.getValue());
  126.       }
  127.    }
  128.  
  129.    public final void setLayout(LayoutManager var1) {
  130.       throw new AWTError("ScrollPane controls layout");
  131.    }
  132.  
  133.    public void doLayout() {
  134.       this.layout();
  135.    }
  136.  
  137.    Dimension calculateChildSize() {
  138.       Component var1 = ((Container)this).getComponent(0);
  139.       Dimension var2 = new Dimension(var1.getPreferredSize());
  140.       Dimension var3 = ((Component)this).getSize();
  141.       int var4 = this.getVScrollbarWidth();
  142.       int var5 = this.getHScrollbarHeight();
  143.       Insets var6 = ((Container)this).getInsets();
  144.       boolean var7 = var6.left + var6.right >= var4;
  145.       boolean var8 = var6.top + var6.bottom >= var5;
  146.       int var9 = var3.width - (var6.left + var6.right) - (var7 ? 0 : var4);
  147.       int var10 = var3.height - (var6.top + var6.bottom) - (var8 ? 0 : var5);
  148.       boolean var11 = var2.width > var9;
  149.       boolean var12 = var2.height > var10;
  150.       if (var2.width < var9) {
  151.          var2.width = var9 + (var12 ? 0 : var4);
  152.       }
  153.  
  154.       if (var2.height < var10) {
  155.          var2.height = var10 + (var11 ? 0 : var5);
  156.       }
  157.  
  158.       return var2;
  159.    }
  160.  
  161.    /** @deprecated */
  162.    public void layout() {
  163.       if (super.ncomponents > 0) {
  164.          Component var1 = ((Container)this).getComponent(0);
  165.          Point var2 = var1.getLocation();
  166.          Dimension var3 = this.calculateChildSize();
  167.          Dimension var4 = this.getViewportSize();
  168.          int var5 = var3.width > var4.width ? Math.min(-var2.x, var3.width - var4.width) : -var2.x;
  169.          int var6 = var3.height > var4.height ? Math.min(-var2.y, var3.height - var4.height) : -var2.y;
  170.          var1.reshape(-var5, -var6, var3.width, var3.height);
  171.          ScrollPanePeer var7 = (ScrollPanePeer)super.peer;
  172.          if (var7 != null) {
  173.             var7.childResized(var3.width, var3.height);
  174.          }
  175.  
  176.          var4 = this.getViewportSize();
  177.          this.hAdjustable.setSpan(0, var3.width, var4.width);
  178.          this.vAdjustable.setSpan(0, var3.height, var4.height);
  179.       }
  180.  
  181.    }
  182.  
  183.    public void printComponents(Graphics var1) {
  184.       if (super.ncomponents > 0) {
  185.          Component var2 = super.component[0];
  186.          Point var3 = var2.getLocation();
  187.          Dimension var4 = this.getViewportSize();
  188.          Graphics var5 = var1.create();
  189.  
  190.          try {
  191.             var5.translate(var3.x, var3.y);
  192.             var5.clipRect(-var3.x, -var3.y, var4.width, var4.height);
  193.             var2.printAll(var5);
  194.          } finally {
  195.             var5.dispose();
  196.          }
  197.  
  198.       }
  199.    }
  200.  
  201.    public void addNotify() {
  202.       super.peer = ((Component)this).getToolkit().createScrollPane(this);
  203.       super.addNotify();
  204.       if (((Container)this).getComponentCount() > 0) {
  205.          Component var1 = ((Container)this).getComponent(0);
  206.          if (var1.peer instanceof LightweightPeer) {
  207.             ((Container)this).remove(0);
  208.             Panel var2 = new Panel();
  209.             ((Container)var2).setLayout(new BorderLayout());
  210.             ((Container)var2).add(var1);
  211.             ((Container)this).add(var2);
  212.          }
  213.       }
  214.  
  215.    }
  216.  
  217.    public String paramString() {
  218.       String var1;
  219.       switch (this.scrollbarDisplayPolicy) {
  220.          case 0:
  221.             var1 = "as-needed";
  222.             break;
  223.          case 1:
  224.             var1 = "always";
  225.             break;
  226.          case 2:
  227.             var1 = "never";
  228.             break;
  229.          default:
  230.             var1 = "invalid display policy";
  231.       }
  232.  
  233.       Point var2 = super.ncomponents > 0 ? this.getScrollPosition() : new Point(0, 0);
  234.       Insets var3 = ((Container)this).getInsets();
  235.       return super.paramString() + ",ScrollPosition=(" + var2.x + "," + var2.y + ")" + ",Insets=(" + var3.top + "," + var3.left + "," + var3.bottom + "," + var3.right + ")" + ",ScrollbarDisplayPolicy=" + var1;
  236.    }
  237. }
  238.