package org.eclipselabs.spray.generator.graphiti.templates; import com.google.inject.Inject; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.xbase.lib.StringExtensions; import org.eclipse.xtext.xtend2.lib.StringConcatenation; import org.eclipselabs.spray.generator.graphiti.templates.FileGenerator; import org.eclipselabs.spray.generator.graphiti.templates.JavaGenFile; import org.eclipselabs.spray.generator.graphiti.util.GeneratorUtil; import org.eclipselabs.spray.generator.graphiti.util.NamingExtensions; import org.eclipselabs.spray.mm.spray.Diagram; @SuppressWarnings("all") public class DiagramTypeProvider extends FileGenerator { @Inject private NamingExtensions naming; public StringConcatenation generateBaseFile(final EObject modelElement) { JavaGenFile _javaGenFile = this.getJavaGenFile(); String _baseClassName = _javaGenFile.getBaseClassName(); StringConcatenation _mainFile = this.mainFile(((Diagram) modelElement), _baseClassName); return _mainFile; } public StringConcatenation generateExtensionFile(final EObject modelElement) { JavaGenFile _javaGenFile = this.getJavaGenFile(); String _className = _javaGenFile.getClassName(); StringConcatenation _mainExtensionPointFile = this.mainExtensionPointFile(((Diagram) modelElement), _className); return _mainExtensionPointFile; } public StringConcatenation mainFile(final Diagram diagram, final String className) { StringConcatenation _builder = new StringConcatenation(); StringConcatenation _header = this.header(this); _builder.append(_header, ""); _builder.newLineIfNotEmpty(); _builder.append("package "); String _diagram_package = GeneratorUtil.diagram_package(); _builder.append(_diagram_package, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("import org.eclipse.graphiti.dt.AbstractDiagramTypeProvider;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.tb.IToolBehaviorProvider;"); _builder.newLine(); _builder.append("// MARKER_IMPORT"); _builder.newLine(); _builder.newLine(); _builder.append("public class "); _builder.append(className, ""); _builder.append(" extends AbstractDiagramTypeProvider {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("private IToolBehaviorProvider[] toolBehaviorProviders;"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("public "); _builder.append(className, " "); _builder.append("() {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("super();"); _builder.newLine(); _builder.append(" "); _builder.append("setFeatureProvider(new "); String _name = diagram.getName(); String _firstUpper = StringExtensions.toFirstUpper(_name); _builder.append(_firstUpper, " "); _builder.append("FeatureProvider(this));"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("@Override"); _builder.newLine(); _builder.append(" "); _builder.append("public IToolBehaviorProvider[] getAvailableToolBehaviorProviders() {"); _builder.newLine(); _builder.append(" "); _builder.append("if (toolBehaviorProviders == null) {"); _builder.newLine(); _builder.append(" "); _builder.append("toolBehaviorProviders ="); _builder.newLine(); _builder.append(" "); _builder.append("new IToolBehaviorProvider[] { new "); String _name_1 = diagram.getName(); String _firstUpper_1 = StringExtensions.toFirstUpper(_name_1); _builder.append(_firstUpper_1, " "); _builder.append("ToolBehaviourProvider("); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("this) };"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.append("return toolBehaviorProviders;"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append("}"); _builder.newLine(); return _builder; } public StringConcatenation mainExtensionPointFile(final Diagram diagram, final String className) { StringConcatenation _builder = new StringConcatenation(); StringConcatenation _extensionHeader = this.extensionHeader(this); _builder.append(_extensionHeader, ""); _builder.newLineIfNotEmpty(); _builder.append("package "); String _diagram_package = GeneratorUtil.diagram_package(); _builder.append(_diagram_package, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.newLine(); _builder.append("public class "); _builder.append(className, ""); _builder.append(" extends "); _builder.append(className, ""); _builder.append("Base {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.newLine(); _builder.append("}"); _builder.newLine(); return _builder; } }