diff --git a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java index 0370749..befc749 100644 --- a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java +++ b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java @@ -1060,6 +1060,15 @@ public class AudiobookRecorder extends JFrame { prefs.loadFromXML(fis); buildBook(prefs); + + File r = f.getParentFile(); + File cf = new File(r, "coverart.png"); + if (cf.exists()) { + ImageIcon i = new ImageIcon(cf.getAbsolutePath()); + Image ri = Utils.getScaledImage(i.getImage(), 22, 22); + book.setIcon(new ImageIcon(ri)); + bookTreeModel.reload(book); + } } catch (Exception e) { e.printStackTrace(); } @@ -1242,6 +1251,7 @@ public class AudiobookRecorder extends JFrame { toolBar.enableBook(); statusLabel.setText("Noise floor: " + getNoiseFloor()); + book.setIcon(Icons.book); } public void openBook() { diff --git a/src/uk/co/majenko/audiobookrecorder/Book.java b/src/uk/co/majenko/audiobookrecorder/Book.java index 94dc766..4c214f9 100644 --- a/src/uk/co/majenko/audiobookrecorder/Book.java +++ b/src/uk/co/majenko/audiobookrecorder/Book.java @@ -16,6 +16,8 @@ public class Book extends DefaultMutableTreeNode { String genre; String comment; + ImageIcon icon; + public Book(String bookname) { super(bookname); name = bookname; @@ -99,4 +101,39 @@ public class Book extends DefaultMutableTreeNode { public String getName() { return name; } + + public ImageIcon getIcon() { + return icon; + } + + public void setIcon(ImageIcon i) { + icon = i; + } + + public void setUserObject(Object o) { + if (o instanceof String) { + String newName = (String)o; + + File oldDir = new File(Options.get("path.storage"), name); + File newDir = new File(Options.get("path.storage"), newName); + + if (newDir.exists()) { + JOptionPane.showMessageDialog(AudiobookRecorder.window, "Book already exists", "Error", JOptionPane.ERROR_MESSAGE); + return; + } + + if (oldDir.exists() && oldDir.isDirectory()) { + oldDir.renameTo(newDir); + name = newName; + AudiobookRecorder.window.saveBookStructure(); + AudiobookRecorder.window.bookTreeModel.reload(this); + Options.set("path.last-book", name); + Options.savePreferences(); + } + } + } + + public String toString() { + return name; + } } diff --git a/src/uk/co/majenko/audiobookrecorder/BookPanel.java b/src/uk/co/majenko/audiobookrecorder/BookPanel.java index 6b7876b..ae42c73 100644 --- a/src/uk/co/majenko/audiobookrecorder/BookPanel.java +++ b/src/uk/co/majenko/audiobookrecorder/BookPanel.java @@ -40,7 +40,7 @@ public class BookPanel extends JPanel { File icon = new File(root, "coverart.png"); if (icon.exists()) { cover = new ImageIcon(icon.getAbsolutePath()); - resizedCover = getScaledImage(cover.getImage(), 75, 75); + resizedCover = Utils.getScaledImage(cover.getImage(), 75, 75); iconLabel = new JLabel(new ImageIcon(resizedCover)); } else { cover = null; @@ -80,18 +80,6 @@ public class BookPanel extends JPanel { } } - - private Image getScaledImage(Image srcImg, int w, int h){ - BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); - Graphics2D g2 = resizedImg.createGraphics(); - - g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); - g2.drawImage(srcImg, 0, 0, w, h, null); - g2.dispose(); - - return resizedImg; - } - public File getConfigFile() { return new File(root, "audiobook.abk"); } diff --git a/src/uk/co/majenko/audiobookrecorder/BookTreeRenderer.java b/src/uk/co/majenko/audiobookrecorder/BookTreeRenderer.java index 91154ac..1de2380 100644 --- a/src/uk/co/majenko/audiobookrecorder/BookTreeRenderer.java +++ b/src/uk/co/majenko/audiobookrecorder/BookTreeRenderer.java @@ -19,7 +19,7 @@ public class BookTreeRenderer extends DefaultTreeCellRenderer { } else if (value instanceof Chapter) { ret.setIcon(Icons.chapter); } else if (value instanceof Book) { - ret.setIcon(Icons.book); + ret.setIcon(((Book)value).getIcon()); } return ret; } diff --git a/src/uk/co/majenko/audiobookrecorder/Utils.java b/src/uk/co/majenko/audiobookrecorder/Utils.java new file mode 100644 index 0000000..1c1b050 --- /dev/null +++ b/src/uk/co/majenko/audiobookrecorder/Utils.java @@ -0,0 +1,23 @@ +package uk.co.majenko.audiobookrecorder; + +import javax.swing.*; +import javax.swing.event.*; +import java.awt.*; +import java.awt.event.*; +import java.awt.image.*; +import javax.swing.border.*; +import java.util.*; +import java.io.*; + +public class Utils { + public static Image getScaledImage(Image srcImg, int w, int h){ + BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); + Graphics2D g2 = resizedImg.createGraphics(); + + g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); + g2.drawImage(srcImg, 0, 0, w, h, null); + g2.dispose(); + + return resizedImg; + } +}