package org.eclipselabs.spray.generator.graphiti.templates;
import com.google.inject.Inject;
import java.util.Set;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.xbase.lib.Conversions;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
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;
import org.eclipselabs.spray.mm.spray.MetaClass;
@SuppressWarnings("all")
public class ImageProvider 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 mainExtensionPointFile(final Diagram diagram, final String className) {
StringConcatenation _builder = new StringConcatenation();
StringConcatenation _extensionHeader = this.extensionHeader(this);
_builder.append(_extensionHeader, "");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("package ");
String _diagram_package = GeneratorUtil.diagram_package();
_builder.append(_diagram_package, " ");
_builder.append(";");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.newLine();
_builder.append(" ");
_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.append("}");
_builder.newLine();
return _builder;
}
public StringConcatenation mainFile(final Diagram diagram, final String className) {
StringConcatenation _builder = new StringConcatenation();
MetaClass[] _metaClasses = diagram.getMetaClasses();
final Function1<MetaClass,Boolean> _function = new Function1<MetaClass,Boolean>() {
public Boolean apply(final MetaClass m) {
String _icon = m.getIcon();
boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_icon, null);
return ((Boolean)_operator_notEquals);
}
};
Iterable<MetaClass> _filter = IterableExtensions.<MetaClass>filter(((Iterable<MetaClass>)Conversions.doWrapArray(_metaClasses)), _function);
final Function1<MetaClass,String> _function_1 = new Function1<MetaClass,String>() {
public String apply(final MetaClass m) {
String _icon = m.getIcon();
return _icon;
}
};
Iterable<String> _map = IterableExtensions.<MetaClass, String>map(_filter, _function_1);
Set<String> _set = IterableExtensions.<String>toSet(_map);
final Set<String> icons = _set;
_builder.newLineIfNotEmpty();
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.ui.platform.AbstractImageProvider;");
_builder.newLine();
_builder.newLine();
_builder.append("public class ");
_builder.append(className, "");
_builder.append(" extends AbstractImageProvider {");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(" ");
_builder.append("// The prefix for all identifiers of this image provider");
_builder.newLine();
_builder.append(" ");
_builder.append("public static final String PREFIX = \"");
String _diagram_package_1 = GeneratorUtil.diagram_package();
_builder.append(_diagram_package_1, " ");
_builder.append(".\";");
_builder.newLineIfNotEmpty();
_builder.newLine();
{
for(final String icon : icons) {
_builder.append(" ");
_builder.append("// The image identifier for an EReference.");
_builder.newLine();
_builder.append(" ");
_builder.append("public static final String ");
String _imageIdentifier = this.naming.getImageIdentifier(diagram, icon);
_builder.append(_imageIdentifier, " ");
_builder.append(" = PREFIX + \"");
String _imageBaseName = this.naming.getImageBaseName(icon);
_builder.append(_imageBaseName, " ");
_builder.append("\";");
_builder.newLineIfNotEmpty();
}
}
_builder.newLine();
_builder.append(" ");
_builder.append("@Override");
_builder.newLine();
_builder.append(" ");
_builder.append("protected void addAvailableImages() {");
_builder.newLine();
_builder.append(" ");
_builder.append("// register the path for each image identifier");
_builder.newLine();
{
for(final String icon_1 : icons) {
_builder.append(" ");
_builder.append("addImageFilePath(");
String _imageIdentifier_1 = this.naming.getImageIdentifier(diagram, icon_1);
_builder.append(_imageIdentifier_1, " ");
_builder.append(", \"icons/");
_builder.append(icon_1, " ");
_builder.append("\");");
_builder.newLineIfNotEmpty();
}
}
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
return _builder;
}
}