From 8826de38b2c51c2949c4e6d191c35b09f3812bc2 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Tue, 27 Nov 2018 13:36:00 +0100 Subject: [PATCH] Improve calculation of size property --- .../main/java/ctbrec/ui/JavaFxRecording.java | 11 +++--- .../main/java/ctbrec/ui/RecordingsTab.java | 34 +++++++++++++++++-- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/JavaFxRecording.java b/client/src/main/java/ctbrec/ui/JavaFxRecording.java index 313a7e75..af9f0241 100644 --- a/client/src/main/java/ctbrec/ui/JavaFxRecording.java +++ b/client/src/main/java/ctbrec/ui/JavaFxRecording.java @@ -1,10 +1,11 @@ package ctbrec.ui; -import java.text.DecimalFormat; import java.time.Instant; import ctbrec.Config; import ctbrec.Recording; +import javafx.beans.property.LongProperty; +import javafx.beans.property.SimpleLongProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; @@ -12,7 +13,7 @@ public class JavaFxRecording extends Recording { private transient StringProperty statusProperty = new SimpleStringProperty(); private transient StringProperty progressProperty = new SimpleStringProperty(); - private transient StringProperty sizeProperty = new SimpleStringProperty(); + private transient LongProperty sizeProperty = new SimpleLongProperty(); private Recording delegate; @@ -89,9 +90,7 @@ public class JavaFxRecording extends Recording { @Override public void setSizeInByte(long sizeInByte) { delegate.setSizeInByte(sizeInByte); - double sizeInGiB = sizeInByte / 1024.0 / 1024 / 1024; - DecimalFormat df = new DecimalFormat("0.00"); - sizeProperty.setValue(df.format(sizeInGiB) + " GiB"); + sizeProperty.set(sizeInByte); } public StringProperty getProgressProperty() { @@ -151,7 +150,7 @@ public class JavaFxRecording extends Recording { return delegate.getSizeInByte(); } - public StringProperty getSizeProperty() { + public LongProperty getSizeProperty() { return sizeProperty; } diff --git a/client/src/main/java/ctbrec/ui/RecordingsTab.java b/client/src/main/java/ctbrec/ui/RecordingsTab.java index 7efba008..6581bcb5 100644 --- a/client/src/main/java/ctbrec/ui/RecordingsTab.java +++ b/client/src/main/java/ctbrec/ui/RecordingsTab.java @@ -147,9 +147,39 @@ public class RecordingsTab extends Tab implements TabSelectionListener { TableColumn progress = new TableColumn<>("Progress"); progress.setCellValueFactory((cdf) -> cdf.getValue().getProgressProperty()); progress.setPrefWidth(100); - TableColumn size = new TableColumn<>("Size"); - size.setCellValueFactory((cdf) -> cdf.getValue().getSizeProperty()); + TableColumn size = new TableColumn<>("Size"); + size.setStyle("-fx-alignment: CENTER-RIGHT;"); size.setPrefWidth(100); + size.setCellValueFactory(cdf -> cdf.getValue().getSizeProperty()); + size.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell() { + @Override + protected void updateItem(Number sizeInByte, boolean empty) { + if(empty || sizeInByte == null) { + setText(null); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + String unit = "Bytes"; + double size = sizeInByte.doubleValue(); + if(size > 1024.0 * 1024 * 1024) { + size = size / 1024.0 / 1024 / 1024; + unit = "GiB"; + } else if(size > 1024.0 * 1024) { + size = size / 1024.0 / 1024; + unit = "MiB"; + } else if(size > 1024.0) { + size = size / 1024.0; + unit = "KiB"; + } + setText(df.format(size) + ' ' + unit); + } + } + }; + return cell; + } + }); table.getColumns().addAll(name, date, status, progress, size); table.setItems(observableRecordings);