Browse Source

removed floating in Edit

toomanysugar 4 years ago
parent
commit
12fbd10148

+ 0 - 2
JavaFxApplication.iml

@@ -80,7 +80,5 @@
     <orderEntry type="library" name="Maven: javax.inject:javax.inject:1" level="project" />
     <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-component-annotations:1.7.1" level="project" />
     <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.jna:jna:3.0.9" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.jna:platform:1.0.0" level="project" />
   </component>
 </module>

+ 9 - 5
src/main/java/com/moviesdb/BrowserController.java

@@ -612,7 +612,7 @@ public class BrowserController extends Controller {
             Parent root = loader.load();
             editWindow = loader.getController();
             editWindow.stage = new Stage();
-            editWindow.stage.setScene(new Scene(root, 629, 561));
+            editWindow.stage.setScene(new Scene(root, 629, 700));
             editWindow.stage.initStyle(StageStyle.UNDECORATED);
             editWindow.stage.setMinWidth(629); //+16
             editWindow.stage.setMinHeight(561); //+31+16
@@ -634,8 +634,10 @@ public class BrowserController extends Controller {
             Parent root = loader.load();
             statsWindow = loader.getController();
             statsWindow.stage = new Stage();
-            statsWindow.stage.setScene(new Scene(root, 500, 500));
-            //editWindow.stage.initStyle(StageStyle.UNDECORATED);
+            statsWindow.stage.setScene(new Scene(root, 629, 561));
+            statsWindow.stage.initStyle(StageStyle.UNDECORATED);
+            statsWindow.stage.setMinWidth(629); //+16
+            statsWindow.stage.setMinHeight(561);
             statsWindow.stage.setUserData(loader);
             statsWindow.openGenre(this);
 
@@ -652,8 +654,10 @@ public class BrowserController extends Controller {
             Parent root = loader.load();
             statsWindow = loader.getController();
             statsWindow.stage = new Stage();
-            statsWindow.stage.setScene(new Scene(root, 500, 500));
-           // editWindow.stage.initStyle(StageStyle.UNDECORATED);
+            statsWindow.stage.setScene(new Scene(root, 629, 561));
+            statsWindow.stage.initStyle(StageStyle.UNDECORATED);
+            statsWindow.stage.setMinWidth(629); //+16
+            statsWindow.stage.setMinHeight(561);
             statsWindow.stage.setUserData(loader);
             statsWindow.openStudio(this);
 

+ 178 - 0
src/main/java/com/moviesdb/Controller.java

@@ -1,9 +1,12 @@
 package com.moviesdb;
 
+import javafx.event.EventHandler;
 import javafx.fxml.FXML;
 import javafx.scene.control.*;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.Pane;
 import javafx.stage.Stage;
 
 import java.util.Objects;
@@ -20,8 +23,30 @@ public class Controller {
     @FXML
     Label closeButton;
 
+    @FXML
+    Pane borderRight;
+    @FXML
+    Pane cornerBottomRight;
+    @FXML
+    Pane borderBottom;
+    @FXML
+    Pane cornerBottomLeft;
+    @FXML
+    Pane borderLeft;
+
+    @FXML
+    Label borderTopTitle;
+
+    @FXML
+    Pane borderTop;
+
     public Stage stage;
 
+    double xOffset;
+    double yOffset;
+    double basePos;
+    double baseWidth;
+
 
     public void prepare() {
         setWindowControlImage(minimizeButton, "../../media\\minimize.png");
@@ -56,4 +81,157 @@ public class Controller {
             e.printStackTrace();
         }
     }
+
+    protected void initStandardWindowDecoratorsEvents(){
+        initRightBorderResize();
+        initBottomRightCornerResize();
+        initBottomBorderResize();
+        initBottomLeftCornerResize();
+        initLeftBorderResize();
+        initTopBorderDrag();
+    }
+
+    protected void initRightBorderResize(){
+        if (!Objects.isNull(borderRight)){
+            borderRight.setOnMousePressed(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    xOffset = stage.getWidth() - event.getScreenX();
+                }
+            });
+
+            borderRight.setOnMouseDragged(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    if (event.getScreenX() + xOffset >= stage.getMinWidth())
+                        stage.setWidth(event.getScreenX() + xOffset);
+                    else
+                        stage.setWidth(stage.getMinWidth());
+                }
+            });
+        } else {
+            System.out.println("Element bot found!");
+        }
+    }
+
+    protected void initBottomRightCornerResize() {
+        if (!Objects.isNull(cornerBottomRight)) {
+            cornerBottomRight.setOnMousePressed(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    xOffset = stage.getWidth() - event.getScreenX();
+                    yOffset = stage.getHeight() - event.getScreenY();
+                }
+            });
+
+            cornerBottomRight.setOnMouseDragged(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    if (event.getScreenX() + xOffset >= stage.getMinWidth())
+                        stage.setWidth(event.getScreenX() + xOffset);
+                    else
+                        stage.setWidth(stage.getMinWidth());
+                    if (event.getScreenY() + yOffset >= stage.getMinHeight())
+                        stage.setHeight(event.getScreenY() + yOffset);
+                    else
+                        stage.setHeight(stage.getMinHeight());
+                }
+            });
+        }
+    }
+
+    protected void initBottomBorderResize(){
+        if (!Objects.isNull(borderBottom)) {
+            borderBottom.setOnMousePressed(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    yOffset = stage.getHeight() - event.getScreenY();
+                }
+            });
+
+            borderBottom.setOnMouseDragged(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    if (event.getScreenY() + yOffset >= stage.getMinHeight())
+                        stage.setHeight(event.getScreenY() + yOffset);
+                    else
+                        stage.setHeight(stage.getMinHeight());
+                }
+            });
+        }
+    }
+
+    protected void initBottomLeftCornerResize(){
+        if (!Objects.isNull(cornerBottomLeft)) {
+            cornerBottomLeft.setOnMousePressed(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    xOffset = stage.getWidth() + event.getScreenX();
+                    yOffset = stage.getHeight() - event.getScreenY();
+                    basePos = event.getScreenX();
+                    baseWidth = stage.getWidth();
+                }
+            });
+
+            cornerBottomLeft.setOnMouseDragged(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    if ((xOffset - event.getScreenX()) >= stage.getMinWidth()) {
+                        stage.setWidth(xOffset - event.getScreenX());
+                        stage.setX(event.getScreenX());
+                    } else {
+                        stage.setX(xOffset - stage.getMinWidth());
+                        stage.setWidth(stage.getMinWidth());
+                    }
+                    if (event.getScreenY() + yOffset >= stage.getMinHeight())
+                        stage.setHeight(event.getScreenY() + yOffset);
+                    else
+                        stage.setHeight(stage.getMinHeight());
+                }
+            });
+        }
+    }
+
+    protected void initLeftBorderResize(){
+        if (!Objects.isNull(borderLeft)) {
+            borderLeft.setOnMousePressed(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    xOffset = stage.getWidth() + event.getScreenX();
+                    basePos = event.getScreenX();
+                    baseWidth = stage.getWidth();
+                }
+            });
+
+            borderLeft.setOnMouseDragged(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent event) {
+                    if ((xOffset - event.getScreenX()) >= stage.getMinWidth()) {
+                        stage.setWidth(xOffset - event.getScreenX());
+                        stage.setX(event.getScreenX());
+                    } else {
+                        stage.setX(xOffset - stage.getMinWidth());
+                        stage.setWidth(stage.getMinWidth());
+                    }
+                }
+            });
+        }
+    }
+
+    protected void initTopBorderDrag(){
+
+        borderTop.setOnMousePressed(pressEvent -> {
+            borderTop.setOnMouseDragged(dragEvent -> {
+                stage.setX(dragEvent.getScreenX() - pressEvent.getSceneX());
+                stage.setY(dragEvent.getScreenY() - pressEvent.getSceneY());
+            });
+        });
+    }
+
+    protected void windowSetTitle(String titleText){
+        if (!Objects.isNull(borderTopTitle)) {
+            borderTopTitle.setText(titleText);
+            stage.setTitle("Stats");
+        }
+    }
 }

