Skip to content

Commit 84a2db0

Browse files
committed
Merge branch 'develop' into feature/time_validation_on_focus_lost
2 parents 4717917 + 90f92da commit 84a2db0

File tree

2 files changed

+69
-18
lines changed

2 files changed

+69
-18
lines changed

pom.xml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,22 @@
3232
</parent>
3333

3434
<repositories>
35-
<!-- Including for fontawesome -->
35+
36+
<!-- Including for fontawesome-->
3637
<repository>
3738
<id>fontawesomefx-repo</id>
3839
<name>FontAwesome Repository</name>
39-
<url>https://bintray.com/jerady/maven/FontAwesomeFX</url>
40+
<url>https://dl.bintray.com/jerady/maven</url>
4041
</repository>
41-
</repositories>
42+
43+
<!-- needed to resolve against central first-->
44+
<repository>
45+
<id>central</id>
46+
<name>Maven Central</name>
47+
<layout>default</layout>
48+
<url>https://repo1.maven.org/maven2</url>
49+
</repository>
50+
</repositories>
4251

4352
<properties>
4453
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

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

Lines changed: 57 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import org.slf4j.Logger;
2525
import org.slf4j.LoggerFactory;
2626

27+
import com.sun.javafx.scene.control.skin.ComboBoxListViewSkin;
28+
2729
import de.doubleslash.keeptime.common.ColorHelper;
2830
import de.doubleslash.keeptime.common.StyleUtils;
2931
import de.doubleslash.keeptime.model.Model;
@@ -33,15 +35,19 @@
3335
import javafx.beans.property.StringProperty;
3436
import javafx.beans.value.ChangeListener;
3537
import javafx.beans.value.ObservableValue;
38+
import javafx.collections.transformation.FilteredList;
3639
import javafx.fxml.FXML;
3740
import javafx.scene.Node;
3841
import javafx.scene.control.ComboBox;
3942
import javafx.scene.control.DatePicker;
4043
import javafx.scene.control.ListCell;
44+
import javafx.scene.control.ListView;
4145
import javafx.scene.control.Spinner;
4246
import javafx.scene.control.SpinnerValueFactory;
4347
import javafx.scene.control.TextArea;
4448
import javafx.scene.input.KeyCode;
49+
import javafx.scene.input.KeyCodeCombination;
50+
import javafx.scene.input.KeyEvent;
4551
import javafx.scene.layout.GridPane;
4652
import javafx.scene.paint.Color;
4753
import javafx.util.StringConverter;
@@ -77,9 +83,12 @@ public class ManageWorkController {
7783
private boolean comboChange;
7884
private Project selectedProject;
7985

86+
private FilteredList<Project> filteredList;
87+
8088
public void setModel(final Model model) {
8189
this.model = model;
82-
projectComboBox.setItems(model.getSortedAvailableProjects());
90+
filteredList = new FilteredList<>(model.getSortedAvailableProjects());
91+
projectComboBox.setItems(filteredList);
8392
}
8493

8594
@FXML
@@ -146,8 +155,11 @@ protected void updateItem(final Project project, final boolean empty) {
146155
if (project == null || empty) {
147156
setGraphic(null);
148157
} else {
149-
setColor(this, project.getColor());
158+
setColor(this, model.hoverBackgroundColor.get());
159+
160+
setTextFill(project.getColor());
150161
setText(project.getName());
162+
151163
setUnderline(project.isWork());
152164
}
153165
}
@@ -184,16 +196,17 @@ public Project fromString(final String string) {
184196
comboChange = true;
185197
// needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
186198
Platform.runLater(() -> {
187-
projectComboBox.getEditor().selectAll();
188-
setColor(projectComboBox, newValue.getColor());
199+
setTextColor(projectComboBox.getEditor(), newValue.getColor());
189200
});
190201
}
191202

192203
);
193204

