Forráskód Böngészése

trying ot add stars to pics, using statics as well. probably a bunch of errors

tarfeef101 6 éve
szülő
commit
e8cf3191c2

+ 218 - 3
assignments/a3/src/main/java/Gallery.java

@@ -21,6 +21,20 @@ public class Gallery extends JPanel implements Observer, Serializable
     this.items = new ArrayList();
     reList();
     reFill();
+    
+    try
+    {
+      Item.fullStarImg = ImageIO.read(new File("src/main/resources/fullStar.png"));
+    } catch(IOException e) {}
+    try
+    {
+      Item.emptyStarImg = ImageIO.read(new File("src/main/resources/emptyStar.png"));
+    } catch(IOException e) {}
+    Item.fullStarImg = Item.fullStarImg.getScaledInstance(50, 50,  java.awt.Image.SCALE_SMOOTH);
+    Item.emptyStarImg = Item.emptyStarImg.getScaledInstance(50, 50,  java.awt.Image.SCALE_SMOOTH);
+    Item.fullStarIcon = new ImageIcon(Item.fullStarImg);
+    Item.emptyStarIcon = new ImageIcon(Item.emptyStarImg);
+    
     model.addObserver(this);
   }
 
@@ -74,8 +88,18 @@ class Item extends JPanel implements Serializable
   private ImageIcon picture;
   private JLabel pic;
   private JLabel name;
-  private JLabel rating;
+  private JPanel rating;
   private JLabel dateSize;
+  public static Image fullStarImg;
+  public static Image emptyStarImg;
+  public static ImageIcon fullStarIcon;
+  public static ImageIcon emptyStarIcon;
+  private JRadioButton star1;
+  private JRadioButton star2;
+  private JRadioButton star3;
+  private JRadioButton star4;
+  private JRadioButton star5;
+  private ButtonGroup stars;
   
   private class clickListener extends MouseInputAdapter
   {
@@ -91,11 +115,196 @@ class Item extends JPanel implements Serializable
     }
   }
   private clickListener clicklistener;
+  
+  private class superListener implements ActionListener
+  {
+    public void actionPerformed(ActionEvent e)
+    {
+      if (e.getSource() == star1)
+      {
+        if (!(star1.isSelected()))
+        {
+          star1.setSelected(false);
+          star2.setSelected(false);
+          star3.setSelected(false);
+          star4.setSelected(false);
+          star5.setSelected(false);
+          star1.setIcon(emptyStarIcon);
+          star2.setIcon(emptyStarIcon);
+          star3.setIcon(emptyStarIcon);
+          star4.setIcon(emptyStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(0);
+        }
+        else
+        {
+          star1.setSelected(true);
+          star2.setSelected(false);
+          star3.setSelected(false);
+          star4.setSelected(false);
+          star5.setSelected(false);
+          star1.setIcon(fullStarIcon);
+          star2.setIcon(emptyStarIcon);
+          star3.setIcon(emptyStarIcon);
+          star4.setIcon(emptyStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(1);
+        }
+      }
+      else if (e.getSource() == star2)
+      {
+        if (!(star2.isSelected()))
+        {
+          star1.setSelected(false);
+          star2.setSelected(false);
+          star3.setSelected(false);
+          star4.setSelected(false);
+          star5.setSelected(false);
+          star1.setIcon(emptyStarIcon);
+          star2.setIcon(emptyStarIcon);
+          star3.setIcon(emptyStarIcon);
+          star4.setIcon(emptyStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(0);
+        }
+        else
+        {
+          star1.setSelected(true);
+          star2.setSelected(true);
+          star3.setSelected(false);
+          star4.setSelected(false);
+          star5.setSelected(false);
+          star1.setIcon(fullStarIcon);
+          star2.setIcon(fullStarIcon);
+          star3.setIcon(emptyStarIcon);
+          star4.setIcon(emptyStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(2);
+        }
+      }
+      else if (e.getSource() == star3)
+      {
+        if (!(star3.isSelected()))
+        {
+          star1.setSelected(false);
+          star2.setSelected(false);
+          star3.setSelected(false);
+          star4.setSelected(false);
+          star5.setSelected(false);
+          star1.setIcon(emptyStarIcon);
+          star2.setIcon(emptyStarIcon);
+          star3.setIcon(emptyStarIcon);
+          star4.setIcon(emptyStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(0);
+        }
+        else
+        {
+          star1.setSelected(true);
+          star2.setSelected(true);
+          star3.setSelected(true);
+          star4.setSelected(false);
+          star5.setSelected(false);
+          star1.setIcon(fullStarIcon);
+          star2.setIcon(fullStarIcon);
+          star3.setIcon(fullStarIcon);
+          star4.setIcon(emptyStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(3);
+        }
+      }
+      else if (e.getSource() == star4)
+      {
+        if (!(star4.isSelected()))
+        {
+          star1.setSelected(false);
+          star2.setSelected(false);
+          star3.setSelected(false);
+          star4.setSelected(false);
+          star5.setSelected(false);
+          star1.setIcon(emptyStarIcon);
+          star2.setIcon(emptyStarIcon);
+          star3.setIcon(emptyStarIcon);
+          star4.setIcon(emptyStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(0);
+        }
+        else
+        {
+          star1.setSelected(true);
+          star2.setSelected(true);
+          star3.setSelected(true);
+          star4.setSelected(true);
+          star5.setSelected(false);
+          star1.setIcon(fullStarIcon);
+          star2.setIcon(fullStarIcon);
+          star3.setIcon(fullStarIcon);
+          star4.setIcon(fullStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(4);
+        }
+      }
+      else
+      {
+        if (!(star5.isSelected()))
+        {
+          star1.setSelected(false);
+          star2.setSelected(false);
+          star3.setSelected(false);
+          star4.setSelected(false);
+          star5.setSelected(false);
+          star1.setIcon(emptyStarIcon);
+          star2.setIcon(emptyStarIcon);
+          star3.setIcon(emptyStarIcon);
+          star4.setIcon(emptyStarIcon);
+          star5.setIcon(emptyStarIcon);
+          data.setRating(0);
+        }
+        else
+        {
+          star1.setSelected(true);
+          star2.setSelected(true);
+          star3.setSelected(true);
+          star4.setSelected(true);
+          star5.setSelected(true);
+          star1.setIcon(fullStarIcon);
+          star2.setIcon(fullStarIcon);
+          star3.setIcon(fullStarIcon);
+          star4.setIcon(fullStarIcon);
+          star5.setIcon(fullStarIcon);
+          data.setRating(5);
+        }
+      }
+    }
+  }
+  private superListener superlistener;
 
   public Item(PicData p)
   {
     this.data = p;
     this.clicklistener = new clickListener();
+    this.superlistener = new superListener();
+    this.star1 = new JRadioButton(emptyStarIcon, false);
+    star1.addActionListener(superlistener);
+    this.star2 = new JRadioButton(emptyStarIcon, false);
+    star2.addActionListener(superlistener);
+    this.star3 = new JRadioButton(emptyStarIcon, false);
+    star3.addActionListener(superlistener);
+    this.star4 = new JRadioButton(emptyStarIcon, false);
+    star4.addActionListener(superlistener);
+    this.star5 = new JRadioButton(emptyStarIcon, false);
+    star5.addActionListener(superlistener);
+    this.stars = new ButtonGroup();
+    stars.add(star1);
+    stars.add(star2);
+    stars.add(star3);
+    stars.add(star4);
+    stars.add(star5);
+    star1.setSelected(false);
+    star2.setSelected(false);
+    star3.setSelected(false);
+    star4.setSelected(false);
+    star5.setSelected(false);
     this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
     this.setPreferredSize(new Dimension(200, 300));
     this.picture = new ImageIcon(data.getPic());
@@ -104,7 +313,13 @@ class Item extends JPanel implements Serializable
     this.pic.setPreferredSize(new Dimension(200, 200));
     this.name = new JLabel(data.getName(), JLabel.CENTER);
     this.name.setPreferredSize(new Dimension(200, 25));
-    this.rating = new JLabel(Integer.toString(data.getRating()), JLabel.CENTER);
+    this.rating = new JPanel();
+    this.rating.setLayout(new BoxLayout(this.rating, BoxLayout.X_AXIS));
+    this.rating.add(star1);
+    this.rating.add(star2);
+    this.rating.add(star3);
+    this.rating.add(star4);
+    this.rating.add(star5);
     this.rating.setPreferredSize(new Dimension(200, 50));
     this.dateSize = new JLabel(Long.toString(data.getLastmod()) + Long.toString(data.getSize()), JLabel.CENTER);
     this.dateSize.setPreferredSize(new Dimension(200, 25));
@@ -114,4 +329,4 @@ class Item extends JPanel implements Serializable
     this.add(dateSize);
   }
 }
-
+  

+ 9 - 0
assignments/a3/src/main/java/Model.java

@@ -20,6 +20,7 @@ public class Model extends Observable implements Serializable
     this.pics = new ArrayList();
     this.filter = 0;
     this.grid = true;
+    PicData.model = this;
     setChanged();
   }
   
@@ -58,6 +59,12 @@ public class Model extends Observable implements Serializable
       notifyObservers();
     }
   }
+  
+  public void update()
+  {
+    setChanged();
+    notifyObservers();
+  }
 
   // Add observer to be notified on change
   public void addObserver(Observer observer)
@@ -88,6 +95,7 @@ class PicData implements Serializable
   private long size;
   private long lastmod;
   private String name;
+  public static Model model;
 
   public PicData(String filepath, String name, long size, long lastmod)
   {
@@ -106,6 +114,7 @@ class PicData implements Serializable
   public void setRating(int x)
   {
     this.rating = x;
+    model.update();
   }
   
   public Image getPic()