diff --git a/src/de/t_battermann/dhbw/todolist/Controller.java b/src/de/t_battermann/dhbw/todolist/Controller.java index e5ad8c4..23912d6 100644 --- a/src/de/t_battermann/dhbw/todolist/Controller.java +++ b/src/de/t_battermann/dhbw/todolist/Controller.java @@ -8,6 +8,7 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.*; +import javafx.scene.input.KeyCode; import javafx.stage.Stage; import java.io.File; @@ -86,8 +87,11 @@ public class Controller { e1.printStackTrace(); return false; } + this.updateStatusLine("Saved data to'"+this.filename+"'"); return true; } + this.updateStatusLine("No filename given. Please choose one!"); + this.showSaveAs(); return false; } @@ -135,7 +139,7 @@ public class Controller { // Log in Node n = primaryStage.getScene().lookup("#loginButton"); if ( n != null && n instanceof Button) { - n.setOnMouseReleased(event -> { + ((Button) n).setOnAction(event -> { Label l = (Label) primaryStage.getScene().lookup("#labelHints"); String name = null; String pass = null; @@ -155,11 +159,11 @@ public class Controller { if (this.currentUser.checkLoginData(pass)) { this.todoLists = new ObservableListWrapper<>(currentUser.getTodoLists()); this.showMainWindow(); - }else{ + } else { this.currentUser = null; l.setText("Invalid credentials!"); } - }else{ + } else { l.setText("Invalid credentials! 1"); } }); @@ -168,52 +172,54 @@ public class Controller { } n = primaryStage.getScene().lookup("#registerButton"); if ( n != null && n instanceof Button) { - n.setOnMouseReleased(event -> { + ((Button) n).setOnAction(event -> { Label l = (Label) primaryStage.getScene().lookup("#labelHintsCreateNewUser"); // username String username; Node no = primaryStage.getScene().lookup("#registerUsername"); - if ( no != null && no instanceof TextField && User.checkUsername(((TextField) no).getText())) { + if (no != null && no instanceof TextField && User.checkUsername(((TextField) no).getText())) { username = ((TextField) no).getText(); - }else{ + } else { l.setText("Invalid username! (Regex: [a-zA-Z0-9_-]{3,})"); return; } - if ( users.containsKey(username)) { + if (users.containsKey(username)) { l.setText("Username already taken!"); return; } // password String password; no = primaryStage.getScene().lookup("#registerPassword"); - if( no != null && no instanceof PasswordField && User.checkPassword(((PasswordField) no).getText())) { + if (no != null && no instanceof PasswordField && User.checkPassword(((PasswordField) no).getText())) { password = ((PasswordField) no).getText(); no = primaryStage.getScene().lookup("#registerPasswordRepeat"); - if( no == null || !(no instanceof PasswordField) || !password.equals(((PasswordField) no).getText())) { + if (no == null || !(no instanceof PasswordField) || !password.equals(((PasswordField) no).getText())) { l.setText("The passwords didn’t match!"); } - }else{ + } else { l.setText("Password must be longer than 6 chars! And must contain numbers, lower and upper chars!"); return; } // eMail String email; no = primaryStage.getScene().lookup("#registerEmail"); - if( no != null && no instanceof TextField && User.checkEmail( ((TextField) no).getText() ) ) { + if (no != null && no instanceof TextField && User.checkEmail(((TextField) no).getText())) { email = ((TextField) no).getText(); no = primaryStage.getScene().lookup("#registerEmailRepeat"); - if( no == null || !(no instanceof TextField) || !email.equals(((TextField) no).getText())) { + if (no == null || !(no instanceof TextField) || !email.equals(((TextField) no).getText())) { l.setText("The eMail addresses didn’t match!"); } - }else{ + } else { l.setText("No valid eMail address given!"); return; } - User nu = new User(username,password); + User nu = new User(username, password); nu.setEmail(email); currentUser = nu; users.put(username, nu); this.todoLists = new ObservableSequentialListWrapper<>(currentUser.getTodoLists()); + // log in + this.showMainWindow(); }); }else{ this.printError("'#registerButton' not found!"); @@ -243,33 +249,32 @@ public class Controller { } n = primaryStage.getScene().lookup("#menuSave"); if ( n != null && n instanceof Button) { - n.setOnMouseReleased(event -> { - if ( this.filename != null) { + ((Button) n).setOnAction(event -> { + if (this.filename != null) { this.export(this.filename); - }else{ + } else { this.showSaveAs(); } }); } n = primaryStage.getScene().lookup("#menuSaveAs"); if ( n != null && n instanceof Button ) { - n.setOnMouseReleased(event -> this.showSaveAs()); + ((Button) n).setOnAction(event -> this.showSaveAs()); } n = primaryStage.getScene().lookup("#menuClose"); if ( n != null && n instanceof Button ) { - n.setOnMouseReleased(event -> Platform.exit()); + ((Button) n).setOnAction(event -> Platform.exit()); } this.primaryStage.setOnCloseRequest(event -> Platform.exit()); n = primaryStage.getScene().lookup("#todoDetailSave"); if ( n != null && n instanceof Button) { - n.setOnMouseClicked(event -> this.saveTodoEntry()); - n.setOnKeyPressed(event -> this.saveTodoEntry()); + ((Button) n).setOnAction(event -> this.saveTodoEntry()); } n = primaryStage.getScene().lookup("#todoDetailDueDate"); if (n != null && n instanceof CheckBox) { ((CheckBox) n).setOnAction(event -> this.detailUpdateDueDatePicker()); } - // TODO: handle new TodoList + // handle new TodoList n = primaryStage.getScene().lookup("#todoListNew"); if ( n != null && n instanceof Button) { ((Button) n).setOnAction(event -> { @@ -277,7 +282,7 @@ public class Controller { this.showTodoListEdit(); }); } - // TODO: handle edit TodoList + // handle edit TodoList n = primaryStage.getScene().lookup("#todoListEdit"); if ( n != null && n instanceof Button) { ((Button) n).setOnAction(event -> { @@ -285,7 +290,11 @@ public class Controller { this.showTodoListEdit(); }); } - // TODO: handle delete TodoList + // handle delete TodoList + n = primaryStage.getScene().lookup("#todoListDelete"); + if( n != null && n instanceof Button) { + ((Button) n).setOnAction(event -> deleteTodoList()); + } // TODO } @@ -314,6 +323,8 @@ public class Controller { if (n!=null && n instanceof Button) { n.setDisable(!t.isChangeable()); } + // if there is no todo item, empty the currentTodo + this.currentTodo = null; } updateSelectedTodo(); } @@ -330,17 +341,17 @@ public class Controller { n = primaryStage.getScene().lookup("#todoDetailTitle"); if ( n == null || !(n instanceof TextField)) return; - ((TextField) n).setText( this.currentTodo.getTitle() ); + ((TextField) n).setText( this.currentTodo == null ? "" : this.currentTodo.getTitle() ); // comment n = primaryStage.getScene().lookup("#todoDetailDescription"); if ( n == null || !(n instanceof TextArea) ) return; - ((TextArea) n).setText( this.currentTodo.getComment() ); + ((TextArea) n).setText( this.currentTodo == null ? "" : this.currentTodo.getComment() ); // if dueDate set: n = primaryStage.getScene().lookup("#todoDetailDueDate"); if ( n == null || !(n instanceof CheckBox) ) return; - boolean dueDate = this.currentTodo.getDueDate() != null; + boolean dueDate = this.currentTodo != null && this.currentTodo.getDueDate() != null; ((CheckBox) n).setSelected(dueDate); // datePicker n = primaryStage.getScene().lookup("#todoDetailDate"); @@ -381,17 +392,17 @@ public class Controller { save.setTitle("Save as ..."); save.show(); Button s = (Button) save.getScene().lookup("#save"); - if ( s != null ) - s.setOnMouseReleased(event -> { - TextField f = (TextField)save.getScene().lookup("#filename"); - if ( f != null) { + if ( s != null) + s.setOnAction(event -> { + TextField f = (TextField) save.getScene().lookup("#filename"); + if (f != null) { File file = new File(f.getText()); - if ( !file.isDirectory() ) { - if ( this.filename == null) + if (!file.isDirectory()) { + if (this.filename == null) this.filename = f.getText(); - if(this.export(f.getText())) + if (this.export(f.getText())) save.close(); - }else{ + } else { this.updateStatusLine("Can’t write to file!"); } } @@ -399,6 +410,10 @@ public class Controller { } private void saveTodoEntry() { + if ( this.currentTodo == null ) { + this.updateStatusLine("No item selected!"); + return; + } Node lv = primaryStage.getScene().lookup("#todos"); if ( lv == null || !(lv instanceof ListView)) { this.updateStatusLine("Could’t get todo-ListView!"); @@ -505,7 +520,6 @@ public class Controller { } } private void saveTodoListEdit() { - // TODO Node n = primaryStage.getScene().lookup("#todoListNewName"); if ( n == null || !(n instanceof TextField)) { this.updateStatusLine("Couldn’t get 'todoListNewName'"); @@ -537,6 +551,23 @@ public class Controller { n.setDisable(true); n.setVisible(false); } + private void deleteTodoList() { + Node n = primaryStage.getScene().lookup("#todoLists"); + if (n == null || !(n instanceof ListView)) { + return; + } + ListView l = (ListView) n; + if (l.getSelectionModel().getSelectedItem() != null && l.getSelectionModel().getSelectedItem() instanceof TodoList) { + TodoList t = (TodoList) l.getSelectionModel().getSelectedItem(); + if (!t.isChangeable() ) { + this.updateStatusLine("Can’t delete the TodoList!"); + return; + } + this.todoLists.remove(t); + //this.notifyList(this.todoLists, this.currentTodo); + this.updateStatusLine("TodoList removed!"); + } + } private void printError(String s) { SimpleDateFormat format = new SimpleDateFormat(); format.applyPattern("yyyyMMdd'T'HH:mm:ssZ");