Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.test.main;
- import java.io.File;
- import java.net.MalformedURLException;
- import java.util.ArrayList;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javafx.application.Application;
- import javafx.concurrent.Task;
- import javafx.geometry.Pos;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.ProgressIndicator;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.input.DragEvent;
- import javafx.scene.input.Dragboard;
- import javafx.scene.input.TransferMode;
- import javafx.scene.layout.BorderPane;
- import javafx.scene.layout.FlowPane;
- import javafx.stage.Stage;
- public class MyPhotoViewer extends Application{
- private ArrayList<String> imgFiles = new ArrayList<String>();
- private ImageView imgViewer;
- private int currentImage;
- private Task loadImage;
- private ProgressIndicator loadingPie;
- @Override
- public void start(Stage stage) {
- try {
- Group root = new Group();
- Scene scene = new Scene(root, 480, 400);
- loadingPie = new ProgressIndicator(0);
- this.enableDragSupport(scene);
- BorderPane bp = new BorderPane();
- File fileImg = new File("C:\\Users\\User\\Pictures\\test1.jpg"); // Initial image
- Image myImg = new Image(fileImg.toURI().toURL().toString());
- currentImage = 0;
- imgViewer = new ImageView(myImg);
- imgViewer.setFitHeight(580);
- imgViewer.setFitWidth(470);
- imgViewer.setPreserveRatio(true);
- Button btnPrev = new Button("<");
- Button btnNext = new Button(">");
- this.applyHandler(btnPrev);
- this.applyHandler(btnNext);
- FlowPane buttons = new FlowPane();
- buttons.setAlignment(Pos.CENTER);
- buttons.getChildren().addAll(btnPrev, btnNext);
- loadingPie.setVisible(false);
- //this.loadImgManual(); // in case drag n drop does not work.
- bp.setTop(loadingPie);
- bp.setCenter(imgViewer);
- bp.setBottom(buttons);
- root.getChildren().add(bp);
- stage.setScene(scene);
- stage.show();
- } catch (MalformedURLException ex) {
- Logger.getLogger(MyPhotoViewer.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- private void applyHandler(Button prmBtn){
- prmBtn.setOnAction((t) -> {
- switch(prmBtn.getText()){
- case ">":
- System.out.println(">");
- loadingPie.setVisible(true);
- loadImage = loadImgTask(prmBtn.getText());
- loadingPie.progressProperty().unbind();
- loadingPie.progressProperty().bind(loadImage.progressProperty());
- new Thread(loadImage).start();
- break;
- case "<":
- System.out.println("<");
- loadImage = loadImgTask(prmBtn.getText());
- loadingPie.setVisible(true);
- loadImage = loadImgTask(prmBtn.getText());
- loadingPie.progressProperty().unbind();
- loadingPie.progressProperty().bind(loadImage.progressProperty());
- new Thread(loadImage).start();
- break;
- default:
- System.err.println("Cannot process that.");
- }
- });
- }
- private Task loadImgTask(String prmCommand){
- return new Task() {
- @Override
- protected Object call() throws Exception {
- showImage(prmCommand);
- loadingPie.setVisible(false);
- return true;
- }
- };
- }
- private void loadImgManual(){
- try {
- imgFiles.add(new File("C:\\Users\\User\\Pictures\\test1.jpg").toURI().toURL().toString());
- imgFiles.add(new File("âĒC:\\Users\\User\\Pictures\\test2.jpg").toURI().toURL().toString());
- imgFiles.add(new File("C:\\Users\\User\\Pictures\\test3.jpg").toURI().toURL().toString());
- imgFiles.add(new File("C:\\Users\\User\\Pictures\\test4.jpg").toURI().toURL().toString());
- imgFiles.add(new File("C:\\Users\\User\\Pictures\\test5.jpg").toURI().toURL().toString());
- } catch (MalformedURLException ex) {
- Logger.getLogger(MyPhotoViewer.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- private void enableDragSupport(Scene prmScene){ // does not work
- prmScene.setOnDragOver((DragEvent event) -> {
- System.out.println("Drop detected");
- Dragboard db = event.getDragboard();
- if (db.hasFiles() || (db.hasUrl())) {
- event.acceptTransferModes(TransferMode.LINK);
- } else {
- event.consume();
- }
- });
- prmScene.setOnDragDropped((DragEvent event) -> {
- Dragboard db = event.getDragboard();
- System.out.println("Drop detected");
- if(db.hasFiles()){
- db.getFiles().stream().forEach(file -> {
- try {
- imgFiles.add(file.toURI().toURL().toString());
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- }
- event.setDropCompleted(true);
- event.consume();
- });
- }
- private void showImage(String prmCommand){ // works but blanks the whole scene.
- switch(prmCommand){
- case ">":
- if (currentImage+1 <= imgFiles.size()) {
- currentImage += 1;
- imgViewer.setImage(new Image(imgFiles.get(currentImage)));
- }else{
- System.err.println("End reached: No more images to load.");
- }
- break;
- case "<":
- if (currentImage-1 >= 0) {
- currentImage -= 1;
- imgViewer.setImage(new Image(imgFiles.get(currentImage)));
- }else{
- System.err.println("End reached: No more images to load.");
- }
- break;
- default:
- System.err.println("Cannot load that!");
- break;
- }
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
Add Comment
Please, Sign In to add comment