GUI: search: step x + 1
[fanfix.git] / src / be / nikiroo / fanfix / searchable / SearchableTag.java
index c12b3c68eeeb5b0d3c2135b521bf5bbd354dbfa3..338f84daa950b39eb4cac62ec487120738faa35b 100644 (file)
@@ -43,7 +43,7 @@ public class SearchableTag {
         *            the tag is a leaf tag, that is, it will not return subtags
         *            with {@link BasicSearchable#fillTag(SearchableTag)} but will
         *            return stories with
-        *            {@link BasicSearchable#search(SearchableTag)}
+        *            {@link BasicSearchable#search(SearchableTag, int)}
         */
        public SearchableTag(String id, String name, boolean leaf) {
                this(id, name, leaf, true);
@@ -60,14 +60,14 @@ public class SearchableTag {
         *            the tag is a leaf tag, that is, it will not return subtags
         *            with {@link BasicSearchable#fillTag(SearchableTag)} but will
         *            return stories with
-        *            {@link BasicSearchable#search(SearchableTag)}
+        *            {@link BasicSearchable#search(SearchableTag, int)}
         * @param complete
         *            the tag {@link SearchableTag#isComplete()} or not
         */
        public SearchableTag(String id, String name, boolean leaf, boolean complete) {
                this.id = id;
                this.name = name;
-               this.complete = complete;
+               this.complete = leaf || complete;
 
                setLeaf(leaf);
 
@@ -92,12 +92,27 @@ public class SearchableTag {
                return name;
        }
 
+       /**
+        * The fully qualified tag name, which can be displayed to the user.
+        * <p>
+        * It will display all the tags that lead to this one as well as this one.
+        * 
+        * @return the fully qualified name
+        */
+       public String getFqName() {
+               if (parent != null) {
+                       return parent.getFqName() + " / " + name;
+               }
+
+               return name;
+       }
+
        /**
         * Non-complete, non-leaf tags can still be completed via a
         * {@link BasicSearchable#fillTag(SearchableTag)} operation from a
         * {@link BasicSearchable}, in order to gain (more?) subtag children.
         * <p>
-        * This method does not make sense for leaf tags.
+        * Leaf tags are always considered complete.
         * 
         * @return TRUE if it is complete
         */
@@ -110,13 +125,13 @@ public class SearchableTag {
         * {@link BasicSearchable#fillTag(SearchableTag)} operation from a
         * {@link BasicSearchable}, in order to gain (more?) subtag children.
         * <p>
-        * This method does not make sense for leaf tags.
+        * Leaf tags are always considered complete.
         * 
         * @param complete
         *            TRUE if it is complete
         */
        public void setComplete(boolean complete) {
-               this.complete = complete;
+               this.complete = isLeaf() || complete;
        }
 
        /**
@@ -171,7 +186,7 @@ public class SearchableTag {
        /**
         * This tag is a leaf tag, that is, it will not return other subtags with
         * {@link BasicSearchable#fillTag(SearchableTag)} but will return stories
-        * with {@link BasicSearchable#search(SearchableTag)}.
+        * with {@link BasicSearchable#search(SearchableTag, int)}.
         * 
         * @return TRUE if it is
         */
@@ -182,7 +197,7 @@ public class SearchableTag {
        /**
         * This tag is a leaf tag, that is, it will not return other subtags with
         * {@link BasicSearchable#fillTag(SearchableTag)} but will return stories
-        * with {@link BasicSearchable#search(SearchableTag)}.
+        * with {@link BasicSearchable#search(SearchableTag, int)}.
         * <p>
         * Will reset the number of pages to -1.
         * 
@@ -191,6 +206,9 @@ public class SearchableTag {
         */
        public void setLeaf(boolean leaf) {
                pages = leaf ? -1 : -2;
+               if (leaf) {
+                       complete = true;
+               }
        }
 
        /**