home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / border / TitledBorder.class (.txt) < prev   
Encoding:
Java Class File  |  1998-11-05  |  6.5 KB  |  313 lines

  1. package javax.swing.border;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Insets;
  10. import java.awt.Point;
  11. import java.awt.Rectangle;
  12. import javax.swing.UIManager;
  13.  
  14. public class TitledBorder extends AbstractBorder {
  15.    protected String title;
  16.    protected Border border;
  17.    protected int titlePosition;
  18.    protected int titleJustification;
  19.    protected Font titleFont;
  20.    protected Color titleColor;
  21.    public static final int DEFAULT_POSITION = 0;
  22.    public static final int ABOVE_TOP = 1;
  23.    public static final int TOP = 2;
  24.    public static final int BELOW_TOP = 3;
  25.    public static final int ABOVE_BOTTOM = 4;
  26.    public static final int BOTTOM = 5;
  27.    public static final int BELOW_BOTTOM = 6;
  28.    public static final int DEFAULT_JUSTIFICATION = 0;
  29.    public static final int LEFT = 1;
  30.    public static final int CENTER = 2;
  31.    public static final int RIGHT = 3;
  32.    protected static final int EDGE_SPACING = 2;
  33.    protected static final int TEXT_SPACING = 2;
  34.    protected static final int TEXT_INSET_H = 5;
  35.  
  36.    public TitledBorder(String var1) {
  37.       this((Border)null, var1, 1, 2, (Font)null, (Color)null);
  38.    }
  39.  
  40.    public TitledBorder(Border var1) {
  41.       this(var1, "", 1, 2, (Font)null, (Color)null);
  42.    }
  43.  
  44.    public TitledBorder(Border var1, String var2) {
  45.       this(var1, var2, 1, 2, (Font)null, (Color)null);
  46.    }
  47.  
  48.    public TitledBorder(Border var1, String var2, int var3, int var4) {
  49.       this(var1, var2, var3, var4, (Font)null, (Color)null);
  50.    }
  51.  
  52.    public TitledBorder(Border var1, String var2, int var3, int var4, Font var5) {
  53.       this(var1, var2, var3, var4, var5, (Color)null);
  54.    }
  55.  
  56.    public TitledBorder(Border var1, String var2, int var3, int var4, Font var5, Color var6) {
  57.       this.title = var2;
  58.       this.border = var1;
  59.       this.titleFont = var5;
  60.       this.titleColor = var6;
  61.       this.setTitleJustification(var3);
  62.       this.setTitlePosition(var4);
  63.    }
  64.  
  65.    public Border getBorder() {
  66.       Border var1 = this.border;
  67.       if (var1 == null) {
  68.          var1 = UIManager.getBorder("TitledBorder.border");
  69.       }
  70.  
  71.       return var1;
  72.    }
  73.  
  74.    public Insets getBorderInsets(Component var1) {
  75.       return this.getBorderInsets(var1, new Insets(0, 0, 0, 0));
  76.    }
  77.  
  78.    public Insets getBorderInsets(Component var1, Insets var2) {
  79.       int var4 = 0;
  80.       int var5 = 16;
  81.       Border var6 = this.getBorder();
  82.       if (var6 != null) {
  83.          if (var6 instanceof AbstractBorder) {
  84.             var2 = ((AbstractBorder)var6).getBorderInsets(var1, var2);
  85.          } else {
  86.             var2 = var6.getBorderInsets(var1);
  87.          }
  88.       } else {
  89.          var2.left = var2.top = var2.right = var2.bottom = 0;
  90.       }
  91.  
  92.       var2.left += 4;
  93.       var2.right += 4;
  94.       var2.top += 4;
  95.       var2.bottom += 4;
  96.       if (var1 != null && this.getTitle() != null && !this.getTitle().equals("")) {
  97.          Font var7 = this.getFont(var1);
  98.          FontMetrics var3 = var1.getFontMetrics(var7);
  99.          if (var3 != null) {
  100.             var4 = var3.getDescent();
  101.             var5 = var3.getAscent();
  102.          }
  103.  
  104.          switch (this.getTitlePosition()) {
  105.             case 0:
  106.             case 2:
  107.                var2.top += var5 + var4;
  108.                break;
  109.             case 1:
  110.                var2.top += var5 + var4 + (Math.max(2, 4) - 2);
  111.                break;
  112.             case 3:
  113.                var2.top += var5 + var4 + 2;
  114.                break;
  115.             case 4:
  116.                var2.bottom += var5 + var4 + 2;
  117.                break;
  118.             case 5:
  119.                var2.bottom += var5 + var4;
  120.                break;
  121.             case 6:
  122.                var2.bottom += var5 + 2;
  123.          }
  124.  
  125.          return var2;
  126.       } else {
  127.          return var2;
  128.       }
  129.    }
  130.  
  131.    protected Font getFont(Component var1) {
  132.       Font var2;
  133.       if ((var2 = this.getTitleFont()) != null) {
  134.          return var2;
  135.       } else {
  136.          return var1 != null && (var2 = var1.getFont()) != null ? var2 : new Font("Dialog", 0, 12);
  137.       }
  138.    }
  139.  
  140.    public Dimension getMinimumSize(Component var1) {
  141.       Insets var2 = this.getBorderInsets(var1);
  142.       Dimension var3 = new Dimension(var2.right + var2.left, var2.top + var2.bottom);
  143.       Font var4 = this.getFont(var1);
  144.       FontMetrics var5 = var1.getFontMetrics(var4);
  145.       switch (this.titlePosition) {
  146.          case 0:
  147.          case 2:
  148.          case 3:
  149.          case 4:
  150.          case 5:
  151.          default:
  152.             var3.width += var5.stringWidth(this.getTitle());
  153.             break;
  154.          case 1:
  155.          case 6:
  156.             var3.width = Math.max(var5.stringWidth(this.getTitle()), var3.width);
  157.       }
  158.  
  159.       return var3;
  160.    }
  161.  
  162.    public String getTitle() {
  163.       return this.title;
  164.    }
  165.  
  166.    public Color getTitleColor() {
  167.       Color var1 = this.titleColor;
  168.       if (var1 == null) {
  169.          var1 = UIManager.getColor("TitledBorder.titleColor");
  170.       }
  171.  
  172.       return var1;
  173.    }
  174.  
  175.    public Font getTitleFont() {
  176.       Font var1 = this.titleFont;
  177.       if (var1 == null) {
  178.          var1 = UIManager.getFont("TitledBorder.font");
  179.       }
  180.  
  181.       return var1;
  182.    }
  183.  
  184.    public int getTitleJustification() {
  185.       return this.titleJustification;
  186.    }
  187.  
  188.    public int getTitlePosition() {
  189.       return this.titlePosition;
  190.    }
  191.  
  192.    public boolean isBorderOpaque() {
  193.       return false;
  194.    }
  195.  
  196.    public void paintBorder(Component var1, Graphics var2, int var3, int var4, int var5, int var6) {
  197.       if (this.getTitle() != null && !this.getTitle().equals("")) {
  198.          Rectangle var7 = new Rectangle(var3 + 2, var4 + 2, var5 - 4, var6 - 4);
  199.          Font var8 = var2.getFont();
  200.          Color var9 = var2.getColor();
  201.          var2.setFont(this.getFont(var1));
  202.          FontMetrics var10 = var2.getFontMetrics();
  203.          int var11 = var10.getHeight();
  204.          int var12 = var10.getDescent();
  205.          int var13 = var10.getAscent();
  206.          Point var14 = new Point();
  207.          int var16 = var10.stringWidth(this.getTitle());
  208.          Insets var17;
  209.          if (this.getBorder() != null) {
  210.             var17 = this.getBorder().getBorderInsets(var1);
  211.          } else {
  212.             var17 = new Insets(0, 0, 0, 0);
  213.          }
  214.  
  215.          switch (this.getTitlePosition()) {
  216.             case 0:
  217.             case 2:
  218.                int var18 = Math.max(0, var13 / 2 + 2 - 2);
  219.                var7.y += var18;
  220.                var7.height -= var18;
  221.                var14.y = var7.y - var12 + (var17.top + var13 + var12) / 2;
  222.                break;
  223.             case 1:
  224.                int var15 = var13 + var12 + (Math.max(2, 4) - 2);
  225.                var7.y += var15;
  226.                var7.height -= var15;
  227.                var14.y = var7.y - (var12 + 2);
  228.                break;
  229.             case 3:
  230.                var14.y = var7.y + var17.top + var13 + 2;
  231.                break;
  232.             case 4:
  233.                var14.y = var7.y + var7.height - (var17.bottom + var12 + 2);
  234.                break;
  235.             case 5:
  236.                var7.height -= var11 / 2;
  237.                var14.y = var7.y + var7.height - var12 + (var13 + var12 - var17.bottom) / 2;
  238.                break;
  239.             case 6:
  240.                var7.height -= var11;
  241.                var14.y = var7.y + var7.height + var13 + 2;
  242.          }
  243.  
  244.          this.getBorder().paintBorder(var1, var2, var7.x, var7.y, var7.width, var7.height);
  245.          switch (this.getTitleJustification()) {
  246.             case 0:
  247.             case 1:
  248.                var14.x = var7.x + 5 + var17.left;
  249.                break;
  250.             case 2:
  251.                var14.x = var7.x + (var7.width - var16) / 2;
  252.                break;
  253.             case 3:
  254.                var14.x = var7.x + var7.width - (var16 + 5 + var17.right);
  255.          }
  256.  
  257.          var2.setColor(var1.getBackground());
  258.          var2.fillRect(var14.x - 2, var14.y - (var11 - var12), var16 + 4, var11 - var12);
  259.          var2.setColor(this.getTitleColor());
  260.          var2.drawString(this.getTitle(), var14.x, var14.y);
  261.          var2.setFont(var8);
  262.          var2.setColor(var9);
  263.       } else {
  264.          this.getBorder().paintBorder(var1, var2, var3, var4, var5, var6);
  265.       }
  266.    }
  267.  
  268.    public void setBorder(Border var1) {
  269.       this.border = var1;
  270.    }
  271.  
  272.    public void setTitle(String var1) {
  273.       this.title = var1;
  274.    }
  275.  
  276.    public void setTitleColor(Color var1) {
  277.       this.titleColor = var1;
  278.    }
  279.  
  280.    public void setTitleFont(Font var1) {
  281.       this.titleFont = var1;
  282.    }
  283.  
  284.    public void setTitleJustification(int var1) {
  285.       switch (var1) {
  286.          case 0:
  287.          case 1:
  288.          case 2:
  289.          case 3:
  290.             this.titleJustification = var1;
  291.             return;
  292.          default:
  293.             throw new IllegalArgumentException(var1 + " is not a valid title justification.");
  294.       }
  295.    }
  296.  
  297.    public void setTitlePosition(int var1) {
  298.       switch (var1) {
  299.          case 0:
  300.          case 1:
  301.          case 2:
  302.          case 3:
  303.          case 4:
  304.          case 5:
  305.          case 6:
  306.             this.titlePosition = var1;
  307.             return;
  308.          default:
  309.             throw new IllegalArgumentException(var1 + " is not a valid title position.");
  310.       }
  311.    }
  312. }
  313.