Explorar el Código

Fix bug where TagInputPanel was still editable in read-only mode.

Sam Jaffe hace 4 años
padre
commit
3e90e18919

+ 1 - 1
src/main/lombok/org/leumasjaffe/recipe/view/summary/SummaryPanel.java

@@ -21,7 +21,6 @@ import org.leumasjaffe.recipe.model.Element;
 import org.leumasjaffe.recipe.model.RecipeCard;
 import org.leumasjaffe.recipe.view.CollatedDurationPanel;
 import org.leumasjaffe.recipe.view.ImagePanel;
-import org.leumasjaffe.recipe.view.TagInputPanel;
 import org.leumasjaffe.recipe.viewmodel.ScaleFactor;
 
 import lombok.AccessLevel;
@@ -219,6 +218,7 @@ public class SummaryPanel extends JPanel {
 		spnServings.setVisible(enabled);
 		spnServingsToMake.setValue(spnServings.getValue());
 		spnServingsToMake.setVisible(!enabled);
+		panelTags.setEnabled(enabled);
 	}
 	
 	@Override

+ 27 - 9
src/main/lombok/org/leumasjaffe/recipe/view/TagInputPanel.java

@@ -1,4 +1,4 @@
-package org.leumasjaffe.recipe.view;
+package org.leumasjaffe.recipe.view.summary;
 
 import javax.imageio.ImageIO;
 import javax.swing.Icon;
@@ -7,7 +7,6 @@ import javax.swing.JButton;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.event.KeyEvent;
@@ -16,6 +15,7 @@ import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.stream.Stream;
 
 import javax.swing.JTextField;
 
@@ -40,12 +40,16 @@ public class TagInputPanel extends JPanel {
 	}
 	
 	private final class TagField extends JPanel {
+		JButton btnRemove;
+		
 		private TagField(final String value) {
 			setLayout(new FlowLayout(FlowLayout.CENTER));
 			add(new JLabel(value));
-			JButton btnRemove = new JButton(X_MARK);
+			
+			btnRemove = new JButton(X_MARK);
 			btnRemove.setPreferredSize(new Dimension(10, 10));
 			add(btnRemove);
+			
 			btnRemove.addActionListener(e -> {
 				setVisible(false);
 				TagInputPanel.this.model.remove(value);
@@ -53,17 +57,23 @@ public class TagInputPanel extends JPanel {
 				TagInputPanel.this.revalidate();
 			});
 		}
+		
+		@Override
+		public void setEnabled(boolean enabled) {
+			btnRemove.setEnabled(enabled);
+			btnRemove.setVisible(enabled);
+		}
 	}
 	
 	@NonFinal Set<String> model = new HashSet<>();
+	JLabel lblTags = new JLabel("Tags:");
 	JTextField textField;
 
 	public TagInputPanel() {
 		setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0));
-		
+				
 		textField = new JTextField();
 		new GhostTextController(textField, "Tags...");
-		add(textField);
 		textField.setColumns(10);
 		
 		textField.addKeyListener(new KeyListener() {
@@ -78,6 +88,8 @@ public class TagInputPanel extends JPanel {
 				}
 			}
 		});
+		
+		clear();
 	}
 	
 	public void setModel(Set<String> model) {
@@ -89,11 +101,10 @@ public class TagInputPanel extends JPanel {
 	}
 
 	private void clear() {
-		for (Component comp : getComponents()) {
-			comp.setVisible(false);
-		}
-		removeAll();
+		Stream.of(getComponents()).forEach(c -> c.setVisible(false));
 		textField.setVisible(true);
+
+		add(lblTags);
 		add(textField);
 	}
 
@@ -105,4 +116,11 @@ public class TagInputPanel extends JPanel {
 		revalidate();
 		textField.requestFocus();
 	}
+	
+	@Override
+	public void setEnabled(boolean enabled) {
+		Stream.of(getComponents()).forEach(c -> c.setEnabled(enabled));
+		lblTags.setVisible(!enabled);
+		textField.setVisible(enabled);
+	}
 }