2525import javafx .scene .control .Alert ;
2626import javafx .scene .control .Alert .AlertType ;
2727import javafx .scene .control .ButtonType ;
28- import javafx .scene .control .CheckBox ;
29- import javafx .scene .control .ColorPicker ;
3028import javafx .scene .control .ContextMenu ;
3129import javafx .scene .control .Dialog ;
3230import javafx .scene .control .Label ;
3533import javafx .scene .control .MenuItem ;
3634import javafx .scene .control .MultipleSelectionModel ;
3735import javafx .scene .control .SelectionMode ;
38- import javafx .scene .control .Spinner ;
39- import javafx .scene .control .TextArea ;
4036import javafx .scene .control .TextField ;
4137import javafx .scene .control .Tooltip ;
4238import javafx .scene .effect .Bloom ;
@@ -57,7 +53,7 @@ public class ProjectsListViewController {
5753 private final Map <Project , Node > projectSelectionNodeMap ;
5854 private final FilteredList <Project > filteredData ;
5955
60- private boolean hideable ;
56+ private final boolean hideable ;
6157 private ManageProjectController manageProjectController ;
6258
6359 public ProjectsListViewController (final Model model , final Controller controller , final Stage mainStage ,
@@ -76,21 +72,7 @@ public ProjectsListViewController(final Model model, final Controller controller
7672 searchTextField .textProperty ().addListener ((a , b , newValue ) -> {
7773 LOG .info ("New filter value: " + newValue );
7874 // TODO do i always have to create a new predicate?
79- filteredData .setPredicate (project -> {
80- // If filter text is empty, display all data.
81- if (newValue == null || newValue .isEmpty ()) {
82- return true ;
83- }
84-
85- final String lowerCaseFilter = newValue .toLowerCase ();
86-
87- if (project .getName ().toLowerCase ().contains (lowerCaseFilter )
88- || project .getDescription ().toLowerCase ().contains (lowerCaseFilter )) {
89- return true ;
90- }
91-
92- return false ;
93- });
75+ filteredData .setPredicate (project -> doesProjectMatchSearchFilter (newValue , project ));
9476 LOG .debug ("Amount of projects to show '{}'." , filteredData .size ());
9577 availableProjectsListView .getSelectionModel ().selectFirst ();
9678 availableProjectsListView .scrollTo (0 );
@@ -135,6 +117,22 @@ public ProjectsListViewController(final Model model, final Controller controller
135117 availableProjectsListView .getSelectionModel ().selectFirst ();
136118 }
137119
120+ static boolean doesProjectMatchSearchFilter (final String searchText , final Project project ) {
121+ // If filter text is empty, display all data.
122+ if (searchText == null || searchText .isEmpty ()) {
123+ return true ;
124+ }
125+
126+ final String lowerCaseFilter = searchText .toLowerCase ();
127+
128+ if (project .getName ().toLowerCase ().contains (lowerCaseFilter )
129+ || project .getDescription ().toLowerCase ().contains (lowerCaseFilter )) {
130+ return true ;
131+ }
132+
133+ return false ;
134+ }
135+
138136 /**
139137 * Update UI
140138 */
@@ -324,20 +322,19 @@ private GridPane setUpEditProjectGridPane(final Project p) {
324322 manageProjectController = loader .getController ();
325323 manageProjectController .setModel (model );
326324 manageProjectController .secondInitialize ();
327- manageProjectController .setValues (p . getName (), p . getDescription (), p . getColor (), p . isWork (), p . getIndex () );
325+ manageProjectController .setValues (p );
328326
329327 return grid ;
330328 }
331329
332330 private void editProject (final Project p , final ManageProjectController manageProjectController ) {
333- final TextField nameTextField = manageProjectController .getNameTextField ();
334- final TextArea descriptionTextArea = manageProjectController .getDescriptionTextArea ();
335- final ColorPicker textFillColorPicker = manageProjectController .getTextFillColorPicker ();
336- final CheckBox isWorkCheckBox = manageProjectController .getIsWorkCheckBox ();
337- final Spinner <Integer > sortIndexSpinner = manageProjectController .getSortIndexSpinner ();
338-
339- final Project newValues = new Project (nameTextField .getText (), descriptionTextArea .getText (),
340- textFillColorPicker .getValue (), isWorkCheckBox .isSelected (), sortIndexSpinner .getValue ());
331+ final String projectName = manageProjectController .getProjectName ();
332+ final String projectDescription = manageProjectController .getProjectDescription ();
333+ final Color projectColor = manageProjectController .getProjectColor ();
334+ final boolean isWork = manageProjectController .isWork ();
335+ final int index = manageProjectController .getIndex ();
336+
337+ final Project newValues = new Project (projectName , projectDescription , projectColor , isWork , index );
341338 controller .editProject (p , newValues );
342339 }
343340
0 commit comments