GUI: search: step x + 1
[fanfix.git] / src / be / nikiroo / fanfix / reader / ui / GuiReader.java
index f4a932b3b899ef3fc48826bbe0b3aaa913a68d90..0cace9cd992b2fe317642316255a7dfcbf174b36 100644 (file)
@@ -25,6 +25,9 @@ import be.nikiroo.fanfix.library.BasicLibrary;
 import be.nikiroo.fanfix.library.CacheLibrary;
 import be.nikiroo.fanfix.reader.BasicReader;
 import be.nikiroo.fanfix.reader.Reader;
+import be.nikiroo.fanfix.searchable.BasicSearchable;
+import be.nikiroo.fanfix.searchable.SearchableTag;
+import be.nikiroo.fanfix.supported.SupportType;
 import be.nikiroo.utils.Progress;
 import be.nikiroo.utils.Version;
 import be.nikiroo.utils.ui.UIUtils;
@@ -218,6 +221,66 @@ class GuiReader extends BasicReader {
                }
        }
 
+       @Override
+       public void search(boolean sync) throws IOException {
+               GuiReaderSearch search = new GuiReaderSearch(this);
+               if (sync) {
+                       sync(search);
+               } else {
+                       search.setVisible(true);
+               }
+       }
+
+       @Override
+       public void search(SupportType searchOn, String keywords, int page,
+                       int item, boolean sync) {
+               GuiReaderSearch search = new GuiReaderSearch(this);
+               search.search(searchOn, keywords, page, item);
+               if (sync) {
+                       sync(search);
+               } else {
+                       search.setVisible(true);
+               }
+       }
+
+       @Override
+       public void searchTag(final SupportType searchOn, final int page,
+                       final int item, final boolean sync, final Integer... tags) {
+
+               final GuiReaderSearch search = new GuiReaderSearch(GuiReader.this);
+               final BasicSearchable searchable = BasicSearchable
+                               .getSearchable(searchOn);
+
+               Runnable action = new Runnable() {
+                       @Override
+                       public void run() {
+                               SearchableTag tag = null;
+                               try {
+                                       tag = searchable.getTag(tags);
+                                       if (tag != null) {
+                                               searchable.fillTag(tag);
+                                       }
+                               } catch (IOException e) {
+                                       Instance.getTraceHandler().error(e);
+                               }
+
+                               search.searchTag(searchOn, page, item, tag);
+
+                               if (sync) {
+                                       sync(search);
+                               } else {
+                                       search.setVisible(true);
+                               }
+                       }
+               };
+
+               if (sync) {
+                       action.run();
+               } else {
+                       new Thread(action).start();
+               }
+       }
+
        /**
         * Delete the {@link Story} from the cache if it is present, but <b>NOT</b>
         * from the main library.