Merge branch 'subtree'
[fanfix.git] / src / be / nikiroo / utils / resources / MetaInfo.java
index f7598f190c2f9a5d491fd2b56b9644e06c104d1f..70c6c43181bbff8f8885c1eca15a792eef03eac1 100644 (file)
@@ -27,6 +27,7 @@ public class MetaInfo<E extends Enum<E>> implements Iterable<MetaInfo<E>> {
        private List<Runnable> saveListeners = new ArrayList<Runnable>();
 
        private String name;
+       private boolean hidden;
        private String description;
 
        private boolean dirty;
@@ -90,6 +91,7 @@ public class MetaInfo<E extends Enum<E>> implements Iterable<MetaInfo<E>> {
                }
 
                this.name = name;
+               this.hidden = meta.hidden();
                this.description = description;
 
                reload();
@@ -110,6 +112,16 @@ public class MetaInfo<E extends Enum<E>> implements Iterable<MetaInfo<E>> {
        public String getName() {
                return name;
        }
+       
+       /**
+        * This item should be hidden from the user (she will still be able to
+        * modify it if she opens the file manually).
+        * 
+        * @return TRUE if it should stay hidden
+        */
+       public boolean isHidden() {
+               return hidden;
+       }
 
        /**
         * A description for this item: what it is or does, how to explain that item
@@ -649,6 +661,15 @@ public class MetaInfo<E extends Enum<E>> implements Iterable<MetaInfo<E>> {
                return children;
        }
 
+       /**
+        * The number of sub-items, if any.
+        * 
+        * @return the number or 0
+        */
+       public int size() {
+               return children.size();
+       }
+
        @Override
        public Iterator<MetaInfo<E>> iterator() {
                return children.iterator();
@@ -673,8 +694,10 @@ public class MetaInfo<E extends Enum<E>> implements Iterable<MetaInfo<E>> {
                List<MetaInfo<E>> shadow = new ArrayList<MetaInfo<E>>();
                for (E id : type.getEnumConstants()) {
                        MetaInfo<E> info = new MetaInfo<E>(type, bundle, id);
-                       list.add(info);
-                       shadow.add(info);
+                       if (!info.hidden) {
+                               list.add(info);
+                               shadow.add(info);
+                       }
                }
 
                for (int i = 0; i < list.size(); i++) {