From 23b8fec372b5f1ae3084f2df4f71eabf3ddbaece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hrdli=C4=8Dka?= <xhrdlic3@fi.muni.cz> Date: Wed, 26 Jan 2022 12:51:24 +0100 Subject: [PATCH] Activated the Filter Task ComboBox toolbar item --- .../fi/pv168/project/model/db/DbConnectedModel.java | 11 +++++++++++ .../pv168/project/ui/main/toolbar/TasksToolBar.java | 4 ++++ .../fi/pv168/project/ui/main/view/TaskView.java | 13 +++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/main/java/cz/muni/fi/pv168/project/model/db/DbConnectedModel.java b/src/main/java/cz/muni/fi/pv168/project/model/db/DbConnectedModel.java index 8616f280..0c9a0d17 100644 --- a/src/main/java/cz/muni/fi/pv168/project/model/db/DbConnectedModel.java +++ b/src/main/java/cz/muni/fi/pv168/project/model/db/DbConnectedModel.java @@ -6,6 +6,7 @@ import cz.muni.fi.pv168.project.model.EditableModel; import cz.muni.fi.pv168.project.ui.dialog.error.ErrorDialog; import javax.swing.DefaultListModel; +import java.util.function.Predicate; public class DbConnectedModel<T extends Identifiable> extends DefaultListModel<T> implements EditableModel<T> { @@ -75,6 +76,16 @@ public class DbConnectedModel<T extends Identifiable> extends DefaultListModel<T } } + public void updateFiltered(Predicate<T> predicate) { + clear(); + + for (T element : dataAccessObject.getAll()) { + if (predicate.test(element)) { + super.addElement(element); + } + } + } + @Override public void delete(T entity) { dataAccessObject.delete(entity); diff --git a/src/main/java/cz/muni/fi/pv168/project/ui/main/toolbar/TasksToolBar.java b/src/main/java/cz/muni/fi/pv168/project/ui/main/toolbar/TasksToolBar.java index 7e5fc167..4eeb341b 100644 --- a/src/main/java/cz/muni/fi/pv168/project/ui/main/toolbar/TasksToolBar.java +++ b/src/main/java/cz/muni/fi/pv168/project/ui/main/toolbar/TasksToolBar.java @@ -44,6 +44,10 @@ public class TasksToolBar { taskTypes.addActionListener(l); } + public TaskStatus getSelectedStatus() { + return (TaskStatus) taskTypes.getSelectedItem(); + } + public JToolBar getToolBar() { return toolBar; } diff --git a/src/main/java/cz/muni/fi/pv168/project/ui/main/view/TaskView.java b/src/main/java/cz/muni/fi/pv168/project/ui/main/view/TaskView.java index af622073..49736f36 100644 --- a/src/main/java/cz/muni/fi/pv168/project/ui/main/view/TaskView.java +++ b/src/main/java/cz/muni/fi/pv168/project/ui/main/view/TaskView.java @@ -80,12 +80,25 @@ public class TaskView implements Tab<Task> { } }); + handleToolBar(); + splitPane.setLeftComponent(new JScrollPane(headerList)); splitPane.setRightComponent(taskPanel); splitPane.setDividerLocation(0.33); splitPane.setBorder(new EtchedBorder()); } + private void handleToolBar() { + toolBar.addStatusActionListener(actionEvent -> { + var selectedStatus = toolBar.getSelectedStatus(); + if (selectedStatus.equals(TaskStatus.ALL)) { + taskModel.updateAll(); + } else { + taskModel.updateFiltered(task -> task.getTaskStatus().equals(selectedStatus)); + } + }); + } + private void update() { var task = headerList.getSelectedValue(); -- GitLab