158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpackage junit.awtui; 258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Canvas; 458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Color; 558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Graphics; 658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Rectangle; 758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.SystemColor; 858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpublic class ProgressBar extends Canvas { 1058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public boolean fError= false; 1158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public int fTotal= 0; 1258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public int fProgress= 0; 1358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public int fProgressX= 0; 1458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 1558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public ProgressBar() { 1658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot super(); 1758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot setSize(20, 30); 1858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 1958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 2058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private Color getStatusColor() { 2158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (fError) 2258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return Color.red; 2358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return Color.green; 2458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 2558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 2658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void paint(Graphics g) { 2758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot paintBackground(g); 2858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot paintStatus(g); 2958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 3058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 3158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void paintBackground(Graphics g) { 3258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.setColor(SystemColor.control); 3358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Rectangle r= getBounds(); 3458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.fillRect(0, 0, r.width, r.height); 3558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.setColor(Color.darkGray); 3658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.drawLine(0, 0, r.width-1, 0); 3758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.drawLine(0, 0, 0, r.height-1); 3858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.setColor(Color.white); 3958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.drawLine(r.width-1, 0, r.width-1, r.height-1); 4058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.drawLine(0, r.height-1, r.width-1, r.height-1); 4158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 4258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 4358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void paintStatus(Graphics g) { 4458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.setColor(getStatusColor()); 4558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Rectangle r= new Rectangle(0, 0, fProgressX, getBounds().height); 4658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot g.fillRect(1, 1, r.width-1, r.height-2); 4758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 4858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 4958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void paintStep(int startX, int endX) { 5058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot repaint(startX, 1, endX-startX, getBounds().height-2); 5158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 5258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 5358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void reset() { 5458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgressX= 1; 5558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgress= 0; 5658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fError= false; 5758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot paint(getGraphics()); 5858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 5958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 6058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public int scale(int value) { 6158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (fTotal > 0) 6258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return Math.max(1, value*(getBounds().width-1)/fTotal); 6358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return value; 6458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 6558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 6658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void setBounds(int x, int y, int w, int h) { 6758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot super.setBounds(x, y, w, h); 6858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgressX= scale(fProgress); 6958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 7058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 7158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void start(int total) { 7258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTotal= total; 7358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot reset(); 7458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 7558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 7658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void step(boolean successful) { 7758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgress++; 7858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot int x= fProgressX; 7958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 8058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgressX= scale(fProgress); 8158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 8258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (!fError && !successful) { 8358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fError= true; 8458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot x= 1; 8558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 8658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot paintStep(x, fProgressX); 8758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 8858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot}