blob: b686e39fcd85c5f9d00d95b638cefdcf24b0083b [file] [log] [blame]
/**
* Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
* 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
*
* Contributors:
* Florian Pirchner - Initial implementation
*/
/*
* generated by Xtext
*/
package org.eclipse.osbp.dsl.dto.xtext.ui.outline;
import org.eclipse.xtext.ui.editor.model.IXtextDocument;
import org.eclipse.xtext.ui.editor.outline.IOutlineNode;
import org.eclipse.xtext.ui.editor.outline.impl.DocumentRootNode;
import org.eclipse.xtext.util.TextRegion;
import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
import org.eclipse.osbp.dsl.semantic.common.types.LType;
import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
import org.eclipse.osbp.dsl.semantic.dto.LDto;
import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference;
import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
import org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl;
import org.eclipse.osbp.dsl.xtext.lazyresolver.ui.FastDocumentRootNode;
/**
* Customization of the default outline structure.
*
* see http://www.eclipse.org/Xtext/documentation.html#outline
*/
public class DtoGrammarOutlineTreeProvider extends
org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
/**
* Default for isLeafDispatcher
*/
protected boolean _isLeaf(LDtoMapper mapper) {
return true;
}
/**
* Default for isLeafDispatcher
*/
protected boolean _isLeaf(LDtoAbstractReference element) {
return element.getMapper() == null;
}
/**
* Default for isLeafDispatcher
*/
protected boolean _isLeaf(LDtoAbstractAttributeImpl element) {
return element.getMapper() == null;
}
public IOutlineNode createRoot(IXtextDocument document) {
DocumentRootNode documentNode = new FastDocumentRootNode(
labelProvider.getImage(document),
labelProvider.getText(document), document, this);
documentNode.setTextRegion(new TextRegion(0, document.getLength()));
return documentNode;
}
protected void _createChildren(IOutlineNode parentNode,
LTypedPackage modelElement) {
for (LType childElement : modelElement.getTypes()) {
createNode(parentNode, childElement);
}
}
protected void _createChildren(IOutlineNode parentNode, LDto modelElement) {
for (LAnnotationDef childElement : modelElement.getAnnotations()) {
createNode(parentNode, childElement);
}
for (LDtoFeature childElement : modelElement.getFeatures()) {
createNode(parentNode, childElement);
}
}
}