+ 50 - 16
src/main/java/com/moviesdb/GenreStatisticsController.java

@@ -1,29 +1,37 @@
 package com.moviesdb;
 
-import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
-import javafx.event.EventHandler;
 import javafx.fxml.FXML;
+import javafx.scene.Group;
+import javafx.scene.Scene;
 import javafx.scene.chart.PieChart;
 import javafx.scene.control.Label;
-import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.AnchorPane;
 import javafx.scene.paint.Color;
+import javafx.scene.text.Font;
 import javafx.scene.text.Text;
+import javafx.scene.text.TextAlignment;
 import javafx.scene.text.TextFlow;
 
+import javax.security.auth.callback.LanguageCallback;
+
 public class GenreStatisticsController extends Controller {
 
+
     @FXML
     PieChart genrePie;
     @FXML
     TextFlow statsTextBox;
 
-    public void openGenre(Object caller)
-    {
+    public void openGenre(Object caller) {
         //getStats
         //get num of films
 
-        stage.setTitle("Stats");
+        prepare();
+
+        initStandardWindowDecoratorsEvents();
+
+        windowSetTitle("Genre Statistics");
         stage.show();
 
         ObservableList<PieChart.Data> list = ((BrowserController) caller).my_connector.getGenreStats();
@@ -31,24 +39,41 @@ public class GenreStatisticsController extends Controller {
         genrePie.setData(list);
         genrePie.setTitle("Genre Statistics");
 
+
         String textValue = new String();
 
-        for (PieChart.Data sector:
-             list) {
-            textValue += sector.getName() + ": " + sector.getPieValue() + "\n";
+        for (PieChart.Data sector :
+                list) {
+            if (textValue.length() > 0)
+                textValue = textValue.concat("\n");
+            String countPrefix;
+            if (sector.getPieValue() != 1) {
+                countPrefix = "Films";
+            }
+            else
+                countPrefix = "Film";
+            textValue = textValue.concat(sector.getName() + ":   " + (int)sector.getPieValue() + " " + countPrefix);
         }
 
         Text text = new Text(textValue);
         statsTextBox.getChildren().add(text);
 
+
+        text.setFill(Color.rgb(159,159,159));
+        text.setFont(new Font(16));
+
+
     }
 
-    public void openStudio(Object caller)
-    {
+    public void openStudio(Object caller) {
         //getStats
         //get num of films
 
-        stage.setTitle("Stats");
+        prepare();
+
+        initStandardWindowDecoratorsEvents();
+
+        windowSetTitle("Studio Statistics");
         stage.show();
 
         ObservableList<PieChart.Data> list = ((BrowserController) caller).my_connector.getStudioStats();
@@ -58,13 +83,22 @@ public class GenreStatisticsController extends Controller {
 
         String textValue = new String();
 
-        for (PieChart.Data sector:
+        for (PieChart.Data sector :
                 list) {
-            textValue += sector.getName() + ": " + sector.getPieValue() + "\n";
+            if (textValue.length() > 0)
+                textValue = textValue.concat("\n");
+            String countPrefix;
+            if (sector.getPieValue() != 1) {
+                countPrefix = "Films";
+            }
+            else
+                countPrefix = "Film";
+            textValue = textValue.concat(sector.getName() + ":   " + (int)sector.getPieValue() + " " + countPrefix);
         }
 
         Text text = new Text(textValue);
-        statsTextBox.getChildren().add(text);
-
+        text.setFill(Color.rgb(159,159,159));
+        text.setFont(new Font(16));
+        statsTextBox.getChildren().add((Text)text);
     }
 }

+ 86 - 10
src/main/resources/GenreStatisticsWindow.fxml

@@ -1,21 +1,97 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<?import javafx.scene.Cursor?>
 <?import javafx.scene.chart.PieChart?>
+<?import javafx.scene.control.Label?>
 <?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.Pane?>
 <?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
 <?import javafx.scene.text.TextFlow?>
 
-<VBox maxHeight="1.7976931348623157E308" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="516.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.moviesdb.GenreStatisticsController">
-   <children>
-      <AnchorPane minHeight="20.0" prefHeight="20.0" prefWidth="200.0" />
-      <AnchorPane prefHeight="385.0" prefWidth="600.0">
+<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="0.0" prefHeight="553.0" prefWidth="616.0" stylesheets="@AddMovieWindowStyle.css" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.moviesdb.GenreStatisticsController">
+   <right>
+      <Pane fx:id="borderRight" maxWidth="5.0" prefHeight="520.0" prefWidth="230.0" style="-fx-background-color: #121212;" BorderPane.alignment="CENTER">
+         <cursor>
+            <Cursor fx:constant="E_RESIZE" />
+         </cursor></Pane>
+   </right>
+   <bottom>
+      <AnchorPane>
+         <Pane fx:id="cornerBottomLeft" maxHeight="5.0" maxWidth="5.0" minHeight="5.0" minWidth="5.0" prefHeight="5.0" prefWidth="5.0" style="-fx-background-color: #121212;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0">
+            <cursor>
+               <Cursor fx:constant="NE_RESIZE" />
+            </cursor>
+         </Pane>
+         <Pane fx:id="borderBottom" prefHeight="5.0" prefWidth="745.0" style="-fx-background-color: #121212;" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" BorderPane.alignment="CENTER">
+            <cursor>
+               <Cursor fx:constant="S_RESIZE" />
+            </cursor></Pane>
+         <Pane fx:id="cornerBottomRight" maxHeight="5.0" maxWidth="5.0" minHeight="5.0" minWidth="5.0" prefHeight="5.0" prefWidth="5.0" style="-fx-background-color: #121212;" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <cursor>
+               <Cursor fx:constant="SE_RESIZE" />
+            </cursor>
+         </Pane>
+         <cursor>
+            <Cursor fx:constant="DEFAULT" />
+         </cursor>
+      </AnchorPane>
+   </bottom>
+   <left>
+      <Pane fx:id="borderLeft" maxWidth="5.0" prefWidth="10.0" style="-fx-background-color: #121212;" BorderPane.alignment="CENTER">
+         <cursor>
+            <Cursor fx:constant="W_RESIZE" />
+         </cursor></Pane>
+   </left>
+   <top>
+      <AnchorPane fx:id="borderTop" maxHeight="24.0" prefHeight="24.0" style="-fx-background-color: #121212;" BorderPane.alignment="CENTER">
          <children>
-            <PieChart fx:id="genrePie" layoutX="50.0" prefHeight="250.0" prefWidth="600.0" style="-fx-max-height: 600; -fx-max-width: 600;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+            <Label fx:id="closeButton" onMouseClicked="#closeStage" prefHeight="16.0" prefWidth="16.0" 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" onMouseClicked="#minimizeStage" prefHeight="16.0" prefWidth="16.0" AnchorPane.bottomAnchor="4.0" AnchorPane.rightAnchor="24.0" AnchorPane.topAnchor="4.0">
+               <font>
+                  <Font name="Arimo" size="12.0" />
+               </font>
+            </Label>
+            <Label fx:id="borderTopTitle" layoutX="10.0" layoutY="2.0" text="Title" textFill="#9f9f9f" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="2.0">
+               <font>
+                  <Font size="14.0" />
+               </font>
+            </Label>
          </children>
+         <cursor>
+            <Cursor fx:constant="DEFAULT" />
+         </cursor>
       </AnchorPane>
-      <AnchorPane maxHeight="1.7976931348623157E308" minHeight="20.0" prefHeight="111.0" prefWidth="600.0">
+   </top>
+   <center>
+      <AnchorPane prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: #212121;" BorderPane.alignment="CENTER">
          <children>
-            <TextFlow fx:id="statsTextBox" prefHeight="111.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
-         </children></AnchorPane>
-   </children>
-</VBox>
+            <VBox style="-fx-background-color: transparent;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+               <AnchorPane minHeight="20.0" prefHeight="20.0" prefWidth="200.0" style="-fx-background-color: transparent;" />
+               <AnchorPane prefHeight="385.0" prefWidth="600.0" style="-fx-background-color: transparent;" VBox.vgrow="ALWAYS">
+                  <children>
+                     <PieChart fx:id="genrePie" layoutX="50.0" prefHeight="250.0" prefWidth="600.0" style="-fx-max-height: 600; -fx-max-width: 600;" stylesheets="@PieChartStyle.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+                  </children>
+               </AnchorPane>
+               <AnchorPane prefHeight="120.0">
+                  <children>
+                     <HBox prefHeight="100.0" prefWidth="200.0" AnchorPane.bottomAnchor="17.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
+                        <children>
+                           <Pane prefHeight="200.0" prefWidth="200.0" HBox.hgrow="ALWAYS" />
+                           <TextFlow fx:id="statsTextBox" prefHeight="111.0" prefWidth="200.0" style="-fx-text-fill: #9F9F9F;" />
+                           <Pane prefHeight="200.0" prefWidth="200.0" HBox.hgrow="ALWAYS" />
+                        </children>
+                     </HBox>
+                  </children></AnchorPane>
+               <Pane maxHeight="5.0" minHeight="5.0" prefHeight="5.0" prefWidth="200.0" VBox.vgrow="NEVER" />
+            </VBox>
+         </children>
+      </AnchorPane>
+   </center>
+</BorderPane>