// -*- mode: java; c-basic-offset: 2; -*- // Copyright 2009-2011 Google, All Rights reserved // Copyright 2011-2012 MIT, All rights reserved // Released under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 package com.google.appinventor.shared.rpc.project.youngandroid; import com.google.appinventor.shared.rpc.project.HasAssetsFolder; import com.google.appinventor.shared.rpc.project.ProjectNode; import com.google.appinventor.shared.rpc.project.ProjectRootNode; /** * Project root node for Young Android projects. * */ public final class YoungAndroidProjectNode extends ProjectRootNode implements HasAssetsFolder<YoungAndroidAssetsFolder>, HasComponentsFolder<YoungAndroidComponentsFolder> { /** * Project type for Young Android projects. */ public static final String YOUNG_ANDROID_PROJECT_TYPE = "YoungAndroid"; /** * Project target types for YoungAndroid projects. */ public static final String YOUNG_ANDROID_TARGET_ANDROID = "Android"; /** * New file types. */ public static final String YOUNG_ANDROID_NEW_FORM_FILE = "form"; // For serialization private static final long serialVersionUID = -3993102178645391456L; /** * Default constructor (for serialization only). */ public YoungAndroidProjectNode() { } /** * Creates a new Young Android project node. * * @param name project name * @param projectId project ID */ public YoungAndroidProjectNode(String name, long projectId) { super(name, projectId, YOUNG_ANDROID_PROJECT_TYPE); } /** * Returns the asset folder node of the project. * * @return asset folder node */ @Override public YoungAndroidAssetsFolder getAssetsFolder() { for (ProjectNode child : getChildren()) { if (child instanceof YoungAndroidAssetsFolder) { return (YoungAndroidAssetsFolder) child; } } // Should never happen! throw new IllegalStateException("Couldn't find asset folder"); } /** * Returns the package node of the project. * * @return package node */ public YoungAndroidPackageNode getPackageNode() { for (ProjectNode child : getChildren()) { // A package node is a child of a source folder node. if (child instanceof YoungAndroidSourceFolderNode) { for (ProjectNode child2 : child.getChildren()) { if (child2 instanceof YoungAndroidPackageNode) { return (YoungAndroidPackageNode) child2; } } } } // Should never happen! throw new IllegalStateException("Couldn't find package node"); } @Override public YoungAndroidComponentsFolder getComponentsFolder() { for (ProjectNode child : getChildren()) { if (child instanceof YoungAndroidComponentsFolder) { return (YoungAndroidComponentsFolder) child; } } // Should never happen! throw new IllegalStateException("Couldn't find component folder"); } }