From da5500964b02b4433ea5f1fe3b34c17f2f9d573c Mon Sep 17 00:00:00 2001 From: Arvin Ghavidel Date: Sun, 6 Feb 2022 02:17:14 +0330 Subject: [PATCH 01/10] Removed unnecessary code --- .../jira/view/AdminPanelPageController.java | 39 +++- src/main/java/jira/view/BoardMenu.java | 140 --------------- src/main/java/jira/view/CalendarMenu.java | 35 ---- src/main/java/jira/view/Commands.java | 88 --------- .../java/jira/view/LoginAndRegisterMenu.java | 56 ------ .../java/jira/view/LoginPageController.java | 74 +++----- src/main/java/jira/view/MainMenu.java | 64 ------- src/main/java/jira/view/Menu.java | 42 ----- src/main/java/jira/view/ProfileMenu.java | 69 ------- src/main/java/jira/view/TaskPage.java | 78 -------- src/main/java/jira/view/TeamMenu.java | 169 ------------------ src/main/java/jira/view/ViewController.java | 30 ---- 12 files changed, 63 insertions(+), 821 deletions(-) delete mode 100644 src/main/java/jira/view/BoardMenu.java delete mode 100644 src/main/java/jira/view/CalendarMenu.java delete mode 100644 src/main/java/jira/view/Commands.java delete mode 100644 src/main/java/jira/view/LoginAndRegisterMenu.java delete mode 100644 src/main/java/jira/view/MainMenu.java delete mode 100644 src/main/java/jira/view/Menu.java delete mode 100644 src/main/java/jira/view/ProfileMenu.java delete mode 100644 src/main/java/jira/view/TaskPage.java delete mode 100644 src/main/java/jira/view/TeamMenu.java delete mode 100644 src/main/java/jira/view/ViewController.java diff --git a/src/main/java/jira/view/AdminPanelPageController.java b/src/main/java/jira/view/AdminPanelPageController.java index ed1f168..64e6656 100644 --- a/src/main/java/jira/view/AdminPanelPageController.java +++ b/src/main/java/jira/view/AdminPanelPageController.java @@ -4,11 +4,18 @@ import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.layout.BorderPane; +import javafx.stage.Stage; +import jira.JiraApp; import jira.controller.TeamController; +import jira.controller.UserController; +import java.io.IOException; import java.util.ArrayList; public class AdminPanelPageController extends PageController { @@ -42,11 +49,11 @@ private void populatePendingTeamsTableView() { ArrayList pendingTeamNames = TeamController.getController().getPendingTeams(); pendingTeamsTableView.setEditable(true); - TableColumn pendingTeamName = pendingTeamsTableView.getColumns().get(0); + TableColumn pendingTeamName = new TableColumn("Team Name"); pendingTeamName.setCellFactory(new PropertyValueFactory("pendingTeamName")); - TableColumn rejectButton = pendingTeamsTableView.getColumns().get(1); + TableColumn rejectButton = new TableColumn(""); rejectButton.setCellFactory(new PropertyValueFactory("rejectTeamButton")); - TableColumn acceptButton = pendingTeamsTableView.getColumns().get(2); + TableColumn acceptButton = new TableColumn(""); acceptButton.setCellFactory(new PropertyValueFactory("acceptTeamButton")); ObservableList rows = FXCollections.observableArrayList(); @@ -56,6 +63,32 @@ private void populatePendingTeamsTableView() { pendingTeamsTableView.setItems(rows); } + @FXML + private void openJiraStatistics(ActionEvent event) { + System.out.println("CALLED STATS"); + } + + @FXML + private void back(ActionEvent event) { + UserController.getController().logout(currentUsername); + currentUsername = null; + gotoLoginPage(event); + } + + private void gotoLoginPage(ActionEvent event) { + try { + FXMLLoader loader = new FXMLLoader(JiraApp.class.getResource("login.fxml")); + Scene scene = new Scene(loader.load()); + Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); + + stage.setScene(scene); + stage.show(); + } + catch (IOException e) { + e.printStackTrace(); + } + } + class PendingTeamRow { private final String pendingTeamName; private final Button rejectTeamButton; diff --git a/src/main/java/jira/view/BoardMenu.java b/src/main/java/jira/view/BoardMenu.java deleted file mode 100644 index 5837141..0000000 --- a/src/main/java/jira/view/BoardMenu.java +++ /dev/null @@ -1,140 +0,0 @@ -package jira.view; - -import jira.controller.BoardController; -import jira.controller.ControllerResult; - -import java.util.regex.Matcher; - -public class BoardMenu extends Menu { - String Command; - String selectedBoard; - - public BoardMenu(String name, Menu parent) { - super(name, parent); - } - - public void execute() { - System.out.println("Board Menu"); - ControllerResult result; - selectedBoard = null; - - while (true) { - Matcher commandMatcher; - result = null; - Command = getInput(); - BoardController boardController = BoardController.getController(); - String assignedUser = LoginAndRegisterMenu.assignedUser; - String assignedTeam = TeamMenu.assignedTeam; - - if (isValidCommand(Command, Commands.COMMAND_PATTERNS[23])) { - commandMatcher = parse(Command, 23); - - String boardName = commandMatcher.group(1); - result = boardController.createStageOneBoard(assignedUser, assignedTeam, boardName); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[24])) { - commandMatcher = parse(Command, 24); - - String boardName = commandMatcher.group(1); - result = boardController.removeBoard(assignedUser, assignedTeam, boardName); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[25])) { - commandMatcher = parse(Command, 25); - - selectedBoard = commandMatcher.group(1); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[26])) { - selectedBoard = null; - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[27])) { - commandMatcher = parse(Command, 27); - - String categoryName = commandMatcher.group(1); - String boardName = commandMatcher.group(2); - result = boardController.addCategoryToBoard(assignedUser, assignedTeam, boardName, categoryName); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[28])) { - commandMatcher = parse(Command, 28); - - String categoryName = commandMatcher.group(1); - int column = Integer.parseInt(commandMatcher.group(2)); - String boardName = commandMatcher.group(3); - result = boardController.moveOrCreateCategoryInColumn(assignedUser, assignedTeam, boardName, categoryName, column); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[29])) { - commandMatcher = parse(Command, 29); - - String boardName = commandMatcher.group(1); - result = boardController.finalizeBoard(assignedUser, assignedTeam, boardName); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[30])) { - commandMatcher = parse(Command, 30); - - int taskId = Integer.parseInt(commandMatcher.group(1)); - String boardName = commandMatcher.group(2); - result = boardController.addTaskToBoard(assignedUser, assignedTeam, boardName, taskId); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[31])) { - commandMatcher = parse(Command, 31); - - String teamMember = commandMatcher.group(1); - int taskId = Integer.parseInt(commandMatcher.group(2)); - String boardName = commandMatcher.group(3); - result = boardController.assignTaskToTeamMember(assignedUser, assignedTeam, boardName, taskId, teamMember); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[32])) { - commandMatcher = parse(Command, 32); - - String newCategory = commandMatcher.group(1); - String taskTitle = commandMatcher.group(2); - String boardName = commandMatcher.group(3); - result = boardController.forceChangeTaskCategory(assignedUser, assignedTeam, boardName, taskTitle, newCategory); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[33])) { - commandMatcher = parse(Command, 33); - - String task = commandMatcher.group(1); - String boardName = commandMatcher.group(2); - result = boardController.doNextOnTask(assignedUser, assignedTeam, boardName, task); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[34])) { - //Show Task By Category -- ToDo - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[35])) { - commandMatcher = parse(Command, 35); - - boolean showDone = commandMatcher.group(1).equals("done"); - String boardName = commandMatcher.group(2); - result = boardController.showDoneOrFailedTasks(assignedTeam, boardName, showDone); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[36])) { - commandMatcher = parse(Command, 36); - - String taskTitle = commandMatcher.group(1); - String assigneeName = commandMatcher.group(2); - String deadline = commandMatcher.group(2); - String category = commandMatcher.group(2); - String boardName = commandMatcher.group(2); - result = boardController.restartTask(assignedUser, assignedTeam, boardName, deadline, taskTitle, assigneeName, category); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[37])) { - commandMatcher = parse(Command, 37); - - String boardName = commandMatcher.group(1); - result = boardController.showBoardToMember(assignedTeam, boardName); - - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[59])) { - ViewController.setNext(parent); - break; - } - else { - show(INVALID_COMMAND); - } - - if (result != null) - show(result.message); - } - } -} - diff --git a/src/main/java/jira/view/CalendarMenu.java b/src/main/java/jira/view/CalendarMenu.java deleted file mode 100644 index 067b912..0000000 --- a/src/main/java/jira/view/CalendarMenu.java +++ /dev/null @@ -1,35 +0,0 @@ -package jira.view; - -import jira.controller.ControllerResult; -import jira.controller.UserController; - -public class CalendarMenu extends Menu { - String Command; - - public CalendarMenu(String name, Menu parent) { - super(name, parent); - } - - public void execute() { - System.out.println("Calendar Menu"); - while (true) { - ControllerResult result = null; - Command = getInput(); - UserController userController = UserController.getController(); - String assignedUser = LoginAndRegisterMenu.assignedUser; - if (isValidCommand(Command, Commands.COMMAND_PATTERNS[38])) { - result = userController.showCalendar(assignedUser); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[59])) { - ViewController.setNext(parent); - break; - } - else - show(INVALID_COMMAND); - - if (result != null) - show(result.message); - } - } -} - diff --git a/src/main/java/jira/view/Commands.java b/src/main/java/jira/view/Commands.java deleted file mode 100644 index 221a305..0000000 --- a/src/main/java/jira/view/Commands.java +++ /dev/null @@ -1,88 +0,0 @@ -package jira.view; - -import java.util.regex.Pattern; - -public class Commands { - public static Pattern[] COMMAND_PATTERNS = new Pattern[]{ -// first page(LoginAndRegisterMenu) commands: 0-1 - Pattern.compile("user create --username ([^\\s]+) --password1 ([^\\s]+) --password2 ([^\\s]+) --email Address ([^\\s]+)"), //Creating Users - Pattern.compile("user login --username ([^\\s]+) --password ([^\\s]+)"), //Login -// second page(profileMenu) commands: 2-9 - Pattern.compile("enter menu (.*)"), // To Enter A Menu - Pattern.compile("profile --change --oldPassword ([^\\s]+) --newPassword ([^\\s]+)"), //Change Password - Pattern.compile("profile --change --username ([^\\s]+)"), //Change Username - Pattern.compile("profile --showTeams"), //Show Teams - Pattern.compile("profile --showTeam ([^\\s]+)"), //Show Own Teams - Pattern.compile("profile --show --myProfile"), //Show Profile - Pattern.compile("profile --show logs"), // Show Logs - Pattern.compile("profile --show notifications"), //Show Notifications -// Task Page(TaskMenu) commands: 10-15 -// Team Leader Commands - Pattern.compile("edit --task --id (\\d+) --title (.*)"), //change title - Pattern.compile("edit --task --id (\\d+) --description (.*)"), //Change Description - Pattern.compile("edit --task --id (\\d+) --priority ([^\\s]+)"), //Change Priority - Pattern.compile("edit --task --id (\\d+) --Deadline ([^\\s]+)"), //Change Deadline - Pattern.compile("edit --task --id (\\d+) --assignedUsers ([^\\s]+) --remove"), //Remove Assigned User - Pattern.compile("edit --task --id (\\d+) --assignedUsers ([^\\s]+) --add"), //Add To Assigned Users -// Team Menu(TeamMenu) commands: 16-22 - Pattern.compile("Enter team ([^\\s]+)"), //Enter Team Page - Pattern.compile("Scoreboard --show"), //Show Scoreboard - Pattern.compile("Roadmap --show"), //Show Roadmap - Pattern.compile("Chatroom --show"), //Show Chatroom - Pattern.compile("send --message \"(.*)\"") , //Send Message ? - Pattern.compile("show tasks"), //Show Tasks - Pattern.compile("show task --id (\\d+)"), //Show Task -// Team :: Board Menu(BoardMenu) commands: -// Leader commands 23-26 - Pattern.compile("board --new --name ([^\\s]+)"), //Create Stage 1 Board - Pattern.compile("board --remove --name ([^\\s]+)"), //Remove Board From Team - Pattern.compile("board --select --name ([^\\s]+)"), //Select Command - Pattern.compile("board --deselect"), -// Stage One Board Command 27-29 - Pattern.compile("board --new --category ([^\\s]+) --name ([^\\s]+)"), //create category - Pattern.compile("board --category ([^\\s]+) --column (\\d+) --name ([^\\s]+)"), //Move / Create Category In Column - Pattern.compile("board --done --name ([^\\s]+)"), //Finish Stage One -// Stage Two Board Commands 30-34 - Pattern.compile("board --add (\\d+) --name ([^\\s]+)"), //Add Task To Board - Pattern.compile("board --assign ([^\\s]+) --task (\\d+) --name ([^\\s]+)"), //Assign Task To Team Member - Pattern.compile("board --force --category ([^\\s]+) --task ([^\\s]+) --name ([^\\s]+)"), //Change Task State - Pattern.compile("board --category next --task ([^\\s]+) --name ([^\\s]+)"), //Move Task To Next State - Pattern.compile("board --show --category ([^\\s]+) --board ([^\\s]+)"), //Show Task By Category -// Task Progression 35-36 - Pattern.compile("board --show ([^\\s]+) --name --board ([^\\s]+)"), //Show Done/Failed Tasks - Pattern.compile("board --open --task ([^\\s]+) (--assign ([^\\s]+))? --deadline ([^\\s]+) (--category ([^\\s]+))? --name ([^\\s]+)"), //Restart Task -// Normal Board Member Commands (Team Member Commands) 37-37 - Pattern.compile("Board --show --name ([^\\s]+)"), -// Calendar Menu 38-38 - Pattern.compile("calendar --show deadlines"), -// Team Leader Tasks: 39-41 - Pattern.compile("show --teams"), //Show Teams - Pattern.compile("show --team ([^\\s]+)"), //Team Select - Pattern.compile("create --team ([^\\s]+)"), //Create Team -// Team Leader Commands After Selecting Team 42-51 - Pattern.compile("sudo show --all --tasks"), //Show All Team Tasks - Pattern.compile("create task --title ([^\\s]+) --startTime ([^\\s]+) --deadline ([^\\s]+)"), //Create Task For Team - Pattern.compile("show --members"), //List Team Members - Pattern.compile("Add member --username ([^\\s]+)"), //Add Member To Team - Pattern.compile("delete member --username ([^\\s]+)"), //Remove Member From Team - Pattern.compile("suspend member --username ([^\\s]+)"), //Suspend Team Member - Pattern.compile("promote --username ([^\\s]+) --rate (\\d+)"), //Promote To Team Leader - Pattern.compile("assign member --task (\\d+) --username ([^\\s]+)"), //Assign Member To Task - Pattern.compile("show --scoreboard"), //Show Scoreboard - Pattern.compile("send --notification ([^\\s]+) --username ([^\\s]+)"), //Send Notifications -// Admin Commands 52-58 - Pattern.compile("show profile --username ([^\\s]+)"), //Query User Profile - Pattern.compile("ban user --user ([^\\s]+)"), //Ban User - Pattern.compile("change role --user ([^\\s]+) --role ([^\\s]+)"), //Change Role - Pattern.compile("send --notificaion --all\n" + - "send --notificaion --user \n" + - "send --notificaion --team "), //Send Notification - Pattern.compile("show --pendingTeams"), //Accept New Teams - Pattern.compile("accept --teams (.+)"), //Accept New Teams - Pattern.compile("reject --teams (.+)"), //Reject Team -// BACK and EXIT 59-60 - Pattern.compile("back"), - Pattern.compile("exit") - }; -} - diff --git a/src/main/java/jira/view/LoginAndRegisterMenu.java b/src/main/java/jira/view/LoginAndRegisterMenu.java deleted file mode 100644 index d62cd22..0000000 --- a/src/main/java/jira/view/LoginAndRegisterMenu.java +++ /dev/null @@ -1,56 +0,0 @@ -package jira.view; - -import jira.controller.ControllerResult; -import jira.controller.UserController; - -import java.util.regex.Matcher; - -public class LoginAndRegisterMenu extends Menu { - String Command; - public static String assignedUser; - - public LoginAndRegisterMenu(String name, Menu parent) {super(name, parent);} - - public void execute() { - System.out.println("Login and Register Menu"); - assignedUser = null; - ControllerResult result; - UserController userController = UserController.getController(); - - while (true) { - Matcher commandMatcher; - Command = getInput(); - if (isValidCommand(Command, Commands.COMMAND_PATTERNS[0])) { - commandMatcher = parse(Command, 0); - - String userName = commandMatcher.group(1); - String passWord1 = commandMatcher.group(2); - String passWord2 = commandMatcher.group(3); - String email = commandMatcher.group(4); - result = userController.createUser(userName, passWord1, passWord2, email); - - show(result.message); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[1])){ - commandMatcher = parse(Command, 1); - - String userName = commandMatcher.group(1); - String password = commandMatcher.group(2); - result = userController.login(userName, password); - - show(result.message); - if (result.success) { - ViewController.setNext(new MainMenu(null, this)); - assignedUser = userName; - break; - } - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[60])){ - ViewController.setNext(null); - break; - } - else - show(INVALID_COMMAND); - } - } -} diff --git a/src/main/java/jira/view/LoginPageController.java b/src/main/java/jira/view/LoginPageController.java index be49590..df58f0c 100644 --- a/src/main/java/jira/view/LoginPageController.java +++ b/src/main/java/jira/view/LoginPageController.java @@ -31,9 +31,14 @@ private void login(ActionEvent event) { ControllerResult result = userController.login(username, password); showResult(errorField, result); + String role = userController.getUserRole(username).message; - if (result.success) - gotoMainMenu(event, username); + if (result.success) { + if (role.equals("System Administrator")) + gotoAdminMenu(event, username); + else + gotoMainMenu(event, username, role); + } } @FXML @@ -57,7 +62,7 @@ private void register(ActionEvent event) { } } - private void gotoMainMenu(ActionEvent event, String username) { + private void gotoMainMenu(ActionEvent event, String username, String role) { try { FXMLLoader loader = new FXMLLoader(JiraApp.class.getResource("mainMenu.fxml")); Scene scene = new Scene(loader.load()); @@ -65,7 +70,7 @@ private void gotoMainMenu(ActionEvent event, String username) { MainMenuPageController mainMenuPageController = loader.getController(); mainMenuPageController.setCurrentUsername(username); - mainMenuPageController.setRole(userController.getUserRole(username).message); + mainMenuPageController.setRole(role); mainMenuPageController.initialize(); stage.setScene(scene); @@ -76,50 +81,25 @@ private void gotoMainMenu(ActionEvent event, String username) { } } + private void gotoAdminMenu(ActionEvent event, String username) { + try { + FXMLLoader loader = new FXMLLoader(JiraApp.class.getResource("adminPannel.fxml")); + Scene scene = new Scene(loader.load()); + Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); + + AdminPanelPageController adminPanelPageController = loader.getController(); + adminPanelPageController.setCurrentUsername(username); + adminPanelPageController.initialize(); + + stage.setScene(scene); + stage.show(); + } + catch (IOException e) { + e.printStackTrace(); + } + } + protected void registerReturn() { pane.setDisable(false); } - -// public void execute() { -// System.out.println("Login and Register Menu"); -// assignedUser = null; -// ControllerResult result; -// UserController userController = UserController.getController(); -// -// while (true) { -// Matcher commandMatcher; -// Command = getInput(); -// if (isValidCommand(Command, Commands.COMMAND_PATTERNS[0])) { -// commandMatcher = parse(Command, 0); -// -// String userName = commandMatcher.group(1); -// String passWord1 = commandMatcher.group(2); -// String passWord2 = commandMatcher.group(3); -// String email = commandMatcher.group(4); -// result = userController.createUser(userName, passWord1, passWord2, email); -// -// show(result.message); -// } -// else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[1])){ -// commandMatcher = parse(Command, 1); -// -// String userName = commandMatcher.group(1); -// String password = commandMatcher.group(2); -// result = userController.login(userName, password); -// -// show(result.message); -// if (result.success) { -// ViewController.setNext(new MainMenu(null, this)); -// assignedUser = userName; -// break; -// } -// } -// else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[60])){ -// ViewController.setNext(null); -// break; -// } -// else -// show(INVALID_COMMAND); -// } -// } } diff --git a/src/main/java/jira/view/MainMenu.java b/src/main/java/jira/view/MainMenu.java deleted file mode 100644 index 483f674..0000000 --- a/src/main/java/jira/view/MainMenu.java +++ /dev/null @@ -1,64 +0,0 @@ -package jira.view; - -import jira.controller.UserController; - -import java.util.regex.Matcher; - -public class MainMenu extends Menu { - - String Command; - - public MainMenu(String name, Menu parent) { - super(name, parent); - } - - public void execute() { - welcome(); - - loop: while (true) { - Matcher commandMatcher; - Command = getInput(); - show("select a menu"); - - if (isValidCommand(Command, Commands.COMMAND_PATTERNS[2])) { - commandMatcher = parse(Command, 2); - String menuName = commandMatcher.group(1); - - switch (menuName){ - case "Profile Menu": - ViewController.setNext(new ProfileMenu(null, this)); - break loop; - case "Board Menu": - ViewController.setNext(new BoardMenu(null, this)); - break loop; - case "Team Menu": - ViewController.setNext(new TeamMenu(null, this)); - break loop; - case "Task Page": - ViewController.setNext(new TaskPage(null, this)); - break loop; - case "Calendar Menu": - ViewController.setNext(new CalendarMenu(null, this)); - break loop; - default: - show("the menu doesn't exist"); - } - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[59])) { - ViewController.setNext(parent); - UserController.getController().logout(LoginAndRegisterMenu.assignedUser); - break; - } - else - show(INVALID_COMMAND); - } - } - - private void welcome() { - show("1. Profile Menu"); - show("2. Board Menu"); - show("3. Team Menu"); - show("4. Task Page"); - show("5. Calendar Menu"); - } -} diff --git a/src/main/java/jira/view/Menu.java b/src/main/java/jira/view/Menu.java deleted file mode 100644 index 35b0845..0000000 --- a/src/main/java/jira/view/Menu.java +++ /dev/null @@ -1,42 +0,0 @@ -package jira.view; - -import java.util.Scanner; -import java.util.regex.Pattern; -import java.util.regex.Matcher; - -public abstract class Menu { - public static final String INVALID_COMMAND = "Invalid command"; - protected static Scanner scanner = new Scanner(System.in); - protected Menu parent; - protected String name; - - public Menu(String name, Menu parent) { - this.name = name; - this.parent = parent; - } - - public void execute() { - System.out.println("Child menu of " + parent.name + " executed"); - } - - public String getInput() { - return scanner.nextLine().trim(); - } - - public void show(String message) { - if (message != null) - System.out.println(message); - } - - public boolean isValidCommand(String command, Pattern pattern) { - Matcher matcher = pattern.matcher(command); - return matcher.find(); - } - - public Matcher parse(String command, int patternNum) { - Matcher commandMatcher = Commands.COMMAND_PATTERNS[patternNum].matcher(command); - if (commandMatcher.matches()) - return commandMatcher; - return null; - } -} diff --git a/src/main/java/jira/view/ProfileMenu.java b/src/main/java/jira/view/ProfileMenu.java deleted file mode 100644 index 764a193..0000000 --- a/src/main/java/jira/view/ProfileMenu.java +++ /dev/null @@ -1,69 +0,0 @@ -package jira.view; - -import jira.controller.ControllerResult; -import jira.controller.UserController; -import jira.controller.TeamController; - -import java.util.regex.Matcher; - -public class ProfileMenu extends Menu { - String Command; - - public ProfileMenu(String name, Menu parent) { - super(name, parent); - } - - public void execute() { - System.out.println("Profile Menu"); - while (true) { - Matcher commandMatcher; - ControllerResult result = null; - Command = getInput(); - UserController userController = UserController.getController(); - TeamController teamController = TeamController.getController(); - String assignedUser = LoginAndRegisterMenu.assignedUser; - - if (isValidCommand(Command, Commands.COMMAND_PATTERNS[3])) { - commandMatcher = parse(Command, 3); - - String oldPassword = commandMatcher.group(1); - String newPassword = commandMatcher.group(2); - result = userController.changeUserPassword(assignedUser, oldPassword, newPassword); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[4])) { - commandMatcher = parse(Command, 4); - - String userName = commandMatcher.group(1); - result = userController.changeUsername(userName, assignedUser); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[5])) { - result = userController.listTeams(assignedUser); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[6])) { - commandMatcher = parse(Command, 6); - - String teamName = commandMatcher.group(1); - result = teamController.showTeamMembers(teamName); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[7])) { - result = userController.showProfile(assignedUser); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[8])) { - result = userController.showLogs(assignedUser); - } -// else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[9])) { -// userController.showNotifications(); -// // showNotifications method should be added to UserController. -// } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[59])) { - ViewController.setNext(parent); - break; - } - else - show(INVALID_COMMAND); - - if (result != null) - show(result.message); - } - } -} \ No newline at end of file diff --git a/src/main/java/jira/view/TaskPage.java b/src/main/java/jira/view/TaskPage.java deleted file mode 100644 index add7b5d..0000000 --- a/src/main/java/jira/view/TaskPage.java +++ /dev/null @@ -1,78 +0,0 @@ -package jira.view; - -import jira.controller.ControllerResult; -import jira.controller.TasksController; - -import java.util.regex.Matcher; - -public class TaskPage extends Menu { - String Command; - - public TaskPage(String name, Menu parent) { - super(name, parent); - } - - public void execute() { - System.out.println("Task Page"); - ControllerResult result; - - while (true) { - Matcher commandMatcher; - result = null; - Command = getInput(); - TasksController tasksController = TasksController.getController(); - String assignedUser = LoginAndRegisterMenu.assignedUser; - if (isValidCommand(Command, Commands.COMMAND_PATTERNS[10])) { - commandMatcher = parse(Command, 10); - - int taskId = Integer.parseInt(commandMatcher.group(1)); - String newTitle = commandMatcher.group(2); - result = tasksController.changeTaskTitle(assignedUser, taskId, newTitle); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[11])) { - commandMatcher = parse(Command, 11); - - int taskId = Integer.parseInt(commandMatcher.group(1)); - String newDescription = commandMatcher.group(2); - result = tasksController.changeDescription(assignedUser, taskId, newDescription); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[12])) { - commandMatcher = parse(Command, 12); - - int taskId = Integer.parseInt(commandMatcher.group(1)); - String newPriority = commandMatcher.group(2); - result = tasksController.changePriority(assignedUser, taskId, newPriority); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[13])) { - commandMatcher = parse(Command, 13); - - int taskId = Integer.parseInt(commandMatcher.group(1)); - String newDeadline = commandMatcher.group(2); - result = tasksController.changeDeadline(assignedUser, taskId, newDeadline); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[14])) { - commandMatcher = parse(Command, 14); - - int taskId = Integer.parseInt(commandMatcher.group(1)); - String usernameToRemove = commandMatcher.group(2); - result = tasksController.removeAssignedUser(assignedUser, taskId, usernameToRemove); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[15])) { - commandMatcher = parse(Command, 15); - - int taskId = Integer.parseInt(commandMatcher.group(1)); - String usernameToAdd = commandMatcher.group(2); - result = tasksController.assignUser(assignedUser, taskId, usernameToAdd); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[59])) { - ViewController.setNext(parent); - break; - } - else - show(INVALID_COMMAND); - - if (result != null) - show(result.message); - } - } -} diff --git a/src/main/java/jira/view/TeamMenu.java b/src/main/java/jira/view/TeamMenu.java deleted file mode 100644 index f48f225..0000000 --- a/src/main/java/jira/view/TeamMenu.java +++ /dev/null @@ -1,169 +0,0 @@ -package jira.view; - -import jira.controller.UserController; -import jira.controller.ControllerResult; -import jira.controller.TasksController; -import jira.controller.TeamController; - -import java.util.regex.Matcher; - -public class TeamMenu extends Menu { - String Command; - - public TeamMenu(String name, Menu parent) { - super(name, parent); - } - - public static String assignedTeam; - - public void execute() { - assignedTeam = null; - System.out.println("Team Menu"); - welcome(); - - while (true) { - Matcher commandMatcher; - ControllerResult result = null; - Command = getInput(); - UserController userController = UserController.getController(); - TeamController teamController = TeamController.getController(); - TasksController tasksController = TasksController.getController(); - - String assignedUser = LoginAndRegisterMenu.assignedUser; - userController.listTeams(assignedUser); - - if (isValidCommand(Command, Commands.COMMAND_PATTERNS[16])) { - commandMatcher = parse(Command, 16); - - if (teamController.teamIsSelectable(commandMatcher.group(1))) - assignedTeam = commandMatcher.group(1); - else - result = new ControllerResult("Chosen team does not exist!", false); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[17]) && assignedTeam != null) { - result = teamController.showTeamScoreboard(assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[18]) && assignedTeam != null) { - result = teamController.showTeamRoadmap(assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[19]) && assignedTeam != null) { - result = teamController.showChatroom(assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[20]) && assignedTeam != null) { - commandMatcher = parse(Command, 20); - - String message = commandMatcher.group(1); - result = userController.sendMessage(assignedUser, message, assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[21]) && assignedTeam != null) { - result = teamController.showTeamTasks(assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[22]) && assignedTeam != null) { - commandMatcher = parse(Command, 22); - - result = userController.showTask(assignedTeam, Integer.parseInt(commandMatcher.group(1))); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[39])) { - result = teamController.showTeams(assignedUser); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[40])) { - commandMatcher = parse(Command, 40); - result = teamController.checkTeamToken(assignedUser, commandMatcher.group(1)); - - if (result.success) - assignedTeam = result.message; - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[41])) { - commandMatcher = parse(Command, 41); - - String teamName = commandMatcher.group(1); - result = teamController.creatTeam(assignedUser, teamName); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[42]) && assignedTeam != null) { - result = teamController.showTeamTasks(assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[43]) && assignedTeam != null) { - commandMatcher = parse(Command, 43); - - String taskTitle = commandMatcher.group(1); - String startTime = commandMatcher.group(2); - String deadline = commandMatcher.group(3); - result = teamController.createTaskForTeam(assignedUser,assignedTeam,taskTitle, startTime, deadline); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[44]) && assignedTeam != null) { - result = teamController.showTeamMembers(assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[45]) && assignedTeam != null) { - commandMatcher = parse(Command, 45); - - String username = commandMatcher.group(1); - result = teamController.addMemberToTeam(assignedUser, assignedTeam, username); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[46]) && assignedTeam != null) { - commandMatcher = parse(Command, 46); - - String username = commandMatcher.group(1); - result = teamController.deleteTeamMember(username, assignedUser, assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[47]) && assignedTeam != null) { - commandMatcher = parse(Command, 47); - - String username = commandMatcher.group(1); - result = teamController.suspendTeamMember(assignedUser,assignedTeam,username); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[48]) && assignedTeam != null) { - commandMatcher = parse(Command, 48); - - String username = commandMatcher.group(1); - result = teamController.promoteTeamLeader(assignedTeam,assignedUser,username); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[49])) { - commandMatcher = parse(Command, 49); - - int taskId = Integer.parseInt(commandMatcher.group(1)); - String username = commandMatcher.group(2); - result = tasksController.assignUser(assignedUser, taskId, username); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[50]) && assignedTeam != null) { - result = teamController.showTeamScoreboard(assignedTeam); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[51])) { - commandMatcher = parse(Command, 51); - - String notification = commandMatcher.group(1); - String teamName = commandMatcher.group(2); - result = teamController.sendNotifications(notification, assignedUser); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[56])) { - result = teamController.showPendingTeams(assignedUser); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[57])) { - commandMatcher = parse(Command, 57); - - String teams = commandMatcher.group(1); - result = teamController.acceptPendingTeam(assignedUser, teams); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[58])) { - commandMatcher = parse(Command, 58); - - String teams = commandMatcher.group(1); - result = teamController.rejectPendingTeam(assignedUser, teams); - } - else if (isValidCommand(Command, Commands.COMMAND_PATTERNS[59])) { - ViewController.setNext(parent); - break; - } - else - show(INVALID_COMMAND); - - if (result != null) - show(result.message); - } - } - - private void welcome() { - show(TeamController.getController().showAllTeams().message); - } -} - - diff --git a/src/main/java/jira/view/ViewController.java b/src/main/java/jira/view/ViewController.java deleted file mode 100644 index 41286f4..0000000 --- a/src/main/java/jira/view/ViewController.java +++ /dev/null @@ -1,30 +0,0 @@ -package jira.view; - -import jira.controller.UserController; - -public class ViewController { - private static Menu next; - - static { - next = new LoginAndRegisterMenu("Jira", null); - } - - public static void gotoNext() { - next.execute(); - } - - public static void setNext(Menu nextMenu) { - next = nextMenu; - } - - public static void run() { - while (true) { - if (next != null) - gotoNext(); - else{ - UserController.getController().saveUsers(); - break; - } - } - } -} From 2b7d1af94cf11666b6c64fae9852d8e581d0f99a Mon Sep 17 00:00:00 2001 From: Arvin Ghavidel Date: Sun, 6 Feb 2022 03:26:38 +0330 Subject: [PATCH 02/10] Added Team Creation Support --- src/main/java/jira/JiraApp.java | 1 + .../java/jira/controller/TeamController.java | 6 ++ .../java/jira/controller/UserController.java | 5 -- src/main/java/jira/model/Team.java | 55 +++++++++++-------- src/main/java/jira/model/User.java | 3 +- .../jira/view/AdminPanelPageController.java | 8 +-- .../java/jira/view/LoginPageController.java | 8 +-- .../jira/view/MainMenuPageController.java | 19 ++++++- src/main/java/jira/view/PageController.java | 20 +++++++ .../jira/view/TeamMenuPageController.java | 49 ++++++++++++++--- .../jira/view/TeamViewPopupController.java | 3 +- src/main/resources/jira/teamMenu.fxml | 36 ++++++++++-- 12 files changed, 163 insertions(+), 50 deletions(-) diff --git a/src/main/java/jira/JiraApp.java b/src/main/java/jira/JiraApp.java index bfdd257..ec8b6dd 100644 --- a/src/main/java/jira/JiraApp.java +++ b/src/main/java/jira/JiraApp.java @@ -13,6 +13,7 @@ public class JiraApp extends Application { private static void setup() { new User("admin", "Password123", "admin@gmail.com", Role.ADMIN); + new User("test", "Password123", "test@gmail.com", Role.MEMBER); } static { diff --git a/src/main/java/jira/controller/TeamController.java b/src/main/java/jira/controller/TeamController.java index 4988a7d..efaefad 100644 --- a/src/main/java/jira/controller/TeamController.java +++ b/src/main/java/jira/controller/TeamController.java @@ -161,6 +161,12 @@ public ControllerResult showTeams(String username){ return new ControllerResult(Team.showTeams(username), true); } + /** + * Lists the name of teams that the user is either the leader + * or a member. + * @param username Username of the one to check + * @return List of team names + */ public ArrayList showTeamsAffiliated(String username) { User user = User.getUserByUsername(username); if (user != null) { diff --git a/src/main/java/jira/controller/UserController.java b/src/main/java/jira/controller/UserController.java index 3241d76..be9a249 100644 --- a/src/main/java/jira/controller/UserController.java +++ b/src/main/java/jira/controller/UserController.java @@ -7,7 +7,6 @@ import jira.model.Task; import jira.model.Team; import jira.model.User; -import jira.view.LoginAndRegisterMenu; public class UserController { private static UserController controller = new UserController(); @@ -247,10 +246,6 @@ public void saveUsers(){ User.saveUser(); } - public void updateAssignedUser(String username) { - LoginAndRegisterMenu.assignedUser = username; - } - public ControllerResult sendMessage(String username,String message, String teamName){ if(!User.userExists(username)){ return new ControllerResult("no user exists with username!",false); diff --git a/src/main/java/jira/model/Team.java b/src/main/java/jira/model/Team.java index 054d138..9727c01 100644 --- a/src/main/java/jira/model/Team.java +++ b/src/main/java/jira/model/Team.java @@ -7,22 +7,29 @@ public class Team { - private static ArrayList teams = new ArrayList<>(); - private static ArrayList pendingTeams = new ArrayList<>(); + private static final ArrayList teams = new ArrayList<>(); + private static final ArrayList pendingTeams = new ArrayList<>(); private static int idCounter = 0; private final int id; private String name; private User leader; - private ArrayList members; - private ArrayList chat; + private final ArrayList members; + private final ArrayList chat; public Team(String name, User leader) { this.id = assignId(); this.name = name; this.leader = leader; - this.members = new ArrayList(); - this.chat = new ArrayList(); + this.members = new ArrayList<>(); + this.chat = new ArrayList<>(); Board.initTeamBoard(name); + removeNewLeaderMemberTeams(leader); + } + + private void removeNewLeaderMemberTeams(User user) { + for (Team team: teams) + if (team.isMember(user)) + team.deleteMember(user); } private static int assignId() { @@ -241,22 +248,22 @@ public String showTasks() { if(Board.getTeamBoards(name).size()<1){ return "no task yet"; } - String output = ""; + StringBuilder output = new StringBuilder(); int i=1; ArrayList allTasks; for(Board board : Board.getTeamBoards(name)){ allTasks = board.getTasks(); for(Task task : allTasks){ - output += i+"."+task.getTitle()+": id "+task.getId()+",creation date : "+task.getCreationDate(); - output += ",deadline :"+task.getDeadline()+",assign to :"; + output.append(i).append(".").append(task.getTitle()).append(": id ").append(task.getId()).append(",creation date : ").append(task.getCreationDate()); + output.append(",deadline :").append(task.getDeadline()).append(",assign to :"); i++; for(User user : task.getAssignedUsers().keySet()){ - output += user.getUsername()+" "; + output.append(user.getUsername()).append(" "); } - output += ",priority :"+task.getPriority().toString()+"\n"; + output.append(",priority :").append(task.getPriority().toString()).append("\n"); } } - return output; + return output.toString(); } public void addBoard(String boardName) { @@ -294,13 +301,13 @@ public void changeTaskCategoryInBoard(String category, String taskTitle, String public String showBoardTaskByCategory(String boardName, String category) { Task task = Task.getTaskByTitle(name, category); - String output = task.getTitle()+": id"+task.getId()+",creation date : "; - output += task.getCreationDate()+",deadline :"+task.getDeadline()+",assign to :"; + StringBuilder output = new StringBuilder(task.getTitle() + ": id" + task.getId() + ",creation date : "); + output.append(task.getCreationDate()).append(",deadline :").append(task.getDeadline()).append(",assign to :"); for(User user : task.getAssignedUsers().keySet()){ - output += user.getUsername()+" "; + output.append(user.getUsername()).append(" "); } - output += ",priority :"+task.getPriority().toString(); - return output; + output.append(",priority :").append(task.getPriority().toString()); + return output.toString(); } public String showBoard(String boardName) { @@ -310,13 +317,13 @@ public String showBoard(String boardName) { public String showTask(int id) { Task task = Task.getTaskById(id); - String output = task.getTitle()+": id"+task.getId()+",creation date : "; - output += task.getCreationDate()+",deadline :"+task.getDeadline()+",assign to :"; + StringBuilder output = new StringBuilder(task.getTitle() + ": id" + task.getId() + ",creation date : "); + output.append(task.getCreationDate()).append(",deadline :").append(task.getDeadline()).append(",assign to :"); for(User user : task.getAssignedUsers().keySet()){ - output += user.getUsername()+" "; + output.append(user.getUsername()).append(" "); } - output += ",priority :"+task.getPriority().toString(); - return output; + output.append(",priority :").append(task.getPriority().toString()); + return output.toString(); } public ArrayList getMember() { @@ -354,6 +361,10 @@ public void deleteMember(String username) { members.remove(User.getUserByUsername(username)); } + public void deleteMember(User user) { + members.remove(user); + } + public void promoteMember(String username) { leader = User.getUserByUsername(username); } diff --git a/src/main/java/jira/model/User.java b/src/main/java/jira/model/User.java index 70d587c..d940537 100644 --- a/src/main/java/jira/model/User.java +++ b/src/main/java/jira/model/User.java @@ -98,7 +98,8 @@ public static boolean usernameHasSpecialChars(String username) { public void changeUsername(String username){ this.username = username; - UserController.getController().updateAssignedUser(username); +// UserController.getController().updateAssignedUser(username); + throw new RuntimeException("NOT WORKING!"); } public static User getUserByUsername(String username) { diff --git a/src/main/java/jira/view/AdminPanelPageController.java b/src/main/java/jira/view/AdminPanelPageController.java index 64e6656..89cdb89 100644 --- a/src/main/java/jira/view/AdminPanelPageController.java +++ b/src/main/java/jira/view/AdminPanelPageController.java @@ -30,7 +30,7 @@ protected void setCurrentUsername(String currentUsername) { this.currentUsername = currentUsername; } - public void initialize() { + public void setup() { clearTable(); setAdminUsernameLabel(); populatePendingTeamsTableView(); @@ -47,7 +47,7 @@ private void clearTable() { private void populatePendingTeamsTableView() { ArrayList pendingTeamNames = TeamController.getController().getPendingTeams(); - + System.out.println(pendingTeamNames.toString()); pendingTeamsTableView.setEditable(true); TableColumn pendingTeamName = new TableColumn("Team Name"); pendingTeamName.setCellFactory(new PropertyValueFactory("pendingTeamName")); @@ -112,12 +112,12 @@ public PendingTeamRow(String pendingTeamName, int rowIndex) { private void doReject(ActionEvent event) { TeamController.getController().rejectPendingTeam(currentUsername, pendingTeamName); - initialize(); + setup(); } private void doAccept(ActionEvent event) { TeamController.getController().acceptPendingTeam(currentUsername, pendingTeamName); - initialize(); + setup(); } public String getPendingTeamName() { diff --git a/src/main/java/jira/view/LoginPageController.java b/src/main/java/jira/view/LoginPageController.java index df58f0c..fca56f9 100644 --- a/src/main/java/jira/view/LoginPageController.java +++ b/src/main/java/jira/view/LoginPageController.java @@ -13,6 +13,7 @@ import javafx.event.ActionEvent; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; +import jira.model.Role; import java.io.IOException; @@ -34,7 +35,7 @@ private void login(ActionEvent event) { String role = userController.getUserRole(username).message; if (result.success) { - if (role.equals("System Administrator")) + if (role.equals(Role.ADMIN.toString())) gotoAdminMenu(event, username); else gotoMainMenu(event, username, role); @@ -71,7 +72,7 @@ private void gotoMainMenu(ActionEvent event, String username, String role) { MainMenuPageController mainMenuPageController = loader.getController(); mainMenuPageController.setCurrentUsername(username); mainMenuPageController.setRole(role); - mainMenuPageController.initialize(); + mainMenuPageController.setup(); stage.setScene(scene); stage.show(); @@ -89,8 +90,7 @@ private void gotoAdminMenu(ActionEvent event, String username) { AdminPanelPageController adminPanelPageController = loader.getController(); adminPanelPageController.setCurrentUsername(username); - adminPanelPageController.initialize(); - + adminPanelPageController.setup(); stage.setScene(scene); stage.show(); } diff --git a/src/main/java/jira/view/MainMenuPageController.java b/src/main/java/jira/view/MainMenuPageController.java index 06308d0..ceff0df 100644 --- a/src/main/java/jira/view/MainMenuPageController.java +++ b/src/main/java/jira/view/MainMenuPageController.java @@ -36,7 +36,7 @@ public class MainMenuPageController extends PageController { @FXML private TableView currentUserTeams; @FXML private Label leaderOrMemberLabel; - protected void initialize() { + protected void setup() { setCurrentUsernameLabel(); setLeaderOrMemberLabel(); setCurrentUserProfilePic(); @@ -51,7 +51,22 @@ private void gotoProfileMenu(ActionEvent event) { @FXML private void gotoTeamMenu(ActionEvent event) { - System.out.println("to team"); + try { + FXMLLoader loader = new FXMLLoader(JiraApp.class.getResource("teamMenu.fxml")); + Scene scene = new Scene(loader.load()); + Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); + + TeamMenuPageController teamMenuPageController = loader.getController(); + teamMenuPageController.setCurrentRole(role); + teamMenuPageController.setCurrentUsername(currentUsername); + teamMenuPageController.setup(); + + stage.setScene(scene); + stage.show(); + } + catch (IOException e) { + e.printStackTrace(); + } } @FXML diff --git a/src/main/java/jira/view/PageController.java b/src/main/java/jira/view/PageController.java index ce2e4c9..811b523 100644 --- a/src/main/java/jira/view/PageController.java +++ b/src/main/java/jira/view/PageController.java @@ -1,6 +1,7 @@ package jira.view; import javafx.fxml.FXML; +import javafx.scene.control.TextArea; import javafx.scene.shape.Circle; import jira.JiraApp; import jira.controller.ControllerResult; @@ -28,6 +29,18 @@ private void setInfoLabel(Label label, String info) { label.setTextFill(Paint.valueOf("#000000")); } + @FXML + private void setInfoLabel(TextArea area, String info) { + area.setText(info); + area.setStyle("-fx-text-fill: #000000"); + } + + @FXML + private void setErrorLabel(TextArea area, String info) { + area.setText(info); + area.setStyle("-fx-text-fill: #E74C3C"); + } + protected void showResult(Label label, ControllerResult result) { if (result.success) setInfoLabel(label, result.message); @@ -35,6 +48,13 @@ protected void showResult(Label label, ControllerResult result) { setErrorLabel(label, result.message); } + protected void showResult(TextArea area, ControllerResult result) { + if (result.success) + setInfoLabel(area, result.message); + else + setErrorLabel(area, result.message); + } + protected String getTextFromField(TextField field) { return field.getText().trim(); } diff --git a/src/main/java/jira/view/TeamMenuPageController.java b/src/main/java/jira/view/TeamMenuPageController.java index 19fb134..835c5ec 100644 --- a/src/main/java/jira/view/TeamMenuPageController.java +++ b/src/main/java/jira/view/TeamMenuPageController.java @@ -2,21 +2,22 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; +import javafx.scene.Node; import javafx.scene.Scene; -import javafx.scene.control.Label; -import javafx.scene.control.TableCell; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; +import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import javafx.util.Callback; import jira.JiraApp; +import jira.controller.ControllerResult; import jira.controller.TeamController; +import jira.controller.UserController; import java.io.IOException; import java.util.ArrayList; @@ -26,8 +27,10 @@ public class TeamMenuPageController extends PageController { private String currentRole; @FXML private BorderPane pane; - @FXML private TableView listOfTeams; + @FXML private TableView listOfTeams; @FXML private Label leaderOrMemberLabel; + @FXML private TextField teamNameField; + @FXML private TextArea errorField; protected void setCurrentUsername(String currentUsername) { this.currentUsername = currentUsername; @@ -41,7 +44,7 @@ private void setLeaderOrMemberLabel() { leaderOrMemberLabel.setText(currentRole + " of:"); } - public void initialize() { + public void setup() { setLeaderOrMemberLabel(); clearTeamListView(); prepareTeamListView(); @@ -67,7 +70,6 @@ private void prepareTeamListView() { private ObservableList getTeamListViewItems() { final ObservableList teamStats = FXCollections.observableArrayList(); - ArrayList teamNames = TeamController.getController().showTeamsAffiliated(currentUsername); ArrayList teamCounts = TeamController.getController().getAffiliatedTeamsMemberCount(currentUsername); for (int i = 0; i < teamNames.size(); i++) { @@ -117,6 +119,39 @@ protected void teamViewReturn() { pane.setDisable(false); } + @FXML + private void createTeam(ActionEvent event) { + String teamName = getTextFromField(teamNameField); + ControllerResult result = TeamController.getController().creatTeam(currentUsername, teamName); + showResult(errorField, result); + } + + @FXML + private void back(ActionEvent event) { + gotoMainMenu(event); + currentUsername = null; + currentRole = null; + } + + private void gotoMainMenu(ActionEvent event) { + try { + FXMLLoader loader = new FXMLLoader(JiraApp.class.getResource("mainMenu.fxml")); + Scene scene = new Scene(loader.load()); + Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); + + MainMenuPageController mainMenuPageController = loader.getController(); + mainMenuPageController.setCurrentUsername(currentUsername); + mainMenuPageController.setRole(currentRole); + mainMenuPageController.setup(); + + stage.setScene(scene); + stage.show(); + } + catch (IOException e) { + e.printStackTrace(); + } + } + class GotoTeamHandler implements EventHandler { @Override public void handle(MouseEvent event) { diff --git a/src/main/java/jira/view/TeamViewPopupController.java b/src/main/java/jira/view/TeamViewPopupController.java index 5cfb726..4884517 100644 --- a/src/main/java/jira/view/TeamViewPopupController.java +++ b/src/main/java/jira/view/TeamViewPopupController.java @@ -13,6 +13,7 @@ import jira.controller.ControllerResult; import jira.controller.TeamController; import jira.controller.UserController; +import jira.model.Role; import java.util.ArrayList; @@ -136,7 +137,7 @@ public MemberData(String username) { this.deleteButton = new Button(); this.deleteButton.setOnAction(event -> deleteUser(username)); - if (!currentRole.equals("Team Leader")) + if (!currentRole.equals(Role.LEADER.toString())) deleteButton.setDisable(true); } diff --git a/src/main/resources/jira/teamMenu.fxml b/src/main/resources/jira/teamMenu.fxml index d244521..9960dd7 100644 --- a/src/main/resources/jira/teamMenu.fxml +++ b/src/main/resources/jira/teamMenu.fxml @@ -1,16 +1,44 @@ + + + + + - +
- + - -