Version 1.2.1: fixes for GUI, new buttons
[fanfix.git] / src / be / nikiroo / fanfix / reader / LocalReaderBook.java
index a9b24a2019f7c2902c40c97be63ca672430e7c46..263601c471797cba8154540a5135269dca7ccb89 100644 (file)
@@ -47,6 +47,16 @@ class LocalReaderBook extends JPanel {
                 *            the {@link LocalReaderBook} itself
                 */
                public void action(LocalReaderBook book);
+
+               /**
+                * A popup menu was requested for this {@link LocalReaderBook}.
+                * 
+                * @param book
+                *            the {@link LocalReaderBook} itself
+                * @param e
+                *            the {@link MouseEvent} that generated this call
+                */
+               public void popupRequested(LocalReaderBook book, MouseEvent e);
        }
 
        private static final int COVER_WIDTH = 100;
@@ -68,8 +78,13 @@ class LocalReaderBook extends JPanel {
        private Date lastClick;
        private long doubleClickDelay = 200; // in ms
        private List<BookActionListener> listeners;
+       private String luid;
+       private boolean cached;
+
+       public LocalReaderBook(MetaData meta, boolean cached) {
+               this.luid = meta.getLuid();
+               this.cached = cached;
 
-       public LocalReaderBook(MetaData meta) {
                if (meta.getCover() != null) {
                        BufferedImage resizedImage = new BufferedImage(SPINE_WIDTH
                                        + COVER_WIDTH, SPINE_HEIGHT + COVER_HEIGHT + HOFFSET,
@@ -137,9 +152,15 @@ class LocalReaderBook extends JPanel {
                listeners = new ArrayList<LocalReaderBook.BookActionListener>();
                addMouseListener(new MouseListener() {
                        public void mouseReleased(MouseEvent e) {
+                               if (e.isPopupTrigger()) {
+                                       popup(e);
+                               }
                        }
 
                        public void mousePressed(MouseEvent e) {
+                               if (e.isPopupTrigger()) {
+                                       popup(e);
+                               }
                        }
 
                        public void mouseExited(MouseEvent e) {
@@ -159,26 +180,57 @@ class LocalReaderBook extends JPanel {
                                        } else {
                                                click(false);
                                        }
+
                                        lastClick = now;
                                }
                        }
-               });
-       }
 
-       private void click(boolean doubleClick) {
-               for (BookActionListener listener : listeners) {
-                       if (doubleClick) {
-                               listener.action(this);
-                       } else {
-                               listener.select(this);
+                       private void click(boolean doubleClick) {
+                               for (BookActionListener listener : listeners) {
+                                       if (doubleClick) {
+                                               listener.action(LocalReaderBook.this);
+                                       } else {
+                                               listener.select(LocalReaderBook.this);
+                                       }
+                               }
                        }
-               }
+
+                       private void popup(MouseEvent e) {
+                               for (BookActionListener listener : listeners) {
+                                       listener.select((LocalReaderBook.this));
+                                       listener.popupRequested(LocalReaderBook.this, e);
+                               }
+                       }
+               });
        }
 
        public void addActionListener(BookActionListener listener) {
                listeners.add(listener);
        }
 
+       public String getLuid() {
+               return luid;
+       }
+
+       /**
+        * This boos is cached into the {@link LocalReader} library.
+        * 
+        * @return the cached
+        */
+       public boolean isCached() {
+               return cached;
+       }
+
+       /**
+        * This boos is cached into the {@link LocalReader} library.
+        * 
+        * @param cached
+        *            the cached to set
+        */
+       public void setCached(boolean cached) {
+               this.cached = cached;
+       }
+
        @Override
        public void paint(Graphics g) {
                super.paint(g);
@@ -211,6 +263,11 @@ class LocalReaderBook extends JPanel {
                }
 
                Rectangle clip = g.getClipBounds();
+               if (cached) {
+                       g.setColor(Color.green);
+                       g.fillOval(clip.x + clip.width - 30, 10, 20, 20);
+               }
+
                g.setColor(color);
                g.fillRect(clip.x, clip.y, clip.width, clip.height);
        }