diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/control')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/BlockProgressBar.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/BlockProgressBar.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/BlockProgressBar.java index 22089f70..c7e0172f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/BlockProgressBar.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/BlockProgressBar.java @@ -10,6 +10,7 @@ import java.awt.geom.Rectangle2D; import javax.swing.JPanel; +import org.openslx.dozmod.filetransfer.TransferEvent; import org.openslx.dozmod.gui.Gui; import org.openslx.thrifthelper.TransferStatusWrapper; @@ -31,6 +32,8 @@ public class BlockProgressBar extends JPanel { private boolean simpleMode = true; private boolean showEstimatedComplete = false; + + private int locallyHashedBlockCount; public BlockProgressBar(byte[] blocks) { super(); @@ -46,8 +49,9 @@ public class BlockProgressBar extends JPanel { this.blocks.setBlocks(blocks); } - public void setStatus(byte[] blocks) { - this.blocks.setBlocks(blocks); + public void setStatus(TransferEvent event) { + this.blocks.setBlocks(event.progress); + this.locallyHashedBlockCount = event.locallyHashedCount; this.repaint(100); } @@ -142,13 +146,19 @@ public class BlockProgressBar extends JPanel { g.setColor(Color.WHITE); g.fillRect(0, 0, getWidth(), getHeight()); float x = 0, y = 0; - for (byte block : blocks.getBlocks()) { + byte[] ba = blocks.getBlocks(); + for (int i = 0; i < ba.length; ++i) { + byte block = ba[i]; float toX = x + blockWidth; if (block >= 0 && block < blockColors.length) { g.setColor(blockColors[block]); final int boxWidth = ((int) toX) - ((int) x) - 1; final int boxHeight = (int) (y + blockHeightVisible) - (int) y; - g.fillRect((int) x, (int) y, boxWidth > 1 ? boxWidth : 1, boxHeight > 1 ? boxHeight : 1); + if (i < locallyHashedBlockCount) { + g.fillRect((int) x, (int) y, boxWidth > 1 ? boxWidth : 1, boxHeight > 1 ? boxHeight : 1); + } else { + g.drawRect((int) x, (int) y, boxWidth > 1 ? boxWidth : 1, boxHeight > 1 ? boxHeight : 1); + } } x = toX; if (x + 0.5 > width) { |