All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robovm.ibxcode.pbxproj.PBXGroup Maven / Gradle / Ivy

package org.robovm.ibxcode.pbxproj;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PBXGroup extends PBXNode{
    private final Listchildren = new ArrayList<>();
    private final Map childrenGroups = new HashMap<>();
    private final Map childrenFiles = new HashMap<>();
    private final Type groupType;

    /** possible group types */
    public enum Type {
        GROUP("PBXGroup"),
        VARIANT_GROUP("PBXVariantGroup");

        private String value;
        Type(String s) {
            value = s;
        }
    }

    public PBXGroup(PBXProject project, String name) {
        super(project, name);
        groupType = Type.GROUP;
    }

    public PBXGroup(PBXProject project, String name, Type type) {
        super(project, name);
        groupType = type;
    }

    public  T addChild(T child) {
        this.children.add(child);
        if (child instanceof PBXGroup)
            childrenGroups.put(child.getName(), (PBXGroup) child);
        if (child instanceof PBXFile)
            childrenFiles.put(child.getName(), (PBXFile) child);
        return child;
    }

    public List getChildren() {
        return children ;
    }

    public List getSortedChildren(Comparator comparator) {
        List sortedList = new ArrayList<>();
        sortedList.addAll(children);
        Collections.sort(sortedList, comparator);
        return sortedList;
    }

    public PBXFile getChildFile(String name) {
        return childrenFiles.get(name);
    }

    public PBXGroup getChildGroup(String name) {
        return childrenGroups.get(name);
    }

    public Type getGroupType() {
        return groupType;
    }

    @Override
    public void dump(PrintStreamTab ps) {
        dump(ps, null);
    }

    public void dump(PrintStreamTab ps, Comparator comparator) {
        ps.println(this.uuidWithComment() + " = {");
        PrintStreamTab groupPs = new PrintStreamTab(ps);
        groupPs.println("isa = " + groupType.value + ";");
        groupPs.println("children = (");

        PrintStreamTab childPs = new PrintStreamTab(groupPs);
        List sortedNodes = comparator != null ? getSortedChildren(comparator) : children;
        for (PBXNode node : sortedNodes)
            childPs.println(node.uuidWithComment() + ",");

        groupPs.println(");");
        groupPs.println("name = \"" + this.getName() + "\";");
        groupPs.println("sourceTree = \"\";");

        ps.println("};");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy