Added start of attachment preview!
This commit is contained in:
parent
01d08154e0
commit
0eb2edfc8d
|
@ -1,5 +1,6 @@
|
||||||
package com.andrewlalis.perfin.control;
|
package com.andrewlalis.perfin.control;
|
||||||
|
|
||||||
|
import com.andrewlalis.perfin.control.component.AttachmentPreview;
|
||||||
import com.andrewlalis.perfin.data.CurrencyUtil;
|
import com.andrewlalis.perfin.data.CurrencyUtil;
|
||||||
import com.andrewlalis.perfin.data.DateUtil;
|
import com.andrewlalis.perfin.data.DateUtil;
|
||||||
import com.andrewlalis.perfin.model.CreditAndDebitAccounts;
|
import com.andrewlalis.perfin.model.CreditAndDebitAccounts;
|
||||||
|
@ -69,14 +70,7 @@ public class TransactionViewController {
|
||||||
Platform.runLater(() -> attachmentsList.setAll(attachments));
|
Platform.runLater(() -> attachmentsList.setAll(attachments));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
BindingUtil.mapContent(attachmentsHBox.getChildren(), attachmentsList, attachment -> {
|
BindingUtil.mapContent(attachmentsHBox.getChildren(), attachmentsList, AttachmentPreview::new);
|
||||||
VBox vbox = new VBox(
|
|
||||||
new Label(attachment.getFilename()),
|
|
||||||
new Label(attachment.getContentType())
|
|
||||||
);
|
|
||||||
// TODO: Custom attachment preview element.
|
|
||||||
return vbox;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML public void deleteTransaction() {
|
@FXML public void deleteTransaction() {
|
||||||
|
|
|
@ -10,7 +10,6 @@ import com.andrewlalis.perfin.data.pagination.PageRequest;
|
||||||
import com.andrewlalis.perfin.data.pagination.Sort;
|
import com.andrewlalis.perfin.data.pagination.Sort;
|
||||||
import com.andrewlalis.perfin.model.Profile;
|
import com.andrewlalis.perfin.model.Profile;
|
||||||
import com.andrewlalis.perfin.model.Transaction;
|
import com.andrewlalis.perfin.model.Transaction;
|
||||||
import javafx.application.Platform;
|
|
||||||
import javafx.beans.property.ObjectProperty;
|
import javafx.beans.property.ObjectProperty;
|
||||||
import javafx.beans.property.SimpleObjectProperty;
|
import javafx.beans.property.SimpleObjectProperty;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.andrewlalis.perfin.control.component;
|
||||||
|
|
||||||
|
import com.andrewlalis.perfin.model.TransactionAttachment;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.image.Image;
|
||||||
|
import javafx.scene.image.ImageView;
|
||||||
|
import javafx.scene.layout.BorderPane;
|
||||||
|
import javafx.scene.layout.VBox;
|
||||||
|
import javafx.scene.paint.Color;
|
||||||
|
import javafx.scene.shape.Rectangle;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A small component that shows the basic information about an attachment,
|
||||||
|
* like its name, type, and a preview image if possible.
|
||||||
|
*/
|
||||||
|
public class AttachmentPreview extends BorderPane {
|
||||||
|
public AttachmentPreview(TransactionAttachment attachment) {
|
||||||
|
Label nameLabel = new Label(attachment.getFilename());
|
||||||
|
Label typeLabel = new Label(attachment.getContentType());
|
||||||
|
typeLabel.setStyle("-fx-font-size: x-small;");
|
||||||
|
setBottom(new VBox(nameLabel, typeLabel));
|
||||||
|
|
||||||
|
Rectangle placeholder = new Rectangle(64.0, 64.0);
|
||||||
|
placeholder.setFill(Color.WHITE);
|
||||||
|
setCenter(placeholder);
|
||||||
|
|
||||||
|
Set<String> imageTypes = Set.of("image/png", "image/jpeg", "image/gif", "image/bmp");
|
||||||
|
if (imageTypes.contains(attachment.getContentType())) {
|
||||||
|
try (var in = Files.newInputStream(attachment.getPath())) {
|
||||||
|
Image img = new Image(in, 64.0, 64.0, true, true);
|
||||||
|
setCenter(new ImageView(img));
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue