Added improvments to drag&drop(only for one tile)

master
Cemal Odabasioglu 2022-04-28 17:01:47 +02:00
parent a959e044d6
commit 6780348413
1 changed files with 74 additions and 15 deletions

View File

@ -3,20 +3,26 @@ package latice.application;
import java.util.ArrayList; import java.util.ArrayList;
import javafx.application.Application; import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.DragEvent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.Background; import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundImage; import javafx.scene.layout.BackgroundImage;
import javafx.scene.layout.BackgroundPosition; import javafx.scene.layout.BackgroundPosition;
import javafx.scene.layout.BackgroundRepeat; import javafx.scene.layout.BackgroundRepeat;
import javafx.scene.layout.BackgroundSize; import javafx.scene.layout.BackgroundSize;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.Rectangle; import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font; import javafx.scene.text.Font;
import javafx.scene.text.Text; import javafx.scene.text.Text;
@ -55,10 +61,7 @@ public class LaticeApplicationWindow extends Application{
root.setAlignment(title, Pos.CENTER); root.setAlignment(title, Pos.CENTER);
//Image //Image
Rectangle rectangle = new Rectangle();
rectangle.setWidth(50);
rectangle.setHeight(50);
//rectangle.setFill(realColor.TRANSPARENT); //rectangle.setFill(realColor.TRANSPARENT);
Pane pane = new Pane(); Pane pane = new Pane();
@ -66,19 +69,20 @@ public class LaticeApplicationWindow extends Application{
BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER,
BackgroundSize.DEFAULT); BackgroundSize.DEFAULT);
pane.setBackground(new Background(myBG)); pane.setBackground(new Background(myBG));
pane.getChildren().add(rectangle);
for (int i=0; i<450 ;i += 50) {
for (int j=0; j < 450 ; j += 50) {
Rectangle r = new Rectangle(i,j,50,50);
r.setFill(realColor.TRANSPARENT);
r.setStroke(realColor.BLACK);
pane.getChildren().add(r);
Rectangle r[] = new Rectangle[81];
for (int i=1; i<10 ; i++) {
for (int j=1; j < 10 ; j++) {
r[i] = new Rectangle(i*52+336,j*52+15,50,50);
r[i].setFill(realColor.TRANSPARENT);
r[i].setStroke(realColor.BLACK);
pane.getChildren().add(r[i]);
System.out.println(r[i]);
} }
} }
pane.setLayoutX(100);
pane.setLayoutY(50);
root.setCenter(pane); root.setCenter(pane);
//Rack //Rack
@ -125,6 +129,60 @@ public class LaticeApplicationWindow extends Application{
rackTile5.setText(listRackTile.get(4).getShape().toString() + listRackTile.get(4).getColor().toString()); rackTile5.setText(listRackTile.get(4).getShape().toString() + listRackTile.get(4).getColor().toString());
rackTile1.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
Dragboard dragboard = rackTile1.startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
content.putString("Hello !");
dragboard.setContent(content);
arg0.consume();
}
});
ImagePattern imagePattern = new ImagePattern(image);
r[1].setOnDragEntered(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent arg0) {
if (arg0.getDragboard().hasString()){
r[1].setFill(imagePattern);
}
arg0.consume();
}
});
r[1].setOnDragExited(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent arg0) {
r[1].setFill(realColor.BLUE);
arg0.consume();
}
});
r[1].setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent arg0) {
System.out.println("entered");
Dragboard dragboard = arg0.getDragboard();
boolean success = false;
r[1].setFill(imagePattern);
System.out.println("got files :" + dragboard.getFiles());
if (dragboard.hasString()){
success = true;
r[1].setFill(imagePattern);
}
arg0.setDropCompleted(success);
arg0.consume();
}
});
rackBox.getChildren().addAll(rackTile1, rackTile2, rackTile3, rackTile4, rackTile5); rackBox.getChildren().addAll(rackTile1, rackTile2, rackTile3, rackTile4, rackTile5);
rackBox.setAlignment(Pos.CENTER); rackBox.setAlignment(Pos.CENTER);
root.setBottom(rackBox); root.setBottom(rackBox);
@ -132,9 +190,10 @@ public class LaticeApplicationWindow extends Application{
Scene scene = new Scene(root, 1280, 720); Scene scene = new Scene(root, 1280, 720);
primaryStage.setResizable(false); //primaryStage.setResizable(false);
primaryStage.setTitle("Latice"); primaryStage.setTitle("Latice");
primaryStage.setScene(scene); primaryStage.setScene(scene);
primaryStage.show(); primaryStage.show();