Browse Source

Implemented Deletion and AC for Addition

toomanysugar 4 years ago
parent
commit
4d78ba5205

+ 32 - 4
src/main/java/com/moviesdb/BrowserController.java

@@ -151,6 +151,10 @@ public class BrowserController extends Controller {
 
     public void loadPosters()
     {
+        if (my_connector.initialized() & my_connector.granted("INSERT")) {
+            addMenu.setDisable(false);
+        } else
+            addMenu.setDisable(true);
         //detailsPane.setMinWidth(300);
         //get movies array
         if (my_connector.initialized() & (my_connector.granted("USAGE") || my_connector.granted("SELECT"))) {
@@ -270,14 +274,10 @@ public class BrowserController extends Controller {
             if (my_connector.granted("DELETE")) {
                 deleteMovieButton.setDisable(false);
                 deleteMovieButton.setOpacity(1);
-                deleteMovieButton.setOnMouseClicked(ed -> {
-                    System.out.println("delete");
-                });
 
             } else {
                 deleteMovieButton.setDisable(true);
                 deleteMovieButton.setOpacity(0);
-                deleteMovieButton.setOnMouseClicked(null);
             }
 
             if (my_connector.granted("UPDATE")) {
@@ -495,6 +495,34 @@ public class BrowserController extends Controller {
 
     }
 
+    DeleteController deleteWindow;
+    public void openDeleteForm(){
+        try {
+            FXMLLoader loader = new FXMLLoader(getClass().getResource("../../DeleteWindow.fxml"));
+            Parent root = loader.load();
+            deleteWindow = loader.getController();
+            deleteWindow.stage = new Stage();
+            deleteWindow.stage.setScene(new Scene(root, 380, 150));
+            deleteWindow.stage.initStyle(StageStyle.UNDECORATED);
+            //addWindow.stage.setUserData(loader);
+
+            deleteWindow.open(this);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void deletion(Boolean result){
+        System.out.println("Finale " + result);
+        if (result){
+            Movie deletingMovie = my_connector.getMovieInfo(detailsViewingNow);
+            my_connector.deleteMovie(deletingMovie);
+
+            loadPosters();
+            closeDetails();
+        }
+    }
+
     /*AdditionController altAddition;
     public void openAltAddForm(){
         try {

+ 1 - 1
src/main/java/com/moviesdb/Controller.java

@@ -30,7 +30,7 @@ public class Controller {
     }
 
     @FXML
-    private void closeStage(){
+    protected void closeStage(){
         stage.close();
     }
 

+ 4 - 1
src/main/java/com/moviesdb/DataBaseConnector.java

@@ -338,7 +338,10 @@ public class DataBaseConnector {
     public void deleteMovie(Movie movie) {
         try {
             Statement statement = conn.createStatement();
-            String req = "DELETE FROM Movies WHERE (`id` = '" + movie.id() + "');";
+            int targetId = movie.id();
+            String req = "DELETE FROM Movies WHERE (`id` = '" + targetId + "');";
+            statement.execute(req);
+            req = "DELETE FROM Roles WHERE (`movie_id` = '" + targetId + "');";
             statement.execute(req);
         } catch (SQLException ex) {
             ex.printStackTrace();

+ 58 - 0
src/main/java/com/moviesdb/DeleteController.java

@@ -0,0 +1,58 @@
+package com.moviesdb;
+
+import javafx.event.EventHandler;
+import javafx.fxml.FXML;
+import javafx.scene.control.Dialog;
+import javafx.scene.control.Label;
+import javafx.scene.layout.Pane;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import javafx.stage.WindowEvent;
+
+public class DeleteController extends Controller {
+    @FXML
+    Label cancelButton;
+    @FXML
+    Label deleteButton;
+    @FXML
+    Pane borderTop;
+
+    Object caller;
+    Boolean result = false;
+
+    public void open(Object caller) {
+        borderTop.setOnMousePressed(pressEvent -> {
+            borderTop.setOnMouseDragged(dragEvent -> {
+                stage.setX(dragEvent.getScreenX() - pressEvent.getSceneX());
+                stage.setY(dragEvent.getScreenY() - pressEvent.getSceneY());
+            });
+        });
+        stage.initModality(Modality.WINDOW_MODAL);
+        stage.initOwner(((BrowserController) caller).stage.getScene().getWindow());
+        this.caller = caller;
+        stage.setTitle("Delete confirmation");
+        stage.setOnHiding(new EventHandler<WindowEvent>() {
+            @Override
+            public void handle(WindowEvent we) {
+                ((BrowserController) caller).deletion(result);
+            }
+        });
+
+        stage.show();
+    }
+
+    @FXML
+    private void cancelDeletion(){
+        System.out.println("Cancel");
+        result=false;
+        closeStage();
+    }
+
+    @FXML
+    private void confirmDeletion(){
+        System.out.println("Delete");
+        result=true;
+        closeStage();
+    }
+
+}

+ 1 - 1
src/main/resources/BrowserWindow.fxml

@@ -214,7 +214,7 @@
                  </font>
               </Label>
               <TextFlow fx:id="detailsContent" layoutX="14.0" layoutY="287.0" prefHeight="255.0" prefWidth="277.0" />
-              <Label fx:id="deleteMovieButton" layoutX="-14.0" layoutY="528.0" text="Delete" textFill="#9f9f9f" AnchorPane.bottomAnchor="14.0" AnchorPane.rightAnchor="14.0">
+              <Label fx:id="deleteMovieButton" layoutX="-14.0" layoutY="528.0" onMouseClicked="#openDeleteForm" text="Delete" textFill="#9f9f9f" AnchorPane.bottomAnchor="14.0" AnchorPane.rightAnchor="14.0">
                  <font>
                     <Font size="16.0" />
                  </font>

+ 72 - 0
src/main/resources/DeleteWindow.fxml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.*?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.layout.*?>
+<?import javafx.scene.text.*?>
+<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="0.0" prefHeight="151.0" prefWidth="380.0" stylesheets="@AddMovieWindowStyle.css" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.moviesdb.DeleteController">
+   <right>
+      <Pane fx:id="borderRight" maxWidth="5.0" prefHeight="520.0" prefWidth="230.0" style="-fx-background-color: #121212;" BorderPane.alignment="CENTER" />
+   </right>
+   <bottom>
+      <Pane fx:id="borderBottom" prefHeight="5.0" prefWidth="755.0" style="-fx-background-color: #121212;" BorderPane.alignment="CENTER" />
+   </bottom>
+   <center>
+      <AnchorPane minHeight="0.0" minWidth="0.0" style="-fx-background-color: #212121;" BorderPane.alignment="CENTER">
+         <Label layoutX="113.0" layoutY="26.0" text="Are you sure?" textFill="#9f9f9f" AnchorPane.leftAnchor="113.0" AnchorPane.topAnchor="26.0">
+            <font>
+               <Font size="24.0" />
+            </font>
+        	</Label>
+         <HBox layoutY="64.0" maxHeight="25.0" prefHeight="13.0" prefWidth="342.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0">
+            <children>
+               <AnchorPane prefHeight="13.0" prefWidth="171.0" HBox.hgrow="ALWAYS">
+                  <children>
+                     <Label fx:id="cancelButton" onMouseClicked="#cancelDeletion" alignment="CENTER" text="Cancel" textFill="#9f9f9f" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
+                        <font>
+                           <Font name="System Bold" size="16.0" />
+                        </font>
+                     </Label>
+                  </children>
+               </AnchorPane>
+               <AnchorPane prefHeight="23.0" prefWidth="171.0" HBox.hgrow="ALWAYS">
+                  <children>
+                     <Label fx:id="deleteButton" onMouseClicked="#confirmDeletion" alignment="CENTER" prefHeight="25.0" prefWidth="96.0" text="Delete" textFill="#9f9f9f" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
+                        <font>
+                           <Font name="System Bold" size="16.0" />
+                        </font>
+                     </Label>
+                  </children>
+               </AnchorPane>
+            </children>
+            <cursor>
+               <Cursor fx:constant="DEFAULT" />
+            </cursor>
+         </HBox>
+		</AnchorPane>
+   </center>
+   <left>
+      <Pane fx:id="borderLeft" maxWidth="5.0" prefWidth="10.0" style="-fx-background-color: #121212;" BorderPane.alignment="CENTER" />
+   </left>
+   <top>
+      <AnchorPane fx:id="borderTop" maxHeight="24.0" prefHeight="24.0" style="-fx-background-color: #121212;" BorderPane.alignment="CENTER">
+         <children>
+   	  	   		<Label fx:id="closeButton" disable="true" onMouseClicked="#closeStage" prefHeight="16.0" prefWidth="16.0" visible="false" AnchorPane.bottomAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="4.0">
+   	  		      <font>
+   	  		          <Font name="Arimo" size="12.0" />
+   	  		      </font>
+   	  		    </Label>
+   		    <Label fx:id="minimizeButton" disable="true" onMouseClicked="#minimizeStage" prefHeight="16.0" prefWidth="16.0" visible="false" AnchorPane.bottomAnchor="4.0" AnchorPane.rightAnchor="24.0" AnchorPane.topAnchor="4.0">
+   		        <font>
+   		            <Font name="Arimo" size="12.0" />
+   		        </font>
+   		    </Label>
+            <Label layoutX="10.0" layoutY="2.0" text="Delete confirmation" textFill="#9f9f9f" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="2.0">
+               <font>
+                  <Font size="14.0" />
+               </font>
+            </Label>
+         </children>
+      </AnchorPane>
+   </top>
+</BorderPane>