Author: jflesch
Date: 2006-12-09 20:51:42 +0000 (Sat, 09 Dec 2006)
New Revision: 11323
Added:
trunk/apps/Thaw/src/thaw/plugins/index/IndexProgressBar.java
Log:
Oops, forgot a file
Added: trunk/apps/Thaw/src/thaw/plugins/index/IndexProgressBar.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexProgressBar.java
(rev 0)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexProgressBar.java
2006-12-09 20:51:42 UTC (rev 11323)
@@ -0,0 +1,111 @@
+package thaw.plugins.index;
+
+import javax.swing.JProgressBar;
+
+import java.util.Vector;
+import java.util.Iterator;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import thaw.fcp.FCPTransferQuery;
+
+public class IndexProgressBar implements Observer {
+
+ private JProgressBar progressBar;
+
+ private int total;
+ private int offset;
+ private int current;
+
+ private Vector transfers;
+ private int nmbTransfers;
+
+ public IndexProgressBar() {
+ progressBar = new JProgressBar(0, 100);
+ total = 0;
+ current = 0;
+ nmbTransfers = 0;
+ offset = 0;
+ transfers = new Vector();
+ refreshBar();
+ progressBar.setStringPainted(true);
+ }
+
+ public void addTransfer(FCPTransferQuery query) {
+ if (!(query instanceof Observable))
+ return;
+
+ ((Observable)query).addObserver(this);
+
+ total += 100;
+ current += query.getProgression();
+ nmbTransfers++;
+ transfers.add(query);
+
+ refreshBar();
+ }
+
+ /**
+ * Is usually called automatically
+ */
+ public void removeTransfer(FCPTransferQuery query) {
+ if (!(query instanceof Observable))
+ return;
+
+ ((Observable)query).deleteObserver(this);
+
+ nmbTransfers--;
+
+ if (nmbTransfers == 0) {
+ total = 0;
+ current = 0;
+ offset = 0;
+ }
+ else {
+ offset += 100;
+ }
+
+ transfers.remove(query);
+
+ refreshBar();
+ }
+
+ public void refreshBar() {
+ int pourcent;
+
+ if (total == 0 || current == total) {
+ progressBar.setValue(0);
+ progressBar.setString("");
+ } else {
+ pourcent = (current * 100) / total;
+ progressBar.setValue(pourcent);
+ progressBar.setString(Integer.toString(pourcent) + "
%");
+ }
+ }
+
+ public void update(Observable o, Object arg) {
+ if (o instanceof FCPTransferQuery) {
+ FCPTransferQuery query = (FCPTransferQuery)o;
+
+ current = offset;
+ total = offset;
+
+ for (Iterator it = transfers.iterator();
+ it.hasNext(); ) {
+ FCPTransferQuery q =
(FCPTransferQuery)it.next();
+ current += q.getProgression();
+ total += 100;
+ }
+
+ if (query.isFinished())
+ removeTransfer(query);
+ }
+ }
+
+ public JProgressBar getProgressBar() {
+ return progressBar;
+ }
+}
+
+