/*******************************************************************************
* Copyright (c) 2011 Martin Schnabel <mb0@mb0.org>.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
******************************************************************************/
package org.axdt.as3.ui.outline;
import org.axdt.as3.model.As3Class;
import org.axdt.as3.model.As3FieldBinding;
import org.axdt.as3.model.As3FieldDefinition;
import org.axdt.as3.model.As3Interface;
import org.axdt.as3.model.As3Namespace;
import org.axdt.as3.model.As3Operation;
import org.axdt.as3.model.As3Package;
import org.axdt.as3.model.As3Program;
import org.axdt.as3.model.IAttribute;
import org.axdt.as3.model.IDirective;
import org.axdt.avm.model.AvmDeclaredElement;
import org.axdt.avm.model.AvmMember;
import org.axdt.avm.model.AvmParameter;
import org.axdt.avm.model.AvmTypeReference;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.ui.editor.outline.IOutlineNode;
import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
import org.eclipse.xtext.ui.editor.outline.impl.DocumentRootNode;
public class As3OutlineTreeProvider extends DefaultOutlineTreeProvider {
protected void _createChildren(DocumentRootNode parentNode, As3Program node) {
createNode(parentNode, node.getPackage());
for (EObject childElement : node.getPackage().eContents())
createNode(parentNode, childElement);
for (IDirective childElement : node.getDirectives())
if (childElement instanceof AvmDeclaredElement)
createNode(parentNode, childElement);
}
protected void _createNode(IOutlineNode parentNode, As3FieldDefinition node) {
// omit node
}
protected void _createNode(IOutlineNode parentNode, IAttribute node) {
// omit node
}
protected void _createNode(IOutlineNode parentNode, AvmTypeReference node) {
// omit node
}
protected void _createNode(IOutlineNode parentNode, AvmParameter node) {
// omit node
}
protected boolean _isLeaf(As3Package feature) {
return true;
}
protected boolean _isLeaf(As3Operation feature) {
return true;
}
protected boolean _isLeaf(As3FieldBinding feature) {
return true;
}
protected boolean _isLeaf(As3Namespace feature) {
return true;
}
protected void _createChildren(IOutlineNode parentNode, As3Class node) {
for (AvmMember m:node.getMembers()) {
createNode(parentNode, m);
}
}
protected void _createChildren(IOutlineNode parentNode, As3Interface node) {
for (AvmMember m:node.getMembers()) {
createNode(parentNode, m);
}
}
}