/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package hoteldraft; import com.sun.scenario.Settings; import java.awt.event.MouseEvent; import java.io.IOException; import java.net.URL; import javafx.util.Duration; import static java.util.Collections.rotate; import java.util.List; import java.util.ResourceBundle; import javafx.animation.Animation; import javafx.animation.RotateTransition; import javafx.animation.Transition; import javafx.application.Platform; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.effect.Blend; import javafx.scene.effect.BlendMode; import javafx.scene.effect.ColorAdjust; import javafx.scene.effect.ColorInput; import javafx.scene.effect.Light; import javafx.scene.effect.Lighting; import javafx.scene.image.ImageView; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.layout.BorderPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import static javafx.scene.paint.Color.rgb; import javafx.scene.text.Font; import javafx.scene.text.Text; import static javafx.scene.transform.Transform.rotate; import javafx.stage.Stage; import javafx.stage.StageStyle; import org.hibernate.Query; import org.hibernate.Session; /** * * @author Hala */ public class HomeController implements Initializable { private Stage stage; private Scene scene; private Parent root; private double xOffSet = 0; private double yOffSet = 0; static public String hotelNameOriginal="Grand Beach Hotel"; @FXML private VBox navVBox; @FXML private Button loginBtn; @FXML private TextField IDTextfield; @FXML private TextField passwordTextfield; @FXML private Label loginError; @FXML private Text hotelName; @FXML private Label exit; @FXML private BorderPane parent; @FXML private ImageView settingsImg; @FXML private Pane pane; @FXML private Label minimize; @FXML private Button settingsImgBtn; @Override public void initialize(URL location, ResourceBundle resources) { hotelName.setText("Welcome to "+hotelNameOriginal); loginError.setOpacity(0); Lighting lighting = new Lighting(new Light.Distant(45, 90, rgb(43, 88, 114))); ColorAdjust bright = new ColorAdjust(0, 1, 1, 1); lighting.setContentInput(bright); lighting.setSurfaceScale(0.0); settingsImg.setEffect(lighting); settingsImg.setDisable(true); navVBox.setDisable(true); IDTextfield.textProperty().addListener(new ChangeListener<String>() { public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (!newValue.matches("\\d*")) { IDTextfield.setText(newValue.replaceAll("[^\\d]", "")); } } }); RotateTransition rotation = new RotateTransition(Duration.millis(1000),settingsImgBtn); rotation.setCycleCount(Animation.INDEFINITE); rotation.setByAngle(180); settingsImgBtn.setOnMouseEntered(e -> rotation.play()); settingsImgBtn.setOnMouseExited(e -> rotation.pause()); } public static String getHotelNameOriginal() { return hotelNameOriginal; } public static void setHotelNameOriginal(String hotelNameOriginal) { HomeController.hotelNameOriginal = hotelNameOriginal; } @FXML private void logIn(ActionEvent event) throws IOException { Session session = HibernateUtil.getSessionFactory().openSession(); String HQL = "from Employees"; Query q = session.createQuery(HQL); List<Employees> empList = q.list(); for (Employees emp : empList) { if (IDTextfield.getText().isEmpty() || passwordTextfield.getText().isEmpty()) { loginError.setText(" No input was found."); loginError.setOpacity(1); } else if (emp.getEmployeeID() == Integer.parseInt(IDTextfield.getText()) && emp.getEmployeePass().equals(passwordTextfield.getText())) { String empName = emp.getEmployeeName(); FXMLLoader loader = new FXMLLoader(getClass().getResource("LoggedIn.fxml")); root = loader.load(); root.setOnMousePressed((e) -> { xOffSet = e.getSceneX(); yOffSet = e.getSceneY(); }); root.setOnMouseDragged((e) -> { stage.setX(e.getScreenX() - xOffSet); stage.setY(e.getScreenY() - yOffSet); });/**/ LoggedInController loggedInSceneController = loader.getController(); loggedInSceneController.greetingTextName(empName); stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } else { loginError.setText(" Incorrect ID or password."); loginError.setOpacity(1); } } } @FXML private void enterLogin(KeyEvent event) throws IOException { if (event.getCode() == KeyCode.ENTER) { Session session = HibernateUtil.getSessionFactory().openSession(); String HQL = "from Employees"; Query q = session.createQuery(HQL); List<Employees> empList = q.list(); for (Employees emp : empList) { if (IDTextfield.getText().isEmpty() || passwordTextfield.getText().isEmpty()) { loginError.setText(" No input was found."); loginError.setOpacity(1); } else if (emp.getEmployeeID() == Integer.parseInt(IDTextfield.getText()) && emp.getEmployeePass().equals(passwordTextfield.getText())) { String empName = emp.getEmployeeName(); FXMLLoader loader = new FXMLLoader(getClass().getResource("LoggedIn.fxml")); root = loader.load(); root.setOnMousePressed((e) -> { xOffSet = e.getSceneX(); yOffSet = e.getSceneY(); }); root.setOnMouseDragged((e) -> { stage.setX(e.getScreenX() - xOffSet); stage.setY(e.getScreenY() - yOffSet); }); LoggedInController loggedInSceneController = loader.getController(); loggedInSceneController.greetingTextName(empName); stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } else { loginError.setText(" Incorrect ID or password."); loginError.setOpacity(1); } } } } //Methods to close and minimize window. @FXML private void close_app(javafx.scene.input.MouseEvent event) { System.exit(0); } @FXML private void minimize_app(javafx.scene.input.MouseEvent event) { stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); stage.setIconified(true); } /*---------------------class switching events---------------------*/ @FXML private void switchToReservations(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Reservations.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } private void switchToNewReservation(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("NewReservation.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML private void switchToLoggedIn(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("LoggedIn.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.initStyle(StageStyle.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML private void switchToRooms(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Rooms.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML private void switchToServices(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Services.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML private void switchToSearch(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Search.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML private void switchToSettings(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Settings.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } }