GUI search: reorg mostly OK
[fanfix.git] / src / be / nikiroo / fanfix / reader / ui / GuiReader.java
index 62de6ceebde36142656697ac5bdb7bc720927f25..1d782129276aaa0744ab414b40b0b09ebd9662de 100644 (file)
@@ -25,6 +25,8 @@ 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;
@@ -221,17 +223,28 @@ class GuiReader extends BasicReader {
 
        @Override
        public void search(boolean sync) throws IOException {
-               // TODO
+               GuiReaderSearchFrame search = new GuiReaderSearchFrame(this);
                if (sync) {
-                       throw new java.lang.IllegalStateException("Not implemented yet.");
+                       sync(search);
+               } else {
+                       search.setVisible(true);
                }
        }
 
        @Override
        public void search(SupportType searchOn, String keywords, int page,
                        int item, boolean sync) {
-               // TODO: add parameters!
-               GuiReaderSearch search = new GuiReaderSearch(this);
+               final GuiReaderSearchFrame search = new GuiReaderSearchFrame(
+                               GuiReader.this);
+               while (!search.isEnabled()) {
+                       try {
+                               Thread.sleep(10);
+                       } catch (InterruptedException e) {
+                               Instance.getTraceHandler().error(e);
+                       }
+               }
+
+               search.search(searchOn, keywords, page, item);
                if (sync) {
                        sync(search);
                } else {
@@ -240,11 +253,46 @@ class GuiReader extends BasicReader {
        }
 
        @Override
-       public void searchTag(SupportType searchOn, int page, int item,
-                       boolean sync, Integer... tags) {
-               // TODO
+       public void searchTag(final SupportType searchOn, final int page,
+                       final int item, final boolean sync, final Integer... tags) {
+
+               final GuiReaderSearchFrame search = new GuiReaderSearchFrame(
+                               GuiReader.this);
+               while (!search.isEnabled()) {
+                       try {
+                               Thread.sleep(10);
+                       } catch (InterruptedException e) {
+                               Instance.getTraceHandler().error(e);
+                       }
+               }
+
+               final BasicSearchable searchable = BasicSearchable
+                               .getSearchable(searchOn);
+
+               Runnable action = new Runnable() {
+                       @Override
+                       public void run() {
+                               SearchableTag tag = null;
+                               try {
+                                       tag = searchable.getTag(tags);
+                               } catch (IOException e) {
+                                       Instance.getTraceHandler().error(e);
+                               }
+
+                               search.searchTag(searchOn, page, item, tag);
+
+                               if (sync) {
+                                       sync(search);
+                               } else {
+                                       search.setVisible(true);
+                               }
+                       }
+               };
+
                if (sync) {
-                       throw new java.lang.IllegalStateException("Not implemented yet.");
+                       action.run();
+               } else {
+                       new Thread(action).start();
                }
        }