package org.applause.lang.generator.iphone.builder;
import org.apache.commons.io.FilenameUtils;
import org.applause.lang.applauseDsl.Application;
import org.applause.lang.ui.builder.AbstractBuildStrategy;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.xpand2.output.Outlet;
public class IPhoneBuildStrategy extends AbstractBuildStrategy {
@Override
protected String getGeneratedSourcesFolderName() {
return "Generated";
}
@Override
protected String getMainTemplateName() {
return "templates::Main::main";
}
@Override
protected boolean canBuildProject() {
IFile mainFile = getPlatformProject().getFile("main.m");
IFile precompiledHeaderFile = getPlatformProject().getFile(".*\\.pch");
boolean result = mainFile.exists() || precompiledHeaderFile.exists();
System.out.println(getPlatformProject() + " is an iPhone project: " + result);
return result;
}
@Override
protected void configureOutlet(Outlet outlet) {
}
@Override
public String getName() {
return "iPhone";
}
@Override
protected void copySplash(Application app, IFolder folder) throws CoreException {
String splash = app.getSplash();
IFile splashFile = getModelProject().getFile("Images/" + splash);
if (splashFile.exists()) {
IPath targetPath = getPlatformProject().getFullPath().append("Default.png");
splashFile.copy(targetPath, true, null);
}
}
@Override
protected IFolder getHighResImageDestinationFolder(IFile file) {
return getPlatformProject().getFolder("Images/");
}
@Override
protected String getHighResImageFileName(String normalizedFileName) {
String baseName = FilenameUtils.getBaseName(normalizedFileName);
if (!baseName.endsWith("@2x")) {
return baseName + "@2x" + "." + FilenameUtils.getExtension(normalizedFileName);
}
else {
return normalizedFileName;
}
}
@Override
protected IFolder getImageDestinationFolder(IFile file) {
return getPlatformProject().getFolder("Images/");
}
@Override
protected String getImageFileName(String normalizedFileName) {
return normalizedFileName;
}
}