Browse Source

Add things to support testing of GUI classes

Sam Jaffe 5 years ago
parent
commit
5c1bf0e8a3

+ 8 - 2
src/main/lombok/org/leumasjaffe/recipe/view/CardPanel.java

@@ -8,12 +8,18 @@ import org.leumasjaffe.recipe.model.Card;
 import org.leumasjaffe.recipe.model.Preparation;
 import org.leumasjaffe.recipe.model.Rest;
 import org.leumasjaffe.recipe.model.Step;
+
+import lombok.AccessLevel;
+import lombok.experimental.FieldDefaults;
+import lombok.experimental.NonFinal;
+
 import org.jdesktop.swingx.VerticalLayout;
 
 @SuppressWarnings("serial")
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class CardPanel extends JPanel {
-	private int steps = 0;
-	private final ForwardingObservableListener<Card> listener = new ForwardingObservableListener<>();
+	@NonFinal int steps = 0;
+	ForwardingObservableListener<Card> listener = new ForwardingObservableListener<>();
 
 	public CardPanel(final Card card) {		
 		setLayout(new VerticalLayout(5));

+ 14 - 5
src/main/lombok/org/leumasjaffe/recipe/view/IngredientPreparationPanel.java

@@ -14,14 +14,23 @@ import org.leumasjaffe.observer.ObservableListener;
 import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Ingredient;
 
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.experimental.FieldDefaults;
+
 import javax.swing.JFormattedTextField;
 import java.awt.Font;
 import javax.swing.JLabel;
 
 @SuppressWarnings("serial")
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class IngredientPreparationPanel extends JPanel {
 	
-	private ObservableListener<IngredientPreparationPanel, Ingredient> listener;
+	ObservableListener<IngredientPreparationPanel, Ingredient> listener;
+	@Getter(AccessLevel.PACKAGE) JTextField txtName;
+	@Getter(AccessLevel.PACKAGE) JFormattedTextField txtAmount;
+	@Getter(AccessLevel.PACKAGE) JTextField txtUnit;
+	@Getter(AccessLevel.PACKAGE) JTextField txtPreparation;
 	
 	public IngredientPreparationPanel(final Ingredient ingredient) {
 		GridBagLayout gridBagLayout = new GridBagLayout();
@@ -39,7 +48,7 @@ public class IngredientPreparationPanel extends JPanel {
 		gbc_label.gridy = 0;
 		add(label, gbc_label);
 		
-		JTextField txtName = new JTextField(ingredient.getName());
+		txtName = new JTextField(ingredient.getName());
 		txtName.setEditable(false);
 		txtName.setFont(new Font("Source Code Pro", Font.PLAIN, 10));
 		GridBagConstraints gbc_txtName = new GridBagConstraints();
@@ -53,7 +62,7 @@ public class IngredientPreparationPanel extends JPanel {
 		NumberFormatter fmtDone = new NumberFormatter(NumberFormat.getNumberInstance(Locale.getDefault()));
 		fmtDone.setMinimum(0.0);
 		fmtDone.setCommitsOnValidEdit(true);
-		JFormattedTextField txtAmount = new JFormattedTextField(fmtDone);
+		txtAmount = new JFormattedTextField(fmtDone);
 		txtAmount.setEditable(false);
 		txtAmount.setValue(ingredient.getAmount().getValue());
 		txtAmount.setFont(new Font("Source Code Pro", Font.PLAIN, 10));
@@ -65,7 +74,7 @@ public class IngredientPreparationPanel extends JPanel {
 		add(txtAmount, gbc_txtAmount);
 		txtAmount.setColumns(4);
 		
-		JTextField txtUnit = new JTextField(ingredient.getAmount().unitName());
+		txtUnit = new JTextField(ingredient.getAmount().unitName());
 		txtUnit.setEditable(false);
 		txtUnit.setFont(new Font("Source Code Pro", Font.PLAIN, 10));
 		GridBagConstraints gbc_txtUnit = new GridBagConstraints();
@@ -77,7 +86,7 @@ public class IngredientPreparationPanel extends JPanel {
 		add(txtUnit, gbc_txtUnit);
 		txtUnit.setColumns(6);
 		
-		JTextField txtPreparation = new JTextField(ingredient.getPreparation());
+		txtPreparation = new JTextField(ingredient.getPreparation());
 		txtPreparation.setEditable(false);
 		txtPreparation.setFont(new Font("Source Code Pro", Font.PLAIN, 10));
 		GridBagConstraints gbc_txtPreparation = new GridBagConstraints();

+ 11 - 5
src/main/lombok/org/leumasjaffe/recipe/view/PreparationPanel.java

@@ -5,6 +5,10 @@ import javax.swing.JPanel;
 import org.jdesktop.swingx.VerticalLayout;
 import org.leumasjaffe.recipe.model.Preparation;
 
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.experimental.FieldDefaults;
+
 import java.awt.GridBagLayout;
 
 import java.awt.GridBagConstraints;
@@ -15,8 +19,10 @@ import java.awt.Component;
 import javax.swing.Box;
 
 @SuppressWarnings("serial")
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class PreparationPanel extends JPanel {
-	private JLabel lblIndex;
+	@Getter(AccessLevel.PACKAGE) JLabel lblDuration;
+	@Getter(AccessLevel.PACKAGE) JPanel panelIngredients;
 		
 	public PreparationPanel(Preparation step) {
 		GridBagLayout gridBagLayout = new GridBagLayout();
@@ -40,7 +46,7 @@ public class PreparationPanel extends JPanel {
 		gbl_panelLeft.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
 		panelLeft.setLayout(gbl_panelLeft);
 		
-		lblIndex = new JLabel("Prep");
+		JLabel lblIndex = new JLabel("Prep");
 		GridBagConstraints gbc_lblIndex = new GridBagConstraints();
 		gbc_lblIndex.fill = GridBagConstraints.HORIZONTAL;
 		gbc_lblIndex.insets = new Insets(0, 0, 5, 5);
@@ -55,14 +61,14 @@ public class PreparationPanel extends JPanel {
 		gbc_horizontalGlue.gridy = 0;
 		panelLeft.add(horizontalGlue, gbc_horizontalGlue);
 		
-		JLabel lblDuration = new JLabel("Requires: " + step.getDuration().toString());
+		lblDuration = new JLabel("Requires: " + step.getDuration().toString());
 		GridBagConstraints gbc_lblDuration = new GridBagConstraints();
 		gbc_lblDuration.insets = new Insets(0, 0, 5, 0);
 		gbc_lblDuration.gridx = 2;
 		gbc_lblDuration.gridy = 0;
 		panelLeft.add(lblDuration, gbc_lblDuration);
 		
-		JPanel panelIngredients = new JPanel();
+		panelIngredients = new JPanel();
 		panelIngredients.setLayout(new VerticalLayout(5));
 		GridBagConstraints gbc_panelIngredients = new GridBagConstraints();
 		gbc_panelIngredients.gridwidth = 3;
@@ -71,7 +77,7 @@ public class PreparationPanel extends JPanel {
 		gbc_panelIngredients.gridx = 0;
 		gbc_panelIngredients.gridy = 1;
 		panelLeft.add(panelIngredients, gbc_panelIngredients);
-		step.getIngredients().stream().map(IngredientPreparationPanel::new).forEach(panelIngredients::add);
+		step.getIngredientsAsStream().map(IngredientPreparationPanel::new).forEach(panelIngredients::add);
 	}
 
 }

+ 14 - 2
src/main/lombok/org/leumasjaffe/recipe/view/ProductPanel.java

@@ -4,17 +4,23 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
 import org.leumasjaffe.observer.ForwardingObservableListener;
+import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Card;
 import org.leumasjaffe.recipe.model.Product;
+
+import lombok.AccessLevel;
+import lombok.experimental.FieldDefaults;
+
 import org.jdesktop.swingx.VerticalLayout;
 
 import javax.swing.JButton;
 import javax.swing.JSeparator;
 
 @SuppressWarnings("serial")
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class ProductPanel extends JScrollPane {
-	private JPanel panelViewPort;
-	private final ForwardingObservableListener<Product> listener = new ForwardingObservableListener<>();
+	JPanel panelViewPort;
+	ForwardingObservableListener<Product> listener = new ForwardingObservableListener<>();
 
 	public ProductPanel(Product product) {
 		JPanel panelColumnHeader = new JPanel();
@@ -34,4 +40,10 @@ public class ProductPanel extends JScrollPane {
 		
 		listener.setObserved(product, product.getCards());
 	}
+	
+	@Override
+	public void removeNotify() {
+		super.removeNotify();
+		ObserverDispatch.unsubscribeAll(listener);
+	}
 }

+ 12 - 5
src/main/lombok/org/leumasjaffe/recipe/view/ProductSummaryPanel.java

@@ -7,6 +7,10 @@ import org.leumasjaffe.observer.ObservableListener;
 import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Product;
 
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.experimental.FieldDefaults;
+
 import java.awt.GridBagLayout;
 import java.awt.Insets;
 
@@ -14,8 +18,11 @@ import javax.swing.JLabel;
 import java.awt.GridBagConstraints;
 
 @SuppressWarnings("serial")
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class ProductSummaryPanel extends JPanel {
 	ObservableListener<JPanel, Product> listener;
+	@Getter(AccessLevel.PACKAGE) JLabel lblProductName;
+	@Getter(AccessLevel.PACKAGE) JPanel panelIngredients;
 	
 	public ProductSummaryPanel(final Product product) {
 		GridBagLayout gridBagLayout = new GridBagLayout();
@@ -25,24 +32,24 @@ public class ProductSummaryPanel extends JPanel {
 		gridBagLayout.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
 		setLayout(gridBagLayout);
 		
-		JLabel lblProductName = new JLabel(product.getName());
+		lblProductName = new JLabel(product.getName());
 		GridBagConstraints gbc_lblProductName = new GridBagConstraints();
 		gbc_lblProductName.insets = new Insets(0, 0, 5, 5);
 		gbc_lblProductName.gridx = 0;
 		gbc_lblProductName.gridy = 0;
 		add(lblProductName, gbc_lblProductName);
 				
-		JPanel panel = new JPanel();
-		panel.setLayout(new VerticalLayout());
+		panelIngredients = new JPanel();
+		panelIngredients.setLayout(new VerticalLayout());
 		GridBagConstraints gbc_panel = new GridBagConstraints();
 		gbc_panel.gridwidth = 2;
 		gbc_panel.insets = new Insets(0, 0, 0, 5);
 		gbc_panel.fill = GridBagConstraints.BOTH;
 		gbc_panel.gridx = 0;
 		gbc_panel.gridy = 1;
-		add(panel, gbc_panel);
+		add(panelIngredients, gbc_panel);
 		
-		listener = new ObservableListener<>(panel, (c, t) -> {
+		listener = new ObservableListener<>(panelIngredients, (c, t) -> {
 			c.removeAll();
 			product.getIngredients().stream().map(SummaryIngredientPanel::new).forEach(c::add);
 		});

+ 10 - 3
src/main/lombok/org/leumasjaffe/recipe/view/RestPanel.java

@@ -3,13 +3,21 @@ package org.leumasjaffe.recipe.view;
 import javax.swing.JPanel;
 
 import org.leumasjaffe.recipe.model.Rest;
+
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.experimental.FieldDefaults;
+
 import java.awt.GridBagLayout;
 import javax.swing.JLabel;
 import java.awt.GridBagConstraints;
 import java.awt.Insets;
 
 @SuppressWarnings("serial")
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class RestPanel extends JPanel {
+	@Getter(AccessLevel.PACKAGE) JLabel lblLocation;
+	@Getter(AccessLevel.PACKAGE) JLabel lblDuration;
 
 	public RestPanel(Rest rest) {
 		GridBagLayout gridBagLayout = new GridBagLayout();
@@ -26,19 +34,18 @@ public class RestPanel extends JPanel {
 		gbc_lblRest.gridy = 0;
 		add(lblRest, gbc_lblRest);
 		
-		JLabel lblLocation = new JLabel(rest.getWhere().getHumanReadable());
+		lblLocation = new JLabel(rest.getWhere().getHumanReadable());
 		GridBagConstraints gbc_lblLocation = new GridBagConstraints();
 		gbc_lblLocation.insets = new Insets(0, 0, 0, 5);
 		gbc_lblLocation.gridx = 1;
 		gbc_lblLocation.gridy = 0;
 		add(lblLocation, gbc_lblLocation);
 		
-		JLabel lblDuration = new JLabel(rest.getDuration().toString());
+		lblDuration = new JLabel(rest.getDuration().toString());
 		GridBagConstraints gbc_lblDuration = new GridBagConstraints();
 		gbc_lblDuration.gridx = 2;
 		gbc_lblDuration.gridy = 0;
 		add(lblDuration, gbc_lblDuration);
-		// TODO Auto-generated constructor stub
 	}
 
 }

+ 12 - 5
src/main/lombok/org/leumasjaffe/recipe/view/StepPanel.java

@@ -7,6 +7,10 @@ import org.leumasjaffe.observer.ForwardingObservableListener;
 import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Step;
 
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.experimental.FieldDefaults;
+
 import java.awt.GridBagLayout;
 
 import java.awt.GridBagConstraints;
@@ -19,10 +23,13 @@ import javax.swing.Box;
 import java.awt.Dimension;
 
 @SuppressWarnings("serial")
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class StepPanel extends JPanel implements AutoGrowPanel.DocumentListenable {
-	private JLabel lblIndex;
-	private JTextPane txtpnInstructions;
-	private final ForwardingObservableListener<Step> listener = new ForwardingObservableListener<>();
+	@Getter(AccessLevel.PACKAGE) JLabel lblIndex;
+	@Getter(AccessLevel.PACKAGE) JLabel lblDuration;
+	@Getter(AccessLevel.PACKAGE) JTextPane txtpnInstructions;
+	@Getter(AccessLevel.PACKAGE) JPanel panelIngredients;
+	ForwardingObservableListener<Step> listener = new ForwardingObservableListener<>();
 		
 	public StepPanel(int zeroIndex, Step step) {
 		GridBagLayout gridBagLayout = new GridBagLayout();
@@ -61,14 +68,14 @@ public class StepPanel extends JPanel implements AutoGrowPanel.DocumentListenabl
 		gbc_horizontalGlue.gridy = 0;
 		panelLeft.add(horizontalGlue, gbc_horizontalGlue);
 		
-		JLabel lblDuration = new JLabel("Requires: " + step.getDuration().toString());
+		lblDuration = new JLabel("Requires: " + step.getDuration().toString());
 		GridBagConstraints gbc_lblDuration = new GridBagConstraints();
 		gbc_lblDuration.insets = new Insets(0, 0, 5, 0);
 		gbc_lblDuration.gridx = 2;
 		gbc_lblDuration.gridy = 0;
 		panelLeft.add(lblDuration, gbc_lblDuration);
 		
-		AutoGrowPanel panelIngredients = new AutoGrowPanel(IngredientPanel::new, step.getIngredients());
+		panelIngredients = new AutoGrowPanel(IngredientPanel::new, step.getIngredients());
 		GridBagConstraints gbc_panelIngredients = new GridBagConstraints();
 		gbc_panelIngredients.gridwidth = 3;
 		gbc_panelIngredients.insets = new Insets(0, 0, 0, 5);

+ 12 - 4
src/main/lombok/org/leumasjaffe/recipe/view/SummaryIngredientPanel.java

@@ -14,13 +14,21 @@ import org.leumasjaffe.observer.ObservableListener;
 import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Ingredient;
 
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.experimental.FieldDefaults;
+
 import javax.swing.JFormattedTextField;
 import java.awt.Font;
 import javax.swing.JLabel;
 
 @SuppressWarnings("serial")
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class SummaryIngredientPanel extends JPanel {
-	private ObservableListener<SummaryIngredientPanel, Ingredient> listener;
+	ObservableListener<SummaryIngredientPanel, Ingredient> listener;
+	@Getter(AccessLevel.PACKAGE) JTextField txtName;
+	@Getter(AccessLevel.PACKAGE) JFormattedTextField txtAmount;
+	@Getter(AccessLevel.PACKAGE) JTextField txtUnit;
 	
 	public SummaryIngredientPanel(final Ingredient ingredient) {
 		GridBagLayout gridBagLayout = new GridBagLayout();
@@ -38,7 +46,7 @@ public class SummaryIngredientPanel extends JPanel {
 		gbc_label.gridy = 0;
 		add(label, gbc_label);
 		
-		JTextField txtName = new JTextField(ingredient.getName());
+		txtName = new JTextField(ingredient.getName());
 		txtName.setEditable(false);
 		txtName.setFont(new Font("Source Code Pro", Font.PLAIN, 10));
 		GridBagConstraints gbc_txtName = new GridBagConstraints();
@@ -52,7 +60,7 @@ public class SummaryIngredientPanel extends JPanel {
 		NumberFormatter fmtDone = new NumberFormatter(NumberFormat.getNumberInstance(Locale.getDefault()));
 		fmtDone.setMinimum(0.0);
 		fmtDone.setCommitsOnValidEdit(true);
-		JFormattedTextField txtAmount = new JFormattedTextField(fmtDone);
+		txtAmount = new JFormattedTextField(fmtDone);
 		txtAmount.setEditable(false);
 		txtAmount.setValue(ingredient.getAmount().getValue());
 		txtAmount.setFont(new Font("Source Code Pro", Font.PLAIN, 10));
@@ -64,7 +72,7 @@ public class SummaryIngredientPanel extends JPanel {
 		add(txtAmount, gbc_txtAmount);
 		txtAmount.setColumns(4);
 		
-		JTextField txtUnit = new JTextField(ingredient.getAmount().unitName());
+		txtUnit = new JTextField(ingredient.getAmount().unitName());
 		txtUnit.setEditable(false);
 		txtUnit.setFont(new Font("Source Code Pro", Font.PLAIN, 10));
 		GridBagConstraints gbc_txtUnit = new GridBagConstraints();