/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.motorola.studio.android.generatemenucode.model.codegenerators;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.dom.CompilationUnit;
import com.motorola.studio.android.common.exception.AndroidException;
import com.motorola.studio.android.generatecode.AbstractCodeGeneratorData;
import com.motorola.studio.android.generatecode.BasicCodeVisitor;
import com.motorola.studio.android.generatemenucode.model.MenuFile;
import com.motorola.studio.android.generatemenucode.model.MenuItemNode;
/**
* Model representing the code generator data needed to generate code for menu.
* You MUST call init before using the object.
*/
public class CodeGeneratorDataBasedOnMenu extends AbstractCodeGeneratorData
{
private MenuFile menuFile;
private BasicCodeVisitor codeVisitor;
private ICompilationUnit iCompilationUnit;
private CompilationUnit compilationUnit;
/**
* Creates {@link MenuFile} representation for the menu.xml
* @param menuName name of the menu
* @param menu file (full path) to menu.xml
* @throws AndroidException if an error occurs parsing menu.xml
*/
public void init(String menuName, File menu) throws AndroidException
{
menuFile = new MenuFile(menuName, menu);
}
/**
* Get Menu Items that are not declared in the code yet
* @return list of Menu items from menu file (only ones with id set).
*/
public List<MenuItemNode> getMenuItemsNodes()
{
return menuFile.getRootMenuNode() != null ? menuFile.getRootMenuNode().getAllMenuItems()
: new ArrayList<MenuItemNode>(0);
}
/**
* @return the representation from {@link MenuFile}
*/
public MenuFile getMenuFile()
{
return menuFile;
}
@Override
public IResource getResource()
{
return compilationUnit.getJavaElement().getResource();
}
@Override
public ICompilationUnit getICompilationUnit()
{
return iCompilationUnit;
}
@Override
public CompilationUnit getCompilationUnit()
{
return compilationUnit;
}
@Override
public BasicCodeVisitor getAbstractCodeVisitor()
{
return codeVisitor;
}
/**
* Sets {@link BasicCodeVisitor} responsible to avoid code duplication or identify menu already inflated
* @param visitor
*/
public void setAbstractCodeVisitor(BasicCodeVisitor visitor)
{
this.codeVisitor = visitor;
}
/**
* @param iCompilationUnit the iCompilationUnit to set
*/
public void setICompilationUnit(ICompilationUnit iCompilationUnit)
{
this.iCompilationUnit = iCompilationUnit;
}
/**
* @param compilationUnit the compilationUnit to set
*/
public void setCompilationUnit(CompilationUnit compilationUnit)
{
this.compilationUnit = compilationUnit;
}
}