X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2Fui%2FGuiReaderViewer.java;h=bfb18921ecb5551aeb5eccd3782de4b7012eb2fa;hb=cfb18ec54d31c8b6bde86be5d8a0a4f3b4827a26;hp=48dfa498472421904516009260c34e371cf1526a;hpb=32ba91e9d2443ac9d17d3db66eef4c570d02cdf1;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/ui/GuiReaderViewer.java b/src/be/nikiroo/fanfix/reader/ui/GuiReaderViewer.java index 48dfa49..bfb1892 100644 --- a/src/be/nikiroo/fanfix/reader/ui/GuiReaderViewer.java +++ b/src/be/nikiroo/fanfix/reader/ui/GuiReaderViewer.java @@ -1,7 +1,6 @@ package be.nikiroo.fanfix.reader.ui; import java.awt.BorderLayout; -import java.awt.Color; import java.awt.Font; import java.awt.LayoutManager; import java.awt.event.ActionEvent; @@ -9,12 +8,12 @@ import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.BoxLayout; -import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; +import be.nikiroo.fanfix.bundles.StringIdGui; import be.nikiroo.fanfix.data.Chapter; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Story; @@ -34,11 +33,9 @@ public class GuiReaderViewer extends JFrame { private Story story; private MetaData meta; private JLabel title; - private JLabel chapterLabel; private GuiReaderPropertiesPane descPane; - private int currentChapter = -42; // cover = -1 private GuiReaderViewerPanel mainPanel; - private JButton[] navButtons; + private GuiReaderNavBar navbar; /** * Create a new {@link Story} viewer. @@ -49,7 +46,8 @@ public class GuiReaderViewer extends JFrame { * the {@link Story} to display */ public GuiReaderViewer(BasicLibrary lib, Story story) { - super(story.getMeta().getLuid() + ": " + story.getMeta().getTitle()); + setTitle(GuiReader.trans(StringIdGui.TITLE_STORY, story.getMeta() + .getLuid(), story.getMeta().getTitle())); setSize(800, 600); @@ -95,61 +93,46 @@ public class GuiReaderViewer extends JFrame { * initialise them. */ private void initGuiNavButtons() { - JPanel navButtonsPane = new JPanel(); - LayoutManager layout = new BoxLayout(navButtonsPane, BoxLayout.X_AXIS); - navButtonsPane.setLayout(layout); - - navButtons = new JButton[4]; + navbar = new GuiReaderNavBar(-1, story.getChapters().size() - 1) { + private static final long serialVersionUID = 1L; - navButtons[0] = createNavButton("<<", new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { - setChapter(-1); + protected String computeLabel(int index, int min, int max) { + int chapter = index; + Chapter chap; + if (chapter < 0) { + chap = meta.getResume(); + descPane.setVisible(true); + } else { + chap = story.getChapters().get(chapter); + descPane.setVisible(false); + } + + String chapterDisplay = GuiReader.trans( + StringIdGui.CHAPTER_HTML_UNNAMED, chap.getNumber(), + story.getChapters().size()); + if (chap.getName() != null && !chap.getName().trim().isEmpty()) { + chapterDisplay = GuiReader.trans( + StringIdGui.CHAPTER_HTML_NAMED, chap.getNumber(), + story.getChapters().size(), chap.getName()); + } + + return "" + chapterDisplay + ""; } - }); - navButtons[1] = createNavButton(" < ", new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - setChapter(currentChapter - 1); - } - }); - navButtons[2] = createNavButton(" > ", new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - setChapter(currentChapter + 1); - } - }); - navButtons[3] = createNavButton(">>", new ActionListener() { + }; + + navbar.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - setChapter(story.getChapters().size() - 1); + setChapter(navbar.getIndex()); } }); - for (JButton navButton : navButtons) { - navButtonsPane.add(navButton); - } - - add(navButtonsPane, BorderLayout.SOUTH); - - chapterLabel = new JLabel(""); - navButtonsPane.add(chapterLabel); - } + JPanel navButtonsPane = new JPanel(); + LayoutManager layout = new BoxLayout(navButtonsPane, BoxLayout.X_AXIS); + navButtonsPane.setLayout(layout); - /** - * Create a single navigation button. - * - * @param text - * the text to display - * @param action - * the action to take on click - * @return the button - */ - private JButton createNavButton(String text, ActionListener action) { - JButton navButton = new JButton(text); - navButton.addActionListener(action); - navButton.setForeground(Color.BLUE); - return navButton; + add(navbar, BorderLayout.SOUTH); } /** @@ -161,29 +144,15 @@ public class GuiReaderViewer extends JFrame { * the chapter number to set */ private void setChapter(int chapter) { - navButtons[0].setEnabled(chapter >= 0); - navButtons[1].setEnabled(chapter >= 0); - navButtons[2].setEnabled(chapter + 1 < story.getChapters().size()); - navButtons[3].setEnabled(chapter + 1 < story.getChapters().size()); - - if (chapter >= -1 && chapter < story.getChapters().size() - && chapter != currentChapter) { - currentChapter = chapter; - - Chapter chap; - if (chapter == -1) { - chap = meta.getResume(); - descPane.setVisible(true); - } else { - chap = story.getChapters().get(chapter); - descPane.setVisible(false); - } - - chapterLabel.setText("  Chapter " - + chap.getNumber() + ": " + chap.getName() + ""); - - System.out.println(chap); - mainPanel.setChapter(chap); + Chapter chap; + if (chapter < 0) { + chap = meta.getResume(); + descPane.setVisible(true); + } else { + chap = story.getChapters().get(chapter); + descPane.setVisible(false); } + + mainPanel.setChapter(chap); } }