/*
* @(#)ProgressBar.java 1.5 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package com.sun.media.ui;
import java.awt.*;
import javax.media.*;
public class ProgressBar extends Slider {
private CachingControl cc = null;
private Color cb, cd, cm;
private ProgressBarThread threadUpdate;
public ProgressBar(CachingControl cc) {
this.cc = cc;
setGrabberVisible(false);
setBackground(DefaultControlPanel.colorBackground);
threadUpdate = new ProgressBarThread ( this, cc );
threadUpdate.start();
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
if (cc == null)
super.paint(g);
else {
long len = cc.getContentLength();
long progress = cc.getContentProgress();
if (len < 1) {
return;
}
if (progress > len)
len = progress;
setDisplayPercent((int)(100 * progress / len));
super.paint(g);
}
}
}
class ProgressBarThread extends Thread {
private Component progressBar;
private CachingControl cachingControl;
private long lengthContent;
public ProgressBarThread ( Component progressBar, CachingControl cachingControl ) {
this.progressBar = progressBar;
this.cachingControl = cachingControl;
lengthContent = cachingControl.getContentLength();
}
public void run () {
long lengthProgress = 0;
while ( lengthProgress < lengthContent ) {
try {
sleep ( 300 );
}
catch ( Exception exception ) {
}
lengthProgress = cachingControl.getContentProgress();
progressBar.repaint();
}
}
}
|