/*
* generated by Xtext
*/
package org.eclipselabs.spray.xtext.ui.outline;
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;
import org.eclipselabs.spray.mm.spray.Connection;
import org.eclipselabs.spray.mm.spray.Diagram;
import org.eclipselabs.spray.mm.spray.Import;
import org.eclipselabs.spray.mm.spray.Line;
import org.eclipselabs.spray.mm.spray.MetaAttribute;
import org.eclipselabs.spray.mm.spray.MetaReference;
import org.eclipselabs.spray.mm.spray.SprayPackage;
import org.eclipselabs.spray.mm.spray.Text;
/**
* customization of the default outline structure
*/
public class SprayOutlineTreeProvider extends DefaultOutlineTreeProvider {
@Override
protected void _createChildren(DocumentRootNode parentNode, EObject modelElement) {
Diagram diagram = (Diagram) modelElement;
// first the Diagram entry
createNode(parentNode, diagram);
// then the Imports
for (Import element : diagram.getImports()) {
createNode(parentNode, element);
}
// then the rest
for (EObject element : diagram.eContents()) {
if (!(element instanceof Import)) {
createNode(parentNode, element);
}
}
}
@Override
protected void _createNode(IOutlineNode parentNode, EObject modelElement) {
if (modelElement.eClass() == SprayPackage.Literals.LAYOUT)
return;
createEObjectNode(parentNode, modelElement);
}
protected boolean _isLeaf(Diagram element) {
return true;
}
protected boolean _isLeaf(Connection element) {
return true;
}
protected boolean _isLeaf(Text element) {
return true;
}
protected boolean _isLeaf(Line element) {
return true;
}
protected boolean _isLeaf(MetaAttribute element) {
return true;
}
protected boolean _isLeaf(MetaReference element) {
return true;
}
}