Fix bug when moving an unopened book in GUI
[fanfix.git] / src / be / nikiroo / fanfix / reader / GuiReader.java
index 2c30ab6740ad49a46a070585fbe581326b75fc1f..2f1b33961329179253fa6049ccaded8f3d774f11 100644 (file)
@@ -15,6 +15,7 @@ import javax.swing.event.HyperlinkListener;
 import be.nikiroo.fanfix.Instance;
 import be.nikiroo.fanfix.VersionCheck;
 import be.nikiroo.fanfix.bundles.UiConfig;
+import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.fanfix.data.Story;
 import be.nikiroo.fanfix.library.LocalLibrary;
 import be.nikiroo.fanfix.output.BasicOutput.OutputType;
@@ -69,17 +70,15 @@ class GuiReader extends BasicReader {
                localLibrary = new LocalLibrary(dir, text, images);
        }
 
+       @Override
        public void read() throws IOException {
-               if (getStory() == null) {
+               MetaData meta = getMeta();
+
+               if (meta == null) {
                        throw new IOException("No story to read");
                }
 
-               open(getStory().getMeta().getLuid(), null);
-       }
-
-       public void read(int chapter) throws IOException {
-               // TODO: show a special page?
-               read();
+               read(meta.getLuid(), null);
        }
 
        /**
@@ -129,6 +128,7 @@ class GuiReader extends BasicReader {
                return localLibrary.getInfo(luid) != null;
        }
 
+       @Override
        public void browse(String type) {
                // TODO: improve presentation of update message
                final VersionCheck updates = VersionCheck.check();
@@ -156,6 +156,7 @@ class GuiReader extends BasicReader {
 
                        // handle link events
                        updateMessage.addHyperlinkListener(new HyperlinkListener() {
+                               @Override
                                public void hyperlinkUpdate(HyperlinkEvent e) {
                                        if (e.getEventType().equals(
                                                        HyperlinkEvent.EventType.ACTIVATED))
@@ -174,6 +175,7 @@ class GuiReader extends BasicReader {
 
                final String typeFinal = type;
                EventQueue.invokeLater(new Runnable() {
+                       @Override
                        public void run() {
                                if (updates.isNewVersionAvailable()) {
                                        int rep = JOptionPane.showConfirmDialog(null,
@@ -211,20 +213,23 @@ class GuiReader extends BasicReader {
        }
 
        // open the given book
-       void open(String luid, Progress pg) throws IOException {
+       void read(String luid, Progress pg) throws IOException {
                File file = localLibrary.getFile(luid);
                if (file == null) {
                        imprt(luid, pg);
                        file = localLibrary.getFile(luid);
                }
 
+               // TODO: show a special page for the chapter?
                openExternal(getLibrary().getInfo(luid), file);
        }
 
-       void changeType(String luid, String newType) {
+       void changeType(String luid, String newSource) {
                try {
-                       localLibrary.changeSource(luid, newType, null);
-                       getLibrary().changeSource(luid, newType, null);
+                       if (localLibrary.getInfo(luid) != null) {
+                               localLibrary.changeSource(luid, newSource, null);
+                       }
+                       getLibrary().changeSource(luid, newSource, null);
                } catch (IOException e) {
                        Instance.syserr(e);
                }