/* * generated by Xtext */ package com.framsticks.framclipse.ui.outline; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.ui.editor.outline.transformer.AbstractDeclarativeSemanticModelTransformer; import com.framsticks.framclipse.framScript.Code; import com.framsticks.framclipse.framScript.Function; import com.framsticks.framclipse.framScript.Model; import com.framsticks.framclipse.framScript.Property; import com.framsticks.framclipse.framScript.State; import com.framsticks.framclipse.framScript.VariableDeclarations; /** * customization of the default outline structure */ public class FramScriptTransformer extends AbstractDeclarativeSemanticModelTransformer { public List getChildren(Function e) { return NO_CHILDREN; } public List getChildren(Model e) { List children = new ArrayList(); for (EObject child : e.eContents()) { if (child instanceof Code) { addCodeContents(children, (Code) child); } else if (child instanceof Property || child instanceof State) { children.add(child); } } return children; } private void addCodeContents(List children, Code code) { if (code != null) { children.addAll(code.getIncludes()); EList globals = code.getGlobals(); for (VariableDeclarations declarations : globals) { children.addAll(declarations.getVars()); } children.addAll(code.getFunctions()); } } }