|
@@ -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");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|