Skip to content

Commit 1dcfb6e

Browse files
committed
added automatic selection on Editor focus; fixed Popup on focus lost
1 parent e3ca9fc commit 1dcfb6e

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

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

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,28 +229,58 @@ public void changed(final ObservableValue<? extends Project> observable, final P
229229

230230
projectComboBox.getEditor().textProperty().addListener(new ChangeListener<String>() {
231231

232+
Boolean isValidProject = true;
233+
232234
@Override
233235
public void changed(final ObservableValue<? extends String> observable, final String oldValue,
234236
final String newValue) {
235-
LOG.debug("text Changed");
236237

237238
// ignore selectionChanges
238-
if (comboChange == true) {
239+
if (comboChange) {
239240
comboChange = false;
241+
// needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
242+
Platform.runLater(() -> {
243+
isValidProject = true;
244+
projectComboBox.getEditor().selectAll();
245+
});
246+
240247
return;
241248
}
249+
250+
// is necessary to not autoselect same Project if Project was selected
251+
if (isValidProject) {
252+
isValidProject = false;
253+
projectComboBox.getSelectionModel().clearSelection();
254+
}
242255
// needed to avoid exception on empty textfield https://bugs.openjdk.java.net/browse/JDK-8081700
243256
Platform.runLater(() -> {
244-
LOG.debug("Value:" + newValue);
257+
LOG.debug("Search:" + newValue);
245258
projectComboBox.hide();
246259
projectComboBox.setItems(model.getAllProjects().filtered(
247260
(project) -> ProjectsListViewController.doesProjectMatchSearchFilter(newValue, project)));
248-
projectComboBox.show();
261+
if (projectComboBox.getEditor().focusedProperty().get()) {
262+
projectComboBox.show();
263+
}
264+
249265
});
250266

251267
}
252268
});
253269

270+
projectComboBox.getEditor().focusedProperty().addListener(new ChangeListener<Boolean>() {
271+
272+
@Override
273+
public void changed(final ObservableValue<? extends Boolean> observable, final Boolean oldIsFocused,
274+
final Boolean newIsFocused) {
275+
if (newIsFocused) {
276+
Platform.runLater(() -> projectComboBox.getEditor().selectAll());
277+
} else {
278+
projectComboBox.hide();
279+
}
280+
281+
}
282+
});
283+
254284
}
255285

256286
public void initializeWith(final Work work) {

0 commit comments

Comments
 (0)