205+
enableStrgA_combo();
206+
194207
projectComboBox.getEditor().textProperty().addListener(new ChangeListener<String>() {
195208

196-
Boolean isValidProject = true;
209+
boolean isValidProject = true;
197210

198211
@Override
199212
public void changed(final ObservableValue<? extends String> observable, final String oldValue,
@@ -210,14 +223,20 @@ public void changed(final ObservableValue<? extends String> observable, final St
210223
if (isValidProject) {
211224
isValidProject = false;
212225
projectComboBox.getSelectionModel().clearSelection();
226+
// needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
227+
Platform.runLater(() -> {
228+
setTextColor(projectComboBox.getEditor(), model.hoverFontColor.get());
229+
});
213230
}
214231

215232
// needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
216233
Platform.runLater(() -> {
217234
projectComboBox.hide();
218-
projectComboBox
219-
.setItems(model.getSortedAvailableProjects().filtered(project -> ProjectsListViewController
220-
.doesProjectMatchSearchFilter(projectComboBox.getEditor().getText(), project)));
235+
236+
final String searchText = projectComboBox.getEditor().getText();
237+
filteredList.setPredicate(
238+
project -> ProjectsListViewController.doesProjectMatchSearchFilter(searchText, project));
239+
221240
if (projectComboBox.getEditor().focusedProperty().get()) {
222241
projectComboBox.show();
223242
}
@@ -266,8 +285,33 @@ public void initializeWith(final Work work) {
266285

267286
projectComboBox.getSelectionModel().select(work.getProject());
268287

269-
setColor(projectComboBox, work.getProject().getColor());
288+
setColor(projectComboBox, model.hoverBackgroundColor.get());
289+
setColor(projectComboBox.getEditor(), model.hoverBackgroundColor.get());
270290

291+
setTextColor(projectComboBox.getEditor(), model.hoverFontColor.get());
292+
}
293+
294+
public Work getWorkFromUserInput() {
295+
return new Work(startDatePicker.getValue(),
296+
LocalDateTime.of(startDatePicker.getValue(), startTimeSpinner.getValue()),
297+
LocalDateTime.of(endDatePicker.getValue(), endTimeSpinner.getValue()), selectedProject,
298+
noteTextArea.getText());
299+
}
300+
301+
private void enableStrgA_combo() {
302+
// strg+a Behaviour bug hack
303+
// https://stackoverflow.com/questions/51943654/javafx-combobox-make-control-a-select-all-in-text-box-while-dropdown-is-visi
304+
projectComboBox.setOnShown(e -> {
305+
final ComboBoxListViewSkin<?> skin = (ComboBoxListViewSkin<?>) projectComboBox.getSkin();
306+
final ListView<?> list = (ListView<?>) skin.getPopupContent();
307+
final KeyCodeCombination ctrlA = new KeyCodeCombination(KeyCode.A, KeyCodeCombination.CONTROL_DOWN);
308+
list.addEventFilter(KeyEvent.KEY_PRESSED, keyEvent -> {
309+
if (ctrlA.match(keyEvent)) {
310+
projectComboBox.getEditor().selectAll();
311+
}
312+
});
313+
projectComboBox.setOnShown(null);
314+
});
271315
}
272316

273317
private void setColor(final Node object, final Color color) {
@@ -276,12 +320,10 @@ private void setColor(final Node object, final Color color) {
276320
object.setStyle(style);
277321
}
278322

279-
public Work getWorkFromUserInput() {
280-
281-
return new Work(startDatePicker.getValue(),
282-
LocalDateTime.of(startDatePicker.getValue(), startTimeSpinner.getValue()),
283-
LocalDateTime.of(endDatePicker.getValue(), endTimeSpinner.getValue()), selectedProject,
284-
noteTextArea.getText());
323+
private void setTextColor(final Node object, final Color color) {
324+
final String style = StyleUtils.changeStyleAttribute(object.getStyle(), "fx-text-fill",
325+
"rgba(" + ColorHelper.colorToCssRgba(color) + ")");
326+
object.setStyle(style);
285327
}
286328

287329
}

0 commit comments

Comments
 (0)