Advertisement
iamaamir

Image Gallery

Jun 13th, 2015
1,036
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.59 KB | None | 0 0
  1.  
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.nio.file.Files;
  6. import java.util.LinkedList;
  7. import java.util.List;
  8. import javafx.application.Application;
  9. import javafx.beans.property.BooleanProperty;
  10. import javafx.beans.property.SimpleBooleanProperty;
  11. import javafx.event.ActionEvent;
  12. import javafx.scene.Scene;
  13. import javafx.scene.control.Button;
  14. import javafx.scene.control.Label;
  15. import javafx.scene.control.ScrollPane;
  16. import javafx.scene.image.Image;
  17. import javafx.scene.image.ImageView;
  18. import javafx.scene.input.DragEvent;
  19. import javafx.scene.input.Dragboard;
  20. import javafx.scene.input.TransferMode;
  21. import javafx.scene.layout.TilePane;
  22. import javafx.scene.layout.VBox;
  23. import javafx.stage.Stage;
  24.  
  25. /**
  26.  *
  27.  * @author toffe boy Aamir
  28.  */
  29. public class DragAndDropImages extends Application {
  30.  
  31.     ImageView[] imageView;
  32.     List<Image> AllImages = new LinkedList();
  33.     Button clearBtn = new Button("Clear");
  34.     Scene scene;
  35.     TilePane imgBox;
  36.     Label msgLbl = new Label(
  37.             "Drag and drop images below.");
  38.  
  39.     public static void main(String[] args) {
  40.         launch(args);
  41.     }
  42.  
  43.     @Override
  44.     public void start(Stage window) {
  45.  
  46.         VBox root = BuildUI();
  47.         scene = new Scene(root, 500, 500);
  48.         scene.setOnDragDropped(this::dragDropped);
  49.         scene.setOnDragOver(this::dragOver);
  50.  
  51.         window.setScene(scene);
  52.         root.setStyle("-fx-padding: 10;"
  53.                 + "-fx-border-style: solid inside;"
  54.                 + "-fx-border-width: 2;"
  55.                 + "-fx-border-insets: 5;"
  56.                 + "-fx-border-radius: 5;"
  57.                 + "-fx-border-color: blue;");
  58.         window.setTitle("Drag-and-Drop");
  59.         window.show();
  60.     }
  61.  
  62.     private VBox BuildUI() {
  63.         imgBox = new TilePane();
  64.         imgBox.setHgap(5.0);
  65.         imgBox.setVgap(2.0);
  66.         ScrollPane root = new ScrollPane(imgBox);
  67.         root.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);
  68.         root.setVbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED);
  69.         root.setFitToWidth(true);
  70.  
  71.         clearBtn.setOnAction((ActionEvent e) -> {
  72.             AllImages.clear();
  73.             imgBox.getChildren().clear();
  74.         });
  75.         //Set the Size for the Images View
  76.  
  77.         VBox box = new VBox(10, msgLbl, root, clearBtn);
  78.         return box;
  79.     }
  80.  
  81.     private void dragOver(DragEvent de) {
  82.         Dragboard db = de.getDragboard();
  83.         if (db.hasFiles() || db.hasImage()) {
  84.             de.acceptTransferModes(TransferMode.ANY);
  85.         }
  86.         de.consume();
  87.  
  88.     }
  89.  
  90.     private void dragDropped(DragEvent de) {
  91.        
  92.         boolean isDone = false;
  93.         //transfer the Data
  94.         Dragboard db = de.getDragboard();
  95.         if (db.hasImage()) {
  96.             addImg(db.getImage());
  97.             updateView();
  98.             isDone = true;
  99.         } else if (db.hasFiles()) {
  100.             isDone = transferimgFromFile(db.getFiles());
  101.             updateView();
  102.  
  103.         }
  104.  
  105.         //if data Transfer not Done
  106.         de.setDropCompleted(isDone);
  107.         de.consume();
  108.  
  109.     }
  110.    
  111.     private void addImg(Image image) {
  112.             AllImages.add(image);
  113.             System.out.println("image added");
  114.         }
  115.  
  116.         private boolean transferimgFromFile(List<File> files) {
  117.  
  118.             BooleanProperty isImage = new SimpleBooleanProperty();
  119.             isImage.set(false);
  120.  
  121.             //Look for the First File MIME
  122.             files.iterator().forEachRemaining(x -> {
  123.                 String mime;
  124.                 try {
  125.                     mime = Files.probeContentType(x.toPath());
  126.                     if (mime != null && mime.startsWith("image/")) {
  127.                         this.addImg(new Image(new FileInputStream(x.getAbsoluteFile()), 50, 50, true, true));
  128.                         isImage.set(true);
  129.                     }
  130.                 } catch (IOException e) {
  131.                     e.printStackTrace();
  132.                 }
  133.             });
  134.  
  135.             return isImage.get();
  136.         }
  137.  
  138.         private void updateView() {
  139.             System.out.println("updated");
  140.             imageView = new ImageView[AllImages.size()];
  141.             for (int j = 0; j < imageView.length; j++) {
  142.                 imageView[j] = new ImageView(AllImages.get(j));
  143.                 imageView[j].setFitHeight(50);
  144.                 imageView[j].setFitWidth(50);
  145.                 imageView[j].setSmooth(true);
  146.                 imageView[j].setPreserveRatio(true);
  147.             }
  148.             imgBox.getChildren().addAll(imageView);
  149.             AllImages.clear();
  150.         }
  151.  
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement