3333import javafx .beans .property .StringProperty ;
3434import javafx .beans .value .ChangeListener ;
3535import javafx .beans .value .ObservableValue ;
36+ import javafx .collections .transformation .FilteredList ;
3637import javafx .fxml .FXML ;
3738import javafx .scene .Node ;
3839import javafx .scene .control .ComboBox ;
@@ -77,9 +78,12 @@ public class ManageWorkController {
7778 private boolean comboChange ;
7879 private Project selectedProject ;
7980
81+ private FilteredList <Project > filteredList ;
82+
8083 public void setModel (final Model model ) {
8184 this .model = model ;
82- projectComboBox .setItems (model .getSortedAvailableProjects ());
85+ filteredList = new FilteredList <>(model .getSortedAvailableProjects ());
86+ projectComboBox .setItems (filteredList );
8387 }
8488
8589 @ FXML
@@ -147,8 +151,11 @@ protected void updateItem(final Project project, final boolean empty) {
147151 if (project == null || empty ) {
148152 setGraphic (null );
149153 } else {
150- setColor (this , project .getColor ());
154+ setColor (this , model .hoverBackgroundColor .get ());
155+
156+ setTextFill (project .getColor ());
151157 setText (project .getName ());
158+
152159 setUnderline (project .isWork ());
153160 }
154161 }
@@ -185,16 +192,15 @@ public Project fromString(final String string) {
185192 comboChange = true ;
186193 // needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
187194 Platform .runLater (() -> {
188- projectComboBox .getEditor ().selectAll ();
189- setColor (projectComboBox , newValue .getColor ());
195+ setTextColor (projectComboBox .getEditor (), newValue .getColor ());
190196 });
191197 }
192198
193199 );
194200
195201 projectComboBox .getEditor ().textProperty ().addListener (new ChangeListener <String >() {
196202
197- Boolean isValidProject = true ;
203+ boolean isValidProject = true ;
198204
199205 @ Override
200206 public void changed (final ObservableValue <? extends String > observable , final String oldValue ,
@@ -211,14 +217,20 @@ public void changed(final ObservableValue<? extends String> observable, final St
211217 if (isValidProject ) {
212218 isValidProject = false ;
213219 projectComboBox .getSelectionModel ().clearSelection ();
220+ // needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
221+ Platform .runLater (() -> {
222+ setTextColor (projectComboBox .getEditor (), model .hoverFontColor .get ());
223+ });
214224 }
215225
216226 // needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
217227 Platform .runLater (() -> {
218228 projectComboBox .hide ();
219- projectComboBox
220- .setItems (model .getSortedAvailableProjects ().filtered (project -> ProjectsListViewController
221- .doesProjectMatchSearchFilter (projectComboBox .getEditor ().getText (), project )));
229+
230+ final String searchText = projectComboBox .getEditor ().getText ();
231+ filteredList .setPredicate (
232+ project -> ProjectsListViewController .doesProjectMatchSearchFilter (searchText , project ));
233+
222234 if (projectComboBox .getEditor ().focusedProperty ().get ()) {
223235 projectComboBox .show ();
224236 }
@@ -267,7 +279,10 @@ public void initializeWith(final Work work) {
267279
268280 projectComboBox .getSelectionModel ().select (work .getProject ());
269281
270- setColor (projectComboBox , work .getProject ().getColor ());
282+ setColor (projectComboBox , model .hoverBackgroundColor .get ());
283+ setColor (projectComboBox .getEditor (), model .hoverBackgroundColor .get ());
284+
285+ setTextColor (projectComboBox .getEditor (), model .hoverFontColor .get ());
271286
272287 }
273288
@@ -277,6 +292,12 @@ private void setColor(final Node object, final Color color) {
277292 object .setStyle (style );
278293 }
279294
295+ private void setTextColor (final Node object , final Color color ) {
296+ final String style = StyleUtils .changeStyleAttribute (object .getStyle (), "fx-text-fill" ,
297+ "rgba(" + ColorHelper .colorToCssRgba (color ) + ")" );
298+ object .setStyle (style );
299+ }
300+
280301 public Work getWorkFromUserInput () {
281302
282303 return new Work (startDatePicker .getValue (),
0 commit comments