home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / plaf / basic / BasicScrollPaneUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  6.9 KB  |  273 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.JComponent;
  4. import com.sun.java.swing.JScrollBar;
  5. import com.sun.java.swing.JScrollPane;
  6. import com.sun.java.swing.JViewport;
  7. import com.sun.java.swing.LookAndFeel;
  8. import com.sun.java.swing.ScrollPaneConstants;
  9. import com.sun.java.swing.ScrollPaneLayout;
  10. import com.sun.java.swing.UIManager;
  11. import com.sun.java.swing.border.Border;
  12. import com.sun.java.swing.event.ChangeListener;
  13. import com.sun.java.swing.plaf.ComponentUI;
  14. import com.sun.java.swing.plaf.ScrollPaneUI;
  15. import com.sun.java.swing.plaf.UIResource;
  16. import java.awt.Component;
  17. import java.awt.Dimension;
  18. import java.awt.Graphics;
  19. import java.awt.LayoutManager;
  20. import java.awt.Point;
  21. import java.awt.Rectangle;
  22. import java.io.Serializable;
  23.  
  24. public class BasicScrollPaneUI extends ScrollPaneUI implements ScrollPaneConstants, Serializable {
  25.    protected JScrollPane scrollpane;
  26.    protected ChangeListener vsbListener = this.createVSBListener();
  27.    protected ChangeListener hsbListener = this.createHSBListener();
  28.    protected ChangeListener viewportListener = this.createViewportListener();
  29.  
  30.    public void paint(Graphics var1, JComponent var2) {
  31.       Border var3 = this.scrollpane.getViewportBorder();
  32.       if (var3 != null) {
  33.          Rectangle var4 = this.getSPLayout().getViewportBorderBounds(this.scrollpane);
  34.          var3.paintBorder(this.scrollpane, var1, var4.x, var4.y, var4.width, var4.height);
  35.       }
  36.  
  37.    }
  38.  
  39.    public Dimension getPreferredSize(JComponent var1) {
  40.       return this.getSPLayout().preferredLayoutSize(var1);
  41.    }
  42.  
  43.    public Dimension getMinimumSize(JComponent var1) {
  44.       return this.getPreferredSize(var1);
  45.    }
  46.  
  47.    public Dimension getMaximumSize(JComponent var1) {
  48.       return new Dimension(32767, 32767);
  49.    }
  50.  
  51.    public void installUI(JComponent var1) {
  52.       this.scrollpane = (JScrollPane)var1;
  53.       this.scrollpane.setLayout(this.createLayoutManager());
  54.       JViewport var2 = this.getViewport();
  55.       JScrollBar var3 = this.createVerticalScrollBar();
  56.       JScrollBar var4 = this.createHorizontalScrollBar();
  57.       if (var2 != null) {
  58.          var2.addChangeListener(this.viewportListener);
  59.       }
  60.  
  61.       var3.getModel().addChangeListener(this.vsbListener);
  62.       var4.getModel().addChangeListener(this.hsbListener);
  63.       this.scrollpane.add(var3, "VERTICAL_SCROLLBAR");
  64.       this.scrollpane.add(var4, "HORIZONTAL_SCROLLBAR");
  65.       LookAndFeel.installBorder(this.scrollpane, "ScrollPane.border");
  66.       LookAndFeel.installColorsAndFont(var1, "ScrollPane.background", "ScrollPane.foreground", "ScrollPane.font");
  67.       Border var5 = this.scrollpane.getViewportBorder();
  68.       if (var5 == null || var5 instanceof UIResource) {
  69.          var5 = UIManager.getBorder("ScrollPane.viewportBorder");
  70.          this.scrollpane.setViewportBorder(var5);
  71.       }
  72.  
  73.    }
  74.  
  75.    public void uninstallUI(JComponent var1) {
  76.       JViewport var2 = this.getViewport();
  77.       JScrollBar var3 = this.getVerticalScrollBar();
  78.       JScrollBar var4 = this.getHorizontalScrollBar();
  79.       this.scrollpane.removeAll();
  80.       this.scrollpane.setLayout((LayoutManager)null);
  81.       if (var2 != null) {
  82.          var2.removeChangeListener(this.viewportListener);
  83.       }
  84.  
  85.       if (var3 != null) {
  86.          var3.getModel().removeChangeListener(this.vsbListener);
  87.       }
  88.  
  89.       if (var4 != null) {
  90.          var4.getModel().removeChangeListener(this.hsbListener);
  91.       }
  92.  
  93.       LookAndFeel.uninstallBorder(this.scrollpane);
  94.       if (this.scrollpane.getViewportBorder() instanceof UIResource) {
  95.          this.scrollpane.setViewportBorder((Border)null);
  96.       }
  97.  
  98.       this.scrollpane = null;
  99.    }
  100.  
  101.    public static ComponentUI createUI(JComponent var0) {
  102.       return new BasicScrollPaneUI();
  103.    }
  104.  
  105.    protected ScrollPaneLayout getSPLayout() {
  106.       return (ScrollPaneLayout)this.scrollpane.getLayout();
  107.    }
  108.  
  109.    public int getVerticalScrollBarPolicy() {
  110.       return this.getSPLayout().getVerticalScrollBarPolicy();
  111.    }
  112.  
  113.    public void setVerticalScrollBarPolicy(int var1) {
  114.       this.getSPLayout().setVerticalScrollBarPolicy(var1);
  115.    }
  116.  
  117.    public int getHorizontalScrollBarPolicy() {
  118.       return this.getSPLayout().getHorizontalScrollBarPolicy();
  119.    }
  120.  
  121.    public void setHorizontalScrollBarPolicy(int var1) {
  122.       this.getSPLayout().setHorizontalScrollBarPolicy(var1);
  123.    }
  124.  
  125.    public JScrollBar getHorizontalScrollBar() {
  126.       return this.getSPLayout().getHorizontalScrollBar();
  127.    }
  128.  
  129.    public JScrollBar getVerticalScrollBar() {
  130.       return this.getSPLayout().getVerticalScrollBar();
  131.    }
  132.  
  133.    public void setViewport(JViewport var1) {
  134.       JViewport var2 = this.getViewport();
  135.       if (var1 != var2) {
  136.          if (var2 != null) {
  137.             var2.removeChangeListener(this.viewportListener);
  138.             this.scrollpane.remove(var2);
  139.          }
  140.  
  141.          if (var1 != null) {
  142.             Point var3 = var1.getViewPosition();
  143.             var3.x = Math.max(var3.x, 0);
  144.             var3.y = Math.max(var3.y, 0);
  145.             var1.setViewPosition(var3);
  146.             this.scrollpane.add(var1, "VIEWPORT");
  147.             this.syncScrollPaneWithViewport();
  148.             var1.addChangeListener(this.viewportListener);
  149.          }
  150.  
  151.       }
  152.    }
  153.  
  154.    public JViewport getViewport() {
  155.       return this.getSPLayout().getViewport();
  156.    }
  157.  
  158.    public void setRowHeader(JViewport var1) {
  159.       JViewport var2 = this.getRowHeader();
  160.       if (var2 != var1) {
  161.          if (var2 != null) {
  162.             this.scrollpane.remove(var2);
  163.          }
  164.  
  165.          if (var1 != null) {
  166.             JViewport var3 = this.getViewport();
  167.             Point var4 = var1.getViewPosition();
  168.             var4.y = var3 != null ? var3.getViewPosition().y : 0;
  169.             var1.setViewPosition(var4);
  170.             this.scrollpane.add(var1, "ROW_HEADER");
  171.          }
  172.  
  173.       }
  174.    }
  175.  
  176.    public JViewport getRowHeader() {
  177.       return this.getSPLayout().getRowHeader();
  178.    }
  179.  
  180.    public void setColumnHeader(JViewport var1) {
  181.       JViewport var2 = this.getColumnHeader();
  182.       if (var2 != var1) {
  183.          if (var2 != null) {
  184.             this.scrollpane.remove(var2);
  185.          }
  186.  
  187.          if (var1 != null) {
  188.             JViewport var3 = this.getViewport();
  189.             Point var4 = var1.getViewPosition();
  190.             var4.x = var3 != null ? var3.getViewPosition().x : 0;
  191.             var1.setViewPosition(var4);
  192.             this.scrollpane.add(var1, "COLUMN_HEADER");
  193.          }
  194.  
  195.       }
  196.    }
  197.  
  198.    public JViewport getColumnHeader() {
  199.       return this.getSPLayout().getColumnHeader();
  200.    }
  201.  
  202.    public Component getCorner(String var1) {
  203.       return this.getSPLayout().getCorner(var1);
  204.    }
  205.  
  206.    public void setCorner(String var1, Component var2) {
  207.       this.scrollpane.add(var2, var1);
  208.    }
  209.  
  210.    protected void syncScrollPaneWithViewport() {
  211.       JViewport var1 = this.getViewport();
  212.       JScrollBar var2 = this.getVerticalScrollBar();
  213.       JScrollBar var3 = this.getHorizontalScrollBar();
  214.       JViewport var4 = this.getRowHeader();
  215.       JViewport var5 = this.getColumnHeader();
  216.       if (var1 != null) {
  217.          Dimension var6 = var1.getExtentSize();
  218.          Dimension var7 = var1.getViewSize();
  219.          Point var8 = var1.getViewPosition();
  220.          if (var2 != null) {
  221.             int var9 = var6.height;
  222.             int var10 = var7.height;
  223.             int var11 = Math.max(0, Math.min(var8.y, var10 - var9));
  224.             var2.setValues(var11, var9, 0, var10);
  225.          }
  226.  
  227.          if (var3 != null) {
  228.             int var12 = var6.width;
  229.             int var15 = var7.width;
  230.             int var16 = Math.max(0, Math.min(var8.x, var15 - var12));
  231.             var3.setValues(var16, var12, 0, var15);
  232.          }
  233.  
  234.          if (var4 != null) {
  235.             Point var13 = var4.getViewPosition();
  236.             var13.y = var1.getViewPosition().y;
  237.             var4.setViewPosition(var13);
  238.          }
  239.  
  240.          if (var5 != null) {
  241.             Point var14 = var5.getViewPosition();
  242.             var14.x = var1.getViewPosition().x;
  243.             var5.setViewPosition(var14);
  244.          }
  245.       }
  246.  
  247.    }
  248.  
  249.    protected ChangeListener createViewportListener() {
  250.       return new ViewportListener(this);
  251.    }
  252.  
  253.    protected ChangeListener createHSBListener() {
  254.       return new HSBListener(this);
  255.    }
  256.  
  257.    protected ChangeListener createVSBListener() {
  258.       return new VSBListener(this);
  259.    }
  260.  
  261.    protected LayoutManager createLayoutManager() {
  262.       return new BasicScrollPaneLayout(this);
  263.    }
  264.  
  265.    protected JScrollBar createVerticalScrollBar() {
  266.       return this.scrollpane.createVerticalScrollBar();
  267.    }
  268.  
  269.    protected JScrollBar createHorizontalScrollBar() {
  270.       return this.scrollpane.createHorizontalScrollBar();
  271.    }
  272. }
  273.