Ver código fonte

Start designing ability to save photos of images.

Sam Jaffe 4 anos atrás
pai
commit
5553ecfa0f

+ 1 - 3
src/main/lombok/org/leumasjaffe/recipe/model/RecipeCard.java

@@ -7,8 +7,6 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Stream;
 
-import javax.swing.ImageIcon;
-
 import org.leumasjaffe.observer.Observable;
 
 import lombok.Data;
@@ -21,7 +19,7 @@ public class RecipeCard extends Observable.Instance implements CompoundRecipeCom
 	int servings = 1;
 	Set<String> tags = new HashSet<>();
 	// TODO: Nutrition information
-	Optional<ImageIcon> photo = Optional.empty(); // TODO JSONIZATION	
+	Optional<String> photo = Optional.empty(); // TODO JSONIZATION	
 	List<Element> elements = new ArrayList<>();
 	
 	@Override

+ 21 - 9
src/main/lombok/org/leumasjaffe/recipe/view/ImagePanel.java

@@ -10,6 +10,7 @@ import javax.imageio.ImageIO;
 import javax.swing.JPanel;
 
 import lombok.Getter;
+import lombok.NonNull;
 import lombok.Synchronized;
 
 @SuppressWarnings("serial")
@@ -23,15 +24,26 @@ public class ImagePanel extends JPanel {
     	setPreferredSize(new Dimension(200, 200));
     }
     
-    public ImagePanel(String imagePath) {
-       try {                
-          image = ImageIO.read(new File(imagePath));
-       } catch (IOException ex) {
-          image = getPlaceholder();
-       }
-       setMinimumSize(new Dimension(200, 200));
-       setPreferredSize(new Dimension(200, 200));
-   }
+    public ImagePanel(final @NonNull String path) {
+    	setImage(path);
+    	setMinimumSize(new Dimension(200, 200));
+    	setPreferredSize(new Dimension(200, 200));
+    }
+    
+    public void setImage(final String path) {
+    	if (path == null || !setImageImpl(path)) {
+    		image = getPlaceholder();
+    	}
+    }
+
+    private boolean setImageImpl(final @NonNull String path) {
+    	try {                
+    		image = ImageIO.read(new File(path));
+    		return true;
+    	} catch (IOException ex) {
+    		return false;
+    	}
+    }
 
     @Synchronized
     private static BufferedImage getDefaultImage() {

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

@@ -43,6 +43,7 @@ public class SummaryPanel extends JPanel {
 	ObservableListener<CollatedDurationPanel, RecipeCard> durationListener;
 	ObservableListener<JPanel, RecipeCard> childListener;
 	
+	ImagePanel panelPhoto;
 	JTextField txtTitle;
 	JTextArea txaDescription;
 	TagInputPanel panelTags;
@@ -151,7 +152,7 @@ public class SummaryPanel extends JPanel {
 		gbl_panel.rowWeights = new double[]{0.0, 0.0, 1.0, Double.MIN_VALUE};
 		panel.setLayout(gbl_panel);
 		
-		JPanel panelPhoto = new ImagePanel();
+		panelPhoto = new ImagePanel();
 		GridBagConstraints gbc_panelPhoto = new GridBagConstraints();
 		gbc_panelPhoto.fill = GridBagConstraints.BOTH;
 		gbc_panelPhoto.insets = new Insets(0, 0, 5, 0);
@@ -209,6 +210,8 @@ public class SummaryPanel extends JPanel {
 	}
 	
 	public void setModel(final RecipeCard card) {
+		// We need to always update the image
+		panelPhoto.setImage(card.getPhoto().orElse(null));
 		panelTags.setModel(card.getTags());
 		titleBinding.setModel(card);
 		servingsBinding.setModel(card);