/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.flex.compiler.fxg.flex;
import java.util.ArrayList;
import java.util.List;
import org.apache.flex.swf.tags.ICharacterTag;
/**
* Used to map a SWF symbol generated for a particular FXG node to
* an ActionScript class. This association links a tag primitive to more
* complex assets, such as the ActionScript implementation of a TextGraphic
* node (which does not have a tag primitive equivalent).
*/
public class FXGSymbolClass
{
private static final String DEFAULT_PACKAGE = "";
private static final char PACKAGE_SEPARATOR = '.';
private String packageName;
private String className;
private String generatedSource;
private ICharacterTag symbol;
private List<FXGSymbolClass> additionalSymbolClasses;
/**
* An FXG node may have child nodes that also require a symbol class
* mapping that will be included along with the parent symbol for the
* compilation unit.
*
* @param symbolClass - an additional symbol class
*/
public void addAdditionalSymbolClass(FXGSymbolClass symbolClass)
{
if (additionalSymbolClasses == null)
additionalSymbolClasses = new ArrayList<FXGSymbolClass>();
additionalSymbolClasses.add(symbolClass);
}
/**
* @return the list of additional symbol classes to be included with this
* symbol class
*/
public List<FXGSymbolClass> getAdditionalSymbolClasses()
{
return additionalSymbolClasses;
}
/**
* @return the qualified class name of the generated ActionScript class
*/
public String getQualifiedClassName()
{
if (packageName != null && packageName != DEFAULT_PACKAGE)
return packageName + PACKAGE_SEPARATOR + className;
return className;
}
/**
* @return the package name of the generated ActionScript class
*/
public String getPackageName()
{
if (packageName == null)
return DEFAULT_PACKAGE;
return packageName;
}
/**
* @param value - the package name of the generated ActionScript class
*/
public void setPackageName(String value)
{
packageName = value;
}
/**
* @return the class name of the generated ActionScript class
*/
public String getClassName()
{
return className;
}
/**
* @param value - the class name of the generated ActionScript class
*/
public void setClassName(String value)
{
className = value;
}
/**
* @return - the source code of the generated ActionScript class
*/
public String getGeneratedSource()
{
return generatedSource;
}
/**
* @param value - the source code of the generated ActionScript class
*/
public void setGeneratedSource(String value)
{
this.generatedSource = value;
}
/**
* @return the SWF symbol
*/
public ICharacterTag getSymbol()
{
return symbol;
}
/**
* @param iCharacterTag - the SWF symbol
*/
public void setSymbol(ICharacterTag iCharacterTag)
{
this.symbol = iCharacterTag;
}
}