From a2035a84862395d0013e307a59d37e8182cb4f8c Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Tue, 6 Feb 2024 03:28:24 +0100 Subject: [PATCH] Clean initial --- .gitignore | 28 ++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 55616 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 188 +++++++++++++++++++++++ gradlew.bat | 100 ++++++++++++ src/main/java/datamodel/CurrentUser.java | 63 ++++++++ src/main/java/datamodel/Database.java | 88 +++++++++++ src/main/java/datamodel/Reservation.java | 38 +++++ src/main/java/datamodel/Show.java | 39 +++++ src/main/java/gui/App.java | 12 ++ src/main/java/gui/BookingTab.java | 146 ++++++++++++++++++ src/main/java/gui/LoginTab.java | 71 +++++++++ src/main/java/gui/MainApplication.java | 65 ++++++++ src/main/java/gui/ReservationsTab.java | 64 ++++++++ src/main/java/gui/TopTabView.java | 40 +++++ src/main/resources/application.css | 77 ++++++++++ src/main/resources/background.jpg | Bin 0 -> 52308 bytes src/main/resources/bookingTab.fxml | 95 ++++++++++++ src/main/resources/loginTab.fxml | 34 ++++ src/main/resources/reservationsTab.fxml | 17 ++ src/main/resources/topTab.fxml | 23 +++ 21 files changed, 1193 insertions(+) create mode 100644 .gitignore create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100755 src/main/java/datamodel/CurrentUser.java create mode 100755 src/main/java/datamodel/Database.java create mode 100644 src/main/java/datamodel/Reservation.java create mode 100755 src/main/java/datamodel/Show.java create mode 100644 src/main/java/gui/App.java create mode 100755 src/main/java/gui/BookingTab.java create mode 100755 src/main/java/gui/LoginTab.java create mode 100755 src/main/java/gui/MainApplication.java create mode 100644 src/main/java/gui/ReservationsTab.java create mode 100755 src/main/java/gui/TopTabView.java create mode 100755 src/main/resources/application.css create mode 100755 src/main/resources/background.jpg create mode 100755 src/main/resources/bookingTab.fxml create mode 100755 src/main/resources/loginTab.fxml create mode 100644 src/main/resources/reservationsTab.fxml create mode 100755 src/main/resources/topTab.fxml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b0d508d --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build + +*.gradle + +**/build/ +!src/**/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Avoid ignore Gradle wrappper properties +!gradle-wrapper.properties + +# Cache of project +.gradletasknamecache + +# Eclipse Gradle plugin generated files +# Eclipse Core +.project +# JDT-specific (Eclipse Java Development Tools) +.classpath.class diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..5c2d1cf016b3885f6930543d57b744ea8c220a1a GIT binary patch literal 55616 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..15e1ee3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/datamodel/CurrentUser.java b/src/main/java/datamodel/CurrentUser.java new file mode 100755 index 0000000..a942888 --- /dev/null +++ b/src/main/java/datamodel/CurrentUser.java @@ -0,0 +1,63 @@ +package datamodel; + +/** + * CurrentUser represents the current user that has logged on to + * the movie booking system. It is a singleton class. + */ +public class CurrentUser { + /** + * The single instance of this class + */ + private static CurrentUser instance; + + /** + * The name of the current user. + */ + private String currentUserId; + + /** + * Create a CurrentUser object. + */ + private CurrentUser() { + currentUserId = null; + } + + /** + * Returns the single instance of this class. + * + * @return The single instance of the class. + */ + public static CurrentUser instance() { + if (instance == null) + instance = new CurrentUser(); + return instance; + } + + /** + * Check if a user has logged in. + * + * @return true if a user has logged in, false otherwise. + */ + public boolean isLoggedIn() { + return currentUserId != null; + } + + /** + * Get the user id of the current user. Should only be called if + * a user has logged in. + * + * @return The user id of the current user. + */ + public String getCurrentUserId() { + return currentUserId == null ? "" : currentUserId; + } + + /** + * A new user logs in. + * + * @param userId The user id of the new user. + */ + public void loginAs(String userId) { + currentUserId = userId; + } +} diff --git a/src/main/java/datamodel/Database.java b/src/main/java/datamodel/Database.java new file mode 100755 index 0000000..f619557 --- /dev/null +++ b/src/main/java/datamodel/Database.java @@ -0,0 +1,88 @@ +package datamodel; + +import java.sql.*; +/** + * Database is a class that specifies the interface to the + * movie database. Uses JDBC and the MySQL Connector/J driver. + */ +public class Database { + /** + * The database connection. + */ + private Connection conn; + + /** + * Create the database interface object. Connection to the database + * is performed later. + */ + public Database() { + conn = null; + } + + /* --- TODO: Change this method to fit your choice of DBMS --- */ + /** + * Open a connection to the database, using the specified user name + * and password. + * + * @param userName The user name. + * @param password The user's password. + * @return true if the connection succeeded, false if the supplied + * user name and password were not recognized. Returns false also + * if the JDBC driver isn't found. + */ + public boolean openConnection(String userName, String password) { + try { + // Connection strings for included DBMS clients: + // [MySQL] jdbc:mysql://[host]/[database] + // [PostgreSQL] jdbc:postgresql://[host]/[database] + // [SQLite] jdbc:sqlite://[filepath] + + // Use "jdbc:mysql://puccini.cs.lth.se/" + userName if you using our shared server + // If outside, this statement will hang until timeout. + conn = DriverManager.getConnection + ("jdbc:sqlite:movieBookings.db3", userName, password); + } + catch (SQLException e) { + System.err.println(e); + e.printStackTrace(); + return false; + } + return true; + } + + /** + * Close the connection to the database. + */ + public void closeConnection() { + try { + if (conn != null) + conn.close(); + } + catch (SQLException e) { + e.printStackTrace(); + } + conn = null; + + System.err.println("Database connection closed."); + } + + /** + * Check if the connection to the database has been established + * + * @return true if the connection has been established + */ + public boolean isConnected() { + return conn != null; + } + + public Show getShowData(String mTitle, String mDate) { + Integer mFreeSeats = 42; + String mVenue = "Kino 2"; + + /* --- TODO: add code for database query --- */ + + return new Show(mTitle, mDate, mVenue, mFreeSeats); + } + + /* --- TODO: insert more own code here --- */ +} diff --git a/src/main/java/datamodel/Reservation.java b/src/main/java/datamodel/Reservation.java new file mode 100644 index 0000000..85d8fe1 --- /dev/null +++ b/src/main/java/datamodel/Reservation.java @@ -0,0 +1,38 @@ +package datamodel; + +// Container for the booking data +public class Reservation { + private int bookingId; + private String movieTitle; + private String performanceDate; + private String theatreName; + + public Reservation() { + this(-1, "N/A", "N/A", "N/A"); + } + + // constructor + public Reservation(int bookingId, String movieTitle, String performanceDate, String theatreName) { + this.bookingId = bookingId; + this.movieTitle = movieTitle; + this.performanceDate = performanceDate; + this.theatreName = theatreName; + } + + // getters + public int getBookingId() { + return bookingId; + } + + public String getMovieTitle() { + return movieTitle; + } + + public String getPerformanceDate() { + return performanceDate; + } + + public String getTheatreName() { + return theatreName; + } +} diff --git a/src/main/java/datamodel/Show.java b/src/main/java/datamodel/Show.java new file mode 100755 index 0000000..25be463 --- /dev/null +++ b/src/main/java/datamodel/Show.java @@ -0,0 +1,39 @@ +package datamodel; + +// Container for the database data +/* --- TODO: Modify as needed --- */ + +public class Show { + // attributes associated with database columns + private String title; + private String date; + private String venue; + private Integer freeSeats; + + // constructor for "no show" + public Show() { + init("","","",-1); + } + + // constructor defining all content + public Show(String t, String d, String v, Integer fs) { + init(t,d,v,fs); + } + + // constructor defining only the title + public Show(String t) { + init(t,"","",-1); + } + + // all constructors use this + private void init(String t, String d, String v, Integer fs) { + title = t; date = d; venue = v; freeSeats = fs; + } + + // getters + public String getTitle() { return title; } + public String getDate() { return date; } + public String getVenue() { return venue; } + public Integer getSeats() { return freeSeats; } + +} diff --git a/src/main/java/gui/App.java b/src/main/java/gui/App.java new file mode 100644 index 0000000..1f0e9ad --- /dev/null +++ b/src/main/java/gui/App.java @@ -0,0 +1,12 @@ +package gui; + +import javafx.application.Application; + +/** + * The application entry-point, the location of the primary main function. + */ +public class App { + public static void main(String[] args) { + Application.launch(MainApplication.class, args); + } +} diff --git a/src/main/java/gui/BookingTab.java b/src/main/java/gui/BookingTab.java new file mode 100755 index 0000000..1fd41cc --- /dev/null +++ b/src/main/java/gui/BookingTab.java @@ -0,0 +1,146 @@ +package gui; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.control.ListView; +import javafx.scene.control.Button; +import javafx.scene.text.Text; + +import java.util.List; + +import datamodel.CurrentUser; +import datamodel.Database; +import datamodel.Show; + +import java.util.ArrayList; + + +public class BookingTab { + // top context message + @FXML private Text topContext; + // bottom message + @FXML private Text bookMsg; + + // table references + @FXML private ListView moviesList; + @FXML private ListView datesList; + + // show info references + @FXML private Label showTitle; + @FXML private Label showDate; + @FXML private Label showVenue; + @FXML private Label showFreeSeats; + + // booking button + @FXML private Button bookTicket; + + private Database db; + private Show crtShow = new Show(); + + public void initialize() { + System.out.println("Initializing BookingTab"); + + // set up listeners for the movie list selection + moviesList.getSelectionModel().selectedItemProperty().addListener( + (obs, oldV, newV) -> { + // need to update the date list according to the selected movie + // update also the details on the right panel + String movie = newV; + fillDatesList(newV); + fillShow(movie,null); + }); + + // set up listeners for the date list selection + datesList.getSelectionModel().selectedItemProperty().addListener( + (obs, oldV, newV) -> { + // need to update the details according to the selected date + String movie = moviesList.getSelectionModel().getSelectedItem(); + String date = newV; + fillShow(movie, date); + }); + + // set up booking button listener + // one can either use this method (setup a handler in initialize) + // or directly give a handler name in the fxml, as in the LoginTab class + bookTicket.setOnAction( + (event) -> { + String movie = moviesList.getSelectionModel().getSelectedItem(); + String date = datesList.getSelectionModel().getSelectedItem(); + /* --- TODO: should attempt to book a ticket via the database --- */ + /* --- do not forget to report booking number! --- */ + /* --- update the displayed details (free seats) --- */ + report("Booked one ticket to "+movie+" on "+date); + }); + + report("Ready."); + } + + // helpers + // updates user display + private void fillStatus(String usr) { + if(usr.isEmpty()) topContext.setText("You must log in as a known user!"); + else topContext.setText("Currently logged in as " + usr); + } + + private void report(String msg) { + bookMsg.setText(msg); + } + + public void setDatabase(Database db) { + this.db = db; + } + + private void fillNamesList() { + List allmovies = new ArrayList(); + + // query the database via db + /* --- TODO: replace with own code --- */ + allmovies.add("Pulp Fiction"); + allmovies.add("The Big Lebowski"); + allmovies.add("Whiplash"); + /* --- END TODO --- */ + + moviesList.setItems(FXCollections.observableList(allmovies)); + // remove any selection + moviesList.getSelectionModel().clearSelection(); + } + + private void fillDatesList(String m) { + List alldates = new ArrayList(); + if(m!=null) { + // query the database via db + /* --- TODO: replace with own code --- */ + alldates.add("2016-02-01"); + alldates.add("2016-01-15"); + /* --- END TODO --- */ + } + datesList.setItems(FXCollections.observableList(alldates)); + // remove any selection + datesList.getSelectionModel().clearSelection(); + } + + private void fillShow(String movie, String date) { + if(movie==null) // no movie selected + crtShow = new Show(); + else if(date==null) // no date selected yet + crtShow = new Show(movie); + else // query the database via db + crtShow = db.getShowData(movie, date); + + showTitle.setText(crtShow.getTitle()); + showDate.setText(crtShow.getDate()); + showVenue.setText(crtShow.getVenue()); + if(crtShow.getSeats() >= 0) showFreeSeats.setText(crtShow.getSeats().toString()); + else showFreeSeats.setText("-"); + } + + // called in case the user logged in changed + public void userChanged() { + fillStatus(CurrentUser.instance().getCurrentUserId()); + fillNamesList(); + fillDatesList(null); + fillShow(null,null); + } + +} diff --git a/src/main/java/gui/LoginTab.java b/src/main/java/gui/LoginTab.java new file mode 100755 index 0000000..a1da2e7 --- /dev/null +++ b/src/main/java/gui/LoginTab.java @@ -0,0 +1,71 @@ +package gui; + +import datamodel.CurrentUser; +import datamodel.Database; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.text.Text; +import javafx.scene.control.TextField; + +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.*; + +// controller for both the top tabs and login tab! + +public class LoginTab { + @FXML private Text actiontarget; + @FXML private TextField username; + + private BookingTab bookingTabCtrl; + private Database db; + + @FXML protected void handleSubmitButtonAction(ActionEvent event) { + + if(!db.isConnected()) { + // inform the user that there is no check against the database + Alert alert = new Alert(AlertType.ERROR); + alert.setTitle("Login fail"); + alert.setHeaderText(null); + alert.setContentText("No database connection! Cannot check user credentials."); + alert.showAndWait(); + } else { + String uname = username.getText(); + + /* --- TODO: add code to query the database credentials --- */ + // could be if(!db.login(uname)) alert... + + // inform the user that there is no check against the database + Alert alert = new Alert(AlertType.INFORMATION); + alert.setTitle("Login fail"); + alert.setHeaderText(null); + alert.setContentText("No user check implemented yet!"); + alert.showAndWait(); + /* --- END TODO --- */ + + // setting the user name + CurrentUser.instance().loginAs(uname); + + // inform the user about logging in + actiontarget.setText("Sign in user "+uname); + + // inform booking tab of user change + bookingTabCtrl.userChanged(); + } + } + + public void initialize() { + System.out.println("Initializing LoginTab."); + } + + // helpers + // use this pattern to send data down to controllers at initialization + public void setBookingTab(BookingTab bookingTabCtrl) { + System.out.println("LoginTab sets bookingTab:"+bookingTabCtrl); + this.bookingTabCtrl = bookingTabCtrl; + } + + public void setDatabase(Database db) { + this.db = db; + } + +} \ No newline at end of file diff --git a/src/main/java/gui/MainApplication.java b/src/main/java/gui/MainApplication.java new file mode 100755 index 0000000..82fc743 --- /dev/null +++ b/src/main/java/gui/MainApplication.java @@ -0,0 +1,65 @@ +package gui; + +import datamodel.Database; +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; +import javafx.stage.Stage; + + +/** + * The Main JavaFX Application class + * + * Use the main method in App to start it all. + */ +public class MainApplication extends Application { + + private Database db = new Database(); + + @Override + public void start(Stage primaryStage) { + try { + + // BorderPane root = new BorderPane(); + FXMLLoader loader = new FXMLLoader(getClass().getResource("/TopTab.fxml")); + Parent root = loader.load(); + + Scene scene = new Scene(root,600,440); + scene.getStylesheets().add(getClass().getResource("/application.css").toExternalForm()); + + // obtain main controller + TopTabView wc = (TopTabView) loader.getController(); + // make the database object visible to the controller + wc.setDatabase(db); + + primaryStage.setTitle("Movie Booking System"); + primaryStage.setScene(scene); + primaryStage.show(); + + // opening database connection + /* --- TODO: change xxx to your user name, yyy to your password --- */ + if(!db.openConnection("xxx", "yyy")) { + Alert alert = new Alert(AlertType.ERROR); + alert.setTitle("Database error"); + alert.setHeaderText(null); + alert.setContentText("Could not connect to the database! Check console for details."); + alert.showAndWait(); + } + } catch(Exception e) { + e.printStackTrace(); + } + } + + public void stop() { + // close the database here + db.closeConnection(); + try { + super.stop(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/gui/ReservationsTab.java b/src/main/java/gui/ReservationsTab.java new file mode 100644 index 0000000..d6abb90 --- /dev/null +++ b/src/main/java/gui/ReservationsTab.java @@ -0,0 +1,64 @@ +package gui; + +import java.util.Arrays; +import java.util.List; + +import datamodel.Reservation; +import datamodel.Database; +import javafx.fxml.FXML; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; + +public class ReservationsTab { + @FXML private TableView tableReservations = new TableView<>(); + + private Database db; + + public void setDatabase(Database db) { + this.db = db; + } + + @SuppressWarnings("unchecked") + public void initialize() { + System.out.println("Initializing BookingListTab"); + + // Create Column ID + TableColumn bookingIdColumn = new TableColumn<>("ID"); + bookingIdColumn.setPrefWidth(75); + bookingIdColumn.setCellValueFactory(new PropertyValueFactory("bookingId")); + + // Create Column MovieTitle + TableColumn movieTitleColumn = new TableColumn<>("Movie Title"); + movieTitleColumn.setPrefWidth(150); + movieTitleColumn.setCellValueFactory(new PropertyValueFactory("movieTitle")); + + // Create Column Date + TableColumn performanceDateColumn = new TableColumn<>("Date"); + performanceDateColumn.setPrefWidth(120); + performanceDateColumn.setCellValueFactory(new PropertyValueFactory("performanceDate")); + + // Create Column Theatre Name + TableColumn theatreNameColumn = new TableColumn<>("Theatre Name"); + theatreNameColumn.setPrefWidth(150); + theatreNameColumn.setCellValueFactory(new PropertyValueFactory("theatreName")); + + //Insert all columns + tableReservations.getColumns() + .addAll(bookingIdColumn, + movieTitleColumn, + performanceDateColumn, + theatreNameColumn); + } + + /** + * Refresh the table view, by getting and replacing the tables content. + */ + public void updateList() { + /* --- TODO: replace with own code using the database object instead --- */ + System.out.println("Update booking list called."); + + List bookings = Arrays.asList(new Reservation(1, "Star Wars", "2019-12-30", "Bio Söder")); + tableReservations.getItems().setAll(bookings); + } +} diff --git a/src/main/java/gui/TopTabView.java b/src/main/java/gui/TopTabView.java new file mode 100755 index 0000000..309f666 --- /dev/null +++ b/src/main/java/gui/TopTabView.java @@ -0,0 +1,40 @@ +package gui; + +import javafx.scene.Parent; +import javafx.scene.control.Tab; +import datamodel.Database; +import javafx.fxml.FXML; + +public class TopTabView { + @FXML private Parent aLoginTab; + @FXML private LoginTab aLoginTabController; + + @FXML private Parent aBookingTab; + @FXML private BookingTab aBookingTabController; + + @FXML private Tab reservationTab; + @FXML private ReservationsTab aReservationTabController; + + + public void initialize() { + System.out.println("Initializing TopTabView"); + + // send the booking controller reference to the login controller + // in order to pass data between the two + aLoginTabController.setBookingTab(aBookingTabController); + + // When selection is changed, update the list + reservationTab.setOnSelectionChanged(e -> { + if(reservationTab.isSelected()) { + // Initiate an update + aReservationTabController.updateList(); + } + }); + } + + public void setDatabase(Database db) { + aLoginTabController.setDatabase(db); + aBookingTabController.setDatabase(db); + aReservationTabController.setDatabase(db); + } +} diff --git a/src/main/resources/application.css b/src/main/resources/application.css new file mode 100755 index 0000000..d21e50b --- /dev/null +++ b/src/main/resources/application.css @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2012 Oracle and/or its affiliates. + * All rights reserved. Use is subject to license terms. + * + * This file is available and licensed under the following license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the distribution. + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +root { + display: block; +} + +.root { + -fx-background-image: url("background.jpg"); +} + +.label { + -fx-font-size: 12px; + -fx-font-weight: bold; + -fx-text-fill: #333333; + -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); +} + +#welcome-text { + -fx-font-size: 32px; + -fx-font-family: "Arial Black"; + -fx-fill: #818181; + -fx-effect: innershadow( three-pass-box , rgba(0,0,0,0.7) , 6, 0.0 , 0 , 2 ); +} + +#actiontarget { + -fx-fill: FIREBRICK; + -fx-font-weight: bold; + -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); +} + +#topContext { + -fx-fill: BLUE; + -fx-font-weight: bold; + -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); +} + +.button { + -fx-text-fill: white; + -fx-font-family: "Arial Narrow"; + -fx-font-weight: bold; + -fx-background-color: linear-gradient(#61a2b1, #2A5058); + -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 ); +} + +.button:hover { + -fx-background-color: linear-gradient(#2A5058, #61a2b1); +} \ No newline at end of file diff --git a/src/main/resources/background.jpg b/src/main/resources/background.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d46fe9da99a23bc3d725cb92eb82dc7294198bbf GIT binary patch literal 52308 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

    BmBod$5{Kra3FBeT)SGg2`kpm`$ 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +