1
4
5 import org.aswing.ASColor;
6 import org.aswing.Component;
7 import org.aswing.geom.Rectangle;
8 import org.aswing.graphices.Graphics;
9 import org.aswing.graphices.SolidBrush;
10 import org.aswing.Icon;
11 import org.aswing.JProgressBar;
12 import org.aswing.plaf.UIResource;
13 import org.aswing.UIManager;
14
15
18 class org.aswing.plaf.basic.icon.ProgressBarIcon implements Icon, UIResource {
19
20 private var indeterminatePercent:Number;
21 private var color:ASColor;
22
23 public function ProgressBarIcon(){
24 indeterminatePercent = 0;
25 color = UIManager.getColor("ProgressBar.progressColor");
26 }
27
28 public function getIconWidth() : Number {
29 return 0;
30 }
31
32 public function getIconHeight() : Number {
33 return 0;
34 }
35
36 public function paintIcon(com : Component, g : Graphics, x : Number, y : Number) : Void {
37 var pb:JProgressBar = JProgressBar(com);
38 if(pb == null){
39 return;
40 }
41
42 var percent:Number;
43 if(pb.isIndeterminate()){
44 percent = indeterminatePercent;
45 indeterminatePercent += 0.1;
46 if(indeterminatePercent > 1){
47 indeterminatePercent = 0;
48 }
49 }else{
50 percent = pb.getPercentComplete();
51 }
52
53 var b:Rectangle = com.getPaintBounds();
54 var box:Rectangle = new Rectangle(b);
55 var boxWidth:Number = 5;
56 var gap:Number = 1;
57 g.beginFill(new SolidBrush(color));
58
59 if(pb.getOrientation() == JProgressBar.VERTICAL){
60 box.height = boxWidth;
61 var minY:Number = b.y + b.height - b.height * percent;
62 for(box.y = b.y+b.height-boxWidth; box.y >= minY; box.y -= (boxWidth+gap)){
63 g.rectangle(box.x, box.y, box.width, box.height);
64 }
65 if(box.y < minY && box.y + boxWidth > minY){
66 box.height = boxWidth - (minY - box.y);
67 box.y = minY;
68 g.rectangle(box.x, box.y, box.width, box.height);
69 }
70 }else{
71 box.width = boxWidth;
72 var maxX:Number = b.x + b.width * percent;
73 for(;box.x <= maxX - boxWidth; box.x += (boxWidth+gap)){
74 g.rectangle(box.x, box.y, box.width, box.height);
75 }
76 box.width = maxX - box.x;
77 if(box.width > 0){
78 g.rectangle(box.x, box.y, box.width, box.height);
79 }
80 }
81 g.endFill();
82 }
83
84 public function uninstallIcon(com : Component) : Void {
85 }
86
87 }
88