3535import javafx .beans .property .StringProperty ;
3636import javafx .beans .value .ChangeListener ;
3737import javafx .beans .value .ObservableValue ;
38+ import javafx .collections .transformation .FilteredList ;
3839import javafx .fxml .FXML ;
3940import javafx .scene .Node ;
4041import javafx .scene .control .ComboBox ;
@@ -81,9 +82,12 @@ public class ManageWorkController {
8182 private boolean comboChange ;
8283 private Project selectedProject ;
8384
85+ private FilteredList <Project > filteredList ;
86+
8487 public void setModel (final Model model ) {
8588 this .model = model ;
86- projectComboBox .setItems (model .getSortedAvailableProjects ());
89+ filteredList = new FilteredList <>(model .getSortedAvailableProjects ());
90+ projectComboBox .setItems (filteredList );
8791 }
8892
8993 @ FXML
@@ -151,8 +155,11 @@ protected void updateItem(final Project project, final boolean empty) {
151155 if (project == null || empty ) {
152156 setGraphic (null );
153157 } else {
154- setColor (this , project .getColor ());
158+ setColor (this , model .hoverBackgroundColor .get ());
159+
160+ setTextFill (project .getColor ());
155161 setText (project .getName ());
162+
156163 setUnderline (project .isWork ());
157164 }
158165 }
@@ -189,16 +196,15 @@ public Project fromString(final String string) {
189196 comboChange = true ;
190197 // needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
191198 Platform .runLater (() -> {
192- projectComboBox .getEditor ().selectAll ();
193- setColor (projectComboBox , newValue .getColor ());
199+ setTextColor (projectComboBox .getEditor (), newValue .getColor ());
194200 });
195201 }
196202
197203 );
198204
199205 projectComboBox .getEditor ().textProperty ().addListener (new ChangeListener <String >() {
200206
201- Boolean isValidProject = true ;
207+ boolean isValidProject = true ;
202208
203209 @ Override
204210 public void changed (final ObservableValue <? extends String > observable , final String oldValue ,
@@ -215,14 +221,20 @@ public void changed(final ObservableValue<? extends String> observable, final St
215221 if (isValidProject ) {
216222 isValidProject = false ;
217223 projectComboBox .getSelectionModel ().clearSelection ();
224+ // needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
225+ Platform .runLater (() -> {
226+ setTextColor (projectComboBox .getEditor (), model .hoverFontColor .get ());
227+ });
218228 }
219229
220230 // needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
221231 Platform .runLater (() -> {
222232 projectComboBox .hide ();
223- projectComboBox
224- .setItems (model .getSortedAvailableProjects ().filtered (project -> ProjectsListViewController
225- .doesProjectMatchSearchFilter (projectComboBox .getEditor ().getText (), project )));
233+
234+ final String searchText = projectComboBox .getEditor ().getText ();
235+ filteredList .setPredicate (
236+ project -> ProjectsListViewController .doesProjectMatchSearchFilter (searchText , project ));
237+
226238 if (projectComboBox .getEditor ().focusedProperty ().get ()) {
227239 projectComboBox .show ();
228240 }
@@ -284,7 +296,10 @@ public void initializeWith(final Work work) {
284296
285297 projectComboBox .getSelectionModel ().select (work .getProject ());
286298
287- setColor (projectComboBox , work .getProject ().getColor ());
299+ setColor (projectComboBox , model .hoverBackgroundColor .get ());
300+ setColor (projectComboBox .getEditor (), model .hoverBackgroundColor .get ());
301+
302+ setTextColor (projectComboBox .getEditor (), model .hoverFontColor .get ());
288303
289304 }
290305
@@ -294,6 +309,12 @@ private void setColor(final Node object, final Color color) {
294309 object .setStyle (style );
295310 }
296311
312+ private void setTextColor (final Node object , final Color color ) {
313+ final String style = StyleUtils .changeStyleAttribute (object .getStyle (), "fx-text-fill" ,
314+ "rgba(" + ColorHelper .colorToCssRgba (color ) + ")" );
315+ object .setStyle (style );
316+ }
317+
297318 public Work getWorkFromUserInput () {
298319
299320 return new Work (startDatePicker .getValue (),
0 commit comments