docs: add notes to makeMenuItems
This commit is contained in:
parent
f87b4e7d37
commit
5942250f11
1 changed files with 20 additions and 4 deletions
|
|
@ -82,6 +82,18 @@ public class IngredientListCell extends OrderedEditableListCell<RecipeIngredient
|
|||
this.setText(null);
|
||||
this.setGraphic(container);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a menu of ingredients from the provided iterable list of items.
|
||||
* Modifies the provided <code>menu</code> reference.
|
||||
* @param menu The MenuButton to add items to.
|
||||
* @param items The items to add to the dropdown menu.
|
||||
* @param labelMapper A function that outputs a string from the object to display on the label.
|
||||
* @param onSelect Callback that triggers upon selection.
|
||||
* @param container Parent container of the menu.
|
||||
* Required since the UI logic needs to append a field to the end of the HBox upon selection
|
||||
* @param <T> The type this menu concerns itself with.
|
||||
*/
|
||||
private <T> void makeMenuItems(
|
||||
MenuButton menu,
|
||||
Iterable<T> items,
|
||||
|
|
@ -90,15 +102,21 @@ public class IngredientListCell extends OrderedEditableListCell<RecipeIngredient
|
|||
HBox container) {
|
||||
MenuItem newIngredientItem = new MenuItem();
|
||||
newIngredientItem.setText("Something new...");
|
||||
|
||||
// on new ingredient click
|
||||
newIngredientItem.setOnAction(_ -> {
|
||||
menu.setText("New Ingredient");
|
||||
selectedIngredient.setValue(null);
|
||||
menu.setText("New Ingredient"); // otherwise the text label on menu refuses to update
|
||||
selectedIngredient.setValue(null); // indicate null to signal a new ingredient creation
|
||||
logger.info("Making new ingredient");
|
||||
// TODO printError() integration
|
||||
TextField newIngredientNameInput = makeNewIngredientNameField(selectedIngredient::set);
|
||||
container.getChildren().add(newIngredientNameInput);
|
||||
});
|
||||
|
||||
// Puts the add ingredient button and a separator on top of the dropdown menu.
|
||||
menu.getItems().addAll(newIngredientItem, new SeparatorMenuItem());
|
||||
|
||||
// Iterates over the list of items and applies the label and onSelect handlers.
|
||||
for (T item : items) {
|
||||
MenuItem mi = new MenuItem();
|
||||
mi.setText(labelMapper.apply(item));
|
||||
|
|
@ -127,8 +145,6 @@ public class IngredientListCell extends OrderedEditableListCell<RecipeIngredient
|
|||
Unit unit = unitChoice.getValue();
|
||||
Ingredient i = selectedIngredient.getValue();
|
||||
if (i == null) {
|
||||
|
||||
|
||||
return; // The user is forced to kindly try again until something valid comes up.
|
||||
}
|
||||
if (unit == null || !unit.isFormal()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue