1  /*
     2   Copyright aswing.org, see the LICENCE.txt.
     3  */
     4   
     5  import org.aswing.ASColor;
     6  import org.aswing.border.Border;
     7  import org.aswing.Component;
     8  import org.aswing.geom.Rectangle;
     9  import org.aswing.graphices.Graphics;
    10  import org.aswing.graphices.Pen;
    11  import org.aswing.Insets;
    12  import org.aswing.JTextComponent;
    13  import org.aswing.plaf.UIResource;
    14  import org.aswing.UIDefaults;
    15  import org.aswing.UIManager;
    16  
    17  /**
    18   * @author iiley
    19   */
    20  class org.aswing.plaf.basic.border.TextBorder implements Border, UIResource {
    21  	
    22  	
    23      private var shadow:ASColor;
    24      private var darkShadow:ASColor;
    25      private var highlight:ASColor;
    26      private var lightHighlight:ASColor;
    27  	
    28  	public function TextBorder(shadow:ASColor, darkShadow:ASColor, light:ASColor, highlight:ASColor){
    29  		var table:UIDefaults = UIManager.getLookAndFeelDefaults();
    30  		
    31  		this.shadow = shadow;
    32  		this.darkShadow = darkShadow;
    33  		this.highlight = highlight;
    34  		this.lightHighlight = light;
    35  	}
    36  	
    37  	/**
    38  	 * paint the ButtonBorder content.
    39  	 */
    40      public function paintBorder(c:Component, g:Graphics, r:Rectangle):Void{
    41  	    var x1:Number = r.x;
    42  		var y1:Number = r.y;
    43  		var w:Number = r.width;
    44  		var h:Number = r.height;
    45  		var textCom:JTextComponent = JTextComponent(c);
    46  		if(textCom.isEditable() && textCom.isEnabled()){
    47  			//just can't judge which is better of bottom two ways, both has flaw.:(
    48  			g.drawRectangle(new Pen(highlight, 1), x1+0.5, y1+0.5, w-1, h-1);
    49  			//g.fillRectangleRingWithThickness(new SolidBrush(highlight), x1,y1,w,h, 1);
    50  		}
    51  		g.drawRectangle(new Pen(lightHighlight, 1), x1+1.5, y1+1.5, w-3, h-3);
    52  		//g.fillRectangleRingWithThickness(new SolidBrush(lightHighlight), x1+1,y1+1,w-2,h-2, 1);
    53      }
    54  	
    55  	public function getBorderInsets(c:Component, bounds:Rectangle):Insets{
    56      	return new Insets(2, 2, 2, 2);
    57      }
    58      
    59      public function uninstallBorder(c:Component):Void{
    60      }
    61  	
    62  }
    63