Skip to content

Commit 522e571

Browse files
authored
Merge pull request #62 from doubleSlashde/feature/project_colors_in_edit_work_dialog
Colorbehaviour change in edit work item dialog
2 parents 3579380 + 5124a5e commit 522e571

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

src/main/java/de/doubleslash/keeptime/view/ManageWorkController.java

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import javafx.beans.property.StringProperty;
3434
import javafx.beans.value.ChangeListener;
3535
import javafx.beans.value.ObservableValue;
36+
import javafx.collections.transformation.FilteredList;
3637
import javafx.fxml.FXML;
3738
import javafx.scene.Node;
3839
import 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

Comments
 (0)