|
|
@@ -11,7 +11,7 @@ import java.util.Locale;
|
|
|
import javax.swing.event.DocumentListener;
|
|
|
import javax.swing.text.NumberFormatter;
|
|
|
|
|
|
-import org.leumasjaffe.event.AnyActionDocumentListener;
|
|
|
+import org.leumasjaffe.observer.ObservableController;
|
|
|
import org.leumasjaffe.observer.ObserverDispatch;
|
|
|
import org.leumasjaffe.recipe.model.Ingredient;
|
|
|
|
|
|
@@ -21,6 +21,7 @@ import javax.swing.JLabel;
|
|
|
|
|
|
@SuppressWarnings("serial")
|
|
|
public class IngredientPanel extends JPanel implements AutoGrowPanel.DocumentListenable {
|
|
|
+ ObservableController<JTextField, Ingredient> controller;
|
|
|
private JTextField txtName;
|
|
|
|
|
|
public IngredientPanel(final Ingredient ingredient) {
|
|
|
@@ -84,10 +85,12 @@ public class IngredientPanel extends JPanel implements AutoGrowPanel.DocumentLis
|
|
|
add(txtPreparation, gbc_txtPreparation);
|
|
|
txtPreparation.setColumns(10);
|
|
|
|
|
|
- addDocumentListener((AnyActionDocumentListener) (e) -> {
|
|
|
- ingredient.setName(txtName.getText());
|
|
|
- ObserverDispatch.notifySubscribers(ingredient);
|
|
|
- });
|
|
|
+ // I technically don't need to listen here as of this change,
|
|
|
+ // but if I ever restore support for it, it will be convenient.
|
|
|
+ controller = new ObservableController<>(txtName,
|
|
|
+ Ingredient::getName, Ingredient::setName,
|
|
|
+ JTextField::setText);
|
|
|
+ controller.setObserved(ingredient);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -99,5 +102,11 @@ public class IngredientPanel extends JPanel implements AutoGrowPanel.DocumentLis
|
|
|
public void removeDocumentListener(DocumentListener dl) {
|
|
|
this.txtName.getDocument().removeDocumentListener(dl);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void removeNotify() {
|
|
|
+ super.removeNotify();
|
|
|
+ ObserverDispatch.unsubscribeAll(controller);
|
|
|
+ }
|
|
|
|
|
|
}
|