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;
}
}