home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / MetalScrollPaneUI.java < prev    next >
Text File  |  1998-02-26  |  4KB  |  128 lines

  1. /*
  2.  * @(#)MetalScrollPaneUI.java    1.3 98/02/03
  3.  *
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  *
  19.  */
  20.  
  21. package com.sun.java.swing.plaf.metal;
  22.  
  23. import com.sun.java.swing.*;
  24. import com.sun.java.swing.event.*;
  25. import com.sun.java.swing.border.*;
  26. import com.sun.java.swing.plaf.*;
  27. import com.sun.java.swing.plaf.basic.*;
  28.  
  29. import java.awt.*;
  30. import java.awt.event.*;
  31.  
  32.  
  33. /**
  34.  * A Metal L&F implementation of ScrollPaneUI.
  35.  * <p>
  36.  * Warning: serialized objects of this class will not be compatible with
  37.  * future swing releases.  The current serialization support is appropriate
  38.  * for short term storage or RMI between Swing1.0 applications.  It will
  39.  * not be possible to load serialized Swing1.0 objects with future releases
  40.  * of Swing.  The JDK1.2 release of Swing will be the compatibility
  41.  * baseline for the serialized form of Swing objects.
  42.  *
  43.  * @1.3 02/03/98
  44.  * @author Steve Wilson
  45.  */
  46. public class MetalScrollPaneUI extends BasicScrollPaneUI
  47. {
  48.  
  49.     public static ComponentUI createUI(JComponent x) {
  50.     return new MetalScrollPaneUI();
  51.     }
  52.  
  53.     /**
  54.      * This method just delegates to super, but it
  55.      * also marks the scrollbar with the metal specific
  56.      * "value add" tag which says it should press flush 
  57.      * agains the container.
  58.      *
  59.      * @see JScrollPane#createVerticalScrollBar
  60.      */
  61.     protected JScrollBar createVerticalScrollBar() {
  62.         JScrollBar bar = scrollpane.createVerticalScrollBar();
  63.     bar.putClientProperty( MetalScrollBarUI.FREE_STANDING_PROP, Boolean.FALSE);
  64.     return bar;
  65.     }
  66.  
  67.     /**
  68.      * This method just delegates to super, but it
  69.      * also marks the scrollbar with the metal specific
  70.      * "value add" tag which says it should press flush 
  71.      * agains the container.
  72.      *
  73.      * @returns scrollpane.createHorizontalScrollBar()
  74.      * @see JScrollPane#createHorizontalScrollBar
  75.      */
  76.     protected JScrollBar createHorizontalScrollBar() {
  77.         JScrollBar bar = scrollpane.createHorizontalScrollBar();
  78.     bar.putClientProperty( MetalScrollBarUI.FREE_STANDING_PROP, Boolean.FALSE);
  79.     return bar;
  80.     }
  81.  
  82.  
  83.  
  84.  
  85.  
  86. public static class ScrollPaneBorder extends AbstractBorder {
  87.  
  88.  private static final Insets insets = new Insets(1, 1, 2, 2);
  89.  
  90.   public void paintBorder(Component c, Graphics g, int x, int y, 
  91.               int w, int h) {
  92.  
  93.       JScrollPane scroll = (JScrollPane)c;
  94.       JComponent colHeader = scroll.getColumnHeader();
  95.       int colHeaderHeight = 0;
  96.       if (colHeader != null)
  97.          colHeaderHeight = colHeader.getHeight();
  98.  
  99.       JComponent rowHeader = scroll.getRowHeader();
  100.       int rowHeaderWidth = 0;
  101.       if (rowHeader != null)
  102.          rowHeaderWidth = rowHeader.getWidth();
  103.  
  104.  
  105.       g.translate( x, y);
  106.  
  107.       g.setColor( MetalLookAndFeel.getControlDarkShadow() );
  108.       g.drawRect( 0, 0, w-2, h-2 );
  109.       g.setColor( MetalLookAndFeel.getControlHighlight() );
  110.  
  111.       g.drawLine( w-1, 1, w-1, h-1);
  112.       g.drawLine( 1, h-1, w-1, h-1);
  113.  
  114.       g.setColor( MetalLookAndFeel.getControl() );
  115.       g.drawLine( w-2, 2+colHeaderHeight, w-2, 2+colHeaderHeight );
  116.       g.drawLine( 1+rowHeaderWidth, h-2, 1+rowHeaderWidth, h-2 );
  117.  
  118.       g.translate( -x, -y);
  119.  
  120.   }
  121.   
  122.   public Insets getBorderInsets(Component c)       {
  123.     return insets;
  124.   }
  125. }
  126.  
  127. }
  128.