home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicScrollPaneUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  7.6 KB  |  313 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.Graphics;
  5. import java.awt.Point;
  6. import java.awt.Rectangle;
  7. import java.beans.PropertyChangeEvent;
  8. import java.beans.PropertyChangeListener;
  9. import javax.swing.ActionMap;
  10. import javax.swing.InputMap;
  11. import javax.swing.JComponent;
  12. import javax.swing.JScrollBar;
  13. import javax.swing.JScrollPane;
  14. import javax.swing.JViewport;
  15. import javax.swing.LookAndFeel;
  16. import javax.swing.ScrollPaneConstants;
  17. import javax.swing.SwingUtilities;
  18. import javax.swing.UIManager;
  19. import javax.swing.border.Border;
  20. import javax.swing.event.ChangeListener;
  21. import javax.swing.plaf.ActionMapUIResource;
  22. import javax.swing.plaf.ComponentUI;
  23. import javax.swing.plaf.ScrollPaneUI;
  24. import javax.swing.plaf.UIResource;
  25.  
  26. public class BasicScrollPaneUI extends ScrollPaneUI implements ScrollPaneConstants {
  27.    protected JScrollPane scrollpane;
  28.    protected ChangeListener vsbChangeListener;
  29.    protected ChangeListener hsbChangeListener;
  30.    protected ChangeListener viewportChangeListener;
  31.    protected PropertyChangeListener spPropertyChangeListener;
  32.  
  33.    public static ComponentUI createUI(JComponent var0) {
  34.       return new BasicScrollPaneUI();
  35.    }
  36.  
  37.    public void paint(Graphics var1, JComponent var2) {
  38.       Border var3 = this.scrollpane.getViewportBorder();
  39.       if (var3 != null) {
  40.          Rectangle var4 = this.scrollpane.getViewportBorderBounds();
  41.          var3.paintBorder(this.scrollpane, var1, var4.x, var4.y, var4.width, var4.height);
  42.       }
  43.  
  44.    }
  45.  
  46.    public Dimension getPreferredSize(JComponent var1) {
  47.       return null;
  48.    }
  49.  
  50.    public Dimension getMinimumSize(JComponent var1) {
  51.       return this.getPreferredSize(var1);
  52.    }
  53.  
  54.    public Dimension getMaximumSize(JComponent var1) {
  55.       return new Dimension(32767, 32767);
  56.    }
  57.  
  58.    protected void installDefaults(JScrollPane var1) {
  59.       LookAndFeel.installBorder(var1, "ScrollPane.border");
  60.       LookAndFeel.installColorsAndFont(var1, "ScrollPane.background", "ScrollPane.foreground", "ScrollPane.font");
  61.       Border var2 = var1.getViewportBorder();
  62.       if (var2 == null || var2 instanceof UIResource) {
  63.          var2 = UIManager.getBorder("ScrollPane.viewportBorder");
  64.          var1.setViewportBorder(var2);
  65.       }
  66.  
  67.    }
  68.  
  69.    protected void installListeners(JScrollPane var1) {
  70.       this.vsbChangeListener = this.createVSBChangeListener();
  71.       this.hsbChangeListener = this.createHSBChangeListener();
  72.       this.viewportChangeListener = this.createViewportChangeListener();
  73.       this.spPropertyChangeListener = this.createPropertyChangeListener();
  74.       JViewport var2 = this.scrollpane.getViewport();
  75.       JScrollBar var3 = this.scrollpane.getVerticalScrollBar();
  76.       JScrollBar var4 = this.scrollpane.getHorizontalScrollBar();
  77.       if (var2 != null) {
  78.          var2.addChangeListener(this.viewportChangeListener);
  79.       }
  80.  
  81.       if (var3 != null) {
  82.          var3.getModel().addChangeListener(this.vsbChangeListener);
  83.       }
  84.  
  85.       if (var4 != null) {
  86.          var4.getModel().addChangeListener(this.hsbChangeListener);
  87.       }
  88.  
  89.       this.scrollpane.addPropertyChangeListener(this.spPropertyChangeListener);
  90.    }
  91.  
  92.    protected void installKeyboardActions(JScrollPane var1) {
  93.       InputMap var2 = this.getInputMap(1);
  94.       SwingUtilities.replaceUIInputMap(var1, 1, var2);
  95.       ActionMap var3 = this.getActionMap();
  96.       SwingUtilities.replaceUIActionMap(var1, var3);
  97.    }
  98.  
  99.    InputMap getInputMap(int var1) {
  100.       return var1 == 1 ? (InputMap)UIManager.get("ScrollPane.ancestorInputMap") : null;
  101.    }
  102.  
  103.    ActionMap getActionMap() {
  104.       ActionMap var1 = (ActionMap)UIManager.get("ScrollPane.actionMap");
  105.       if (var1 == null) {
  106.          var1 = this.createActionMap();
  107.          if (var1 != null) {
  108.             UIManager.put("ScrollPane.actionMap", var1);
  109.          }
  110.       }
  111.  
  112.       return var1;
  113.    }
  114.  
  115.    ActionMap createActionMap() {
  116.       ActionMapUIResource var1 = new ActionMapUIResource();
  117.       ((ActionMap)var1).put("scrollUp", new ScrollAction("scrollUp", 1, -1, true));
  118.       ((ActionMap)var1).put("scrollDown", new ScrollAction("scrollDown", 1, 1, true));
  119.       ((ActionMap)var1).put("scrollLeft", new ScrollAction("scrollLeft", 0, -1, true));
  120.       ((ActionMap)var1).put("scrollRight", new ScrollAction("ScrollRight", 0, 1, true));
  121.       ((ActionMap)var1).put("scrollHome", new ScrollHomeAction("ScrollHome"));
  122.       ((ActionMap)var1).put("scrollEnd", new ScrollEndAction("ScrollEnd"));
  123.       ((ActionMap)var1).put("unitScrollRight", new ScrollAction("UnitScrollRight", 0, 1, false));
  124.       ((ActionMap)var1).put("unitScrollLeft", new ScrollAction("UnitScrollLeft", 0, -1, false));
  125.       ((ActionMap)var1).put("unitScrollUp", new ScrollAction("UnitScrollUp", 1, -1, false));
  126.       ((ActionMap)var1).put("unitScrollDown", new ScrollAction("UnitScrollDown", 1, 1, false));
  127.       return var1;
  128.    }
  129.  
  130.    public void installUI(JComponent var1) {
  131.       this.scrollpane = (JScrollPane)var1;
  132.       this.installDefaults(this.scrollpane);
  133.       this.installListeners(this.scrollpane);
  134.       this.installKeyboardActions(this.scrollpane);
  135.    }
  136.  
  137.    protected void uninstallDefaults(JScrollPane var1) {
  138.       LookAndFeel.uninstallBorder(this.scrollpane);
  139.       if (this.scrollpane.getViewportBorder() instanceof UIResource) {
  140.          this.scrollpane.setViewportBorder((Border)null);
  141.       }
  142.  
  143.    }
  144.  
  145.    protected void uninstallListeners(JComponent var1) {
  146.       JViewport var2 = this.scrollpane.getViewport();
  147.       JScrollBar var3 = this.scrollpane.getVerticalScrollBar();
  148.       JScrollBar var4 = this.scrollpane.getHorizontalScrollBar();
  149.       if (var2 != null) {
  150.          var2.removeChangeListener(this.viewportChangeListener);
  151.       }
  152.  
  153.       if (var3 != null) {
  154.          var3.getModel().removeChangeListener(this.vsbChangeListener);
  155.       }
  156.  
  157.       if (var4 != null) {
  158.          var4.getModel().removeChangeListener(this.hsbChangeListener);
  159.       }
  160.  
  161.       this.scrollpane.removePropertyChangeListener(this.spPropertyChangeListener);
  162.       this.vsbChangeListener = null;
  163.       this.hsbChangeListener = null;
  164.       this.viewportChangeListener = null;
  165.       this.spPropertyChangeListener = null;
  166.    }
  167.  
  168.    protected void uninstallKeyboardActions(JScrollPane var1) {
  169.       SwingUtilities.replaceUIActionMap(var1, (ActionMap)null);
  170.       SwingUtilities.replaceUIInputMap(var1, 1, (InputMap)null);
  171.    }
  172.  
  173.    public void uninstallUI(JComponent var1) {
  174.       this.uninstallDefaults(this.scrollpane);
  175.       this.uninstallListeners(this.scrollpane);
  176.       this.uninstallKeyboardActions(this.scrollpane);
  177.       this.scrollpane = null;
  178.    }
  179.  
  180.    protected void syncScrollPaneWithViewport() {
  181.       JViewport var1 = this.scrollpane.getViewport();
  182.       JScrollBar var2 = this.scrollpane.getVerticalScrollBar();
  183.       JScrollBar var3 = this.scrollpane.getHorizontalScrollBar();
  184.       JViewport var4 = this.scrollpane.getRowHeader();
  185.       JViewport var5 = this.scrollpane.getColumnHeader();
  186.       if (var1 != null) {
  187.          Dimension var6 = var1.getExtentSize();
  188.          Dimension var7 = var1.getViewSize();
  189.          Point var8 = var1.getViewPosition();
  190.          if (var2 != null) {
  191.             int var9 = var6.height;
  192.             int var10 = var7.height;
  193.             int var11 = Math.max(0, Math.min(var8.y, var10 - var9));
  194.             var2.setValues(var11, var9, 0, var10);
  195.          }
  196.  
  197.          if (var3 != null) {
  198.             int var12 = var6.width;
  199.             int var15 = var7.width;
  200.             int var16 = Math.max(0, Math.min(var8.x, var15 - var12));
  201.             var3.setValues(var16, var12, 0, var15);
  202.          }
  203.  
  204.          if (var4 != null) {
  205.             Point var13 = var4.getViewPosition();
  206.             var13.y = var1.getViewPosition().y;
  207.             var4.setViewPosition(var13);
  208.          }
  209.  
  210.          if (var5 != null) {
  211.             Point var14 = var5.getViewPosition();
  212.             var14.x = var1.getViewPosition().x;
  213.             var5.setViewPosition(var14);
  214.          }
  215.       }
  216.  
  217.    }
  218.  
  219.    protected ChangeListener createViewportChangeListener() {
  220.       return new ViewportChangeHandler(this);
  221.    }
  222.  
  223.    protected ChangeListener createHSBChangeListener() {
  224.       return new HSBChangeListener(this);
  225.    }
  226.  
  227.    protected ChangeListener createVSBChangeListener() {
  228.       return new VSBChangeListener(this);
  229.    }
  230.  
  231.    protected void updateScrollBarDisplayPolicy(PropertyChangeEvent var1) {
  232.       this.scrollpane.revalidate();
  233.       this.scrollpane.repaint();
  234.    }
  235.  
  236.    protected void updateViewport(PropertyChangeEvent var1) {
  237.       JViewport var2 = (JViewport)var1.getOldValue();
  238.       JViewport var3 = (JViewport)var1.getNewValue();
  239.       if (var2 != null) {
  240.          var2.removeChangeListener(this.viewportChangeListener);
  241.       }
  242.  
  243.       if (var3 != null) {
  244.          Point var4 = var3.getViewPosition();
  245.          var4.x = Math.max(var4.x, 0);
  246.          var4.y = Math.max(var4.y, 0);
  247.          var3.setViewPosition(var4);
  248.          var3.addChangeListener(this.viewportChangeListener);
  249.       }
  250.  
  251.    }
  252.  
  253.    protected void updateRowHeader(PropertyChangeEvent var1) {
  254.       JViewport var2 = (JViewport)var1.getNewValue();
  255.       if (var2 != null) {
  256.          JViewport var3 = this.scrollpane.getViewport();
  257.          Point var4 = var2.getViewPosition();
  258.          var4.y = var3 != null ? var3.getViewPosition().y : 0;
  259.          var2.setViewPosition(var4);
  260.       }
  261.  
  262.    }
  263.  
  264.    protected void updateColumnHeader(PropertyChangeEvent var1) {
  265.       JViewport var2 = (JViewport)var1.getNewValue();
  266.       if (var2 != null) {
  267.          JViewport var3 = this.scrollpane.getViewport();
  268.          Point var4 = var2.getViewPosition();
  269.          var4.x = var3 != null ? var3.getViewPosition().x : 0;
  270.          var2.setViewPosition(var4);
  271.          this.scrollpane.add(var2, "COLUMN_HEADER");
  272.       }
  273.  
  274.    }
  275.  
  276.    private void updateHorizontalScrollBar(PropertyChangeEvent var1) {
  277.       this.updateScrollBar(var1, this.hsbChangeListener);
  278.    }
  279.  
  280.    private void updateVerticalScrollBar(PropertyChangeEvent var1) {
  281.       this.updateScrollBar(var1, this.vsbChangeListener);
  282.    }
  283.  
  284.    private void updateScrollBar(PropertyChangeEvent var1, ChangeListener var2) {
  285.       if (var2 != null) {
  286.          JScrollBar var3 = (JScrollBar)var1.getOldValue();
  287.          if (var3 != null) {
  288.             var3.getModel().removeChangeListener(var2);
  289.          }
  290.  
  291.          var3 = (JScrollBar)var1.getNewValue();
  292.          if (var3 != null) {
  293.             var3.getModel().addChangeListener(var2);
  294.          }
  295.       }
  296.  
  297.    }
  298.  
  299.    protected PropertyChangeListener createPropertyChangeListener() {
  300.       return new PropertyChangeHandler(this);
  301.    }
  302.  
  303.    // $FF: synthetic method
  304.    static void access$000(BasicScrollPaneUI var0, PropertyChangeEvent var1) {
  305.       var0.updateVerticalScrollBar(var1);
  306.    }
  307.  
  308.    // $FF: synthetic method
  309.    static void access$100(BasicScrollPaneUI var0, PropertyChangeEvent var1) {
  310.       var0.updateHorizontalScrollBar(var1);
  311.    }
  312. }
  313.