package org.eclipselabs.spray.generator.graphiti.templates; import com.google.inject.Inject; import org.eclipse.emf.ecore.EObject; 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.LayoutExtensions; import org.eclipselabs.spray.generator.graphiti.util.NamingExtensions; import org.eclipselabs.spray.mm.spray.Diagram; import org.eclipselabs.spray.mm.spray.extensions.SprayExtensions; @SuppressWarnings("all") public class PluginActivator extends FileGenerator { @Inject private SprayExtensions e1; @Inject private LayoutExtensions e2; @Inject private NamingExtensions naming; public StringConcatenation generateBaseFile(final EObject modelElement) { JavaGenFile _javaGenFile = this.getJavaGenFile(); String _className = _javaGenFile.getClassName(); StringConcatenation _mainFile = this.mainFile(((Diagram) modelElement), _className); return _mainFile; } 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 _main_package = GeneratorUtil.main_package(); _builder.append(_main_package, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("import org.eclipse.ui.plugin.AbstractUIPlugin;"); _builder.newLine(); _builder.append("import org.eclipse.xtext.util.Modules2;"); _builder.newLine(); _builder.append("import org.eclipselabs.spray.runtime.graphiti.GraphitiRuntimeModule;"); _builder.newLine(); _builder.append("import org.osgi.framework.BundleContext;"); _builder.newLine(); _builder.newLine(); _builder.append("import com.google.inject.Guice;"); _builder.newLine(); _builder.append("import com.google.inject.Injector;"); _builder.newLine(); _builder.newLine(); _builder.append("// MARKER_IMPORT"); _builder.newLine(); _builder.newLine(); _builder.append("/**"); _builder.newLine(); _builder.append(" "); _builder.append("* The activator class controls the plug-in life cycle"); _builder.newLine(); _builder.append(" "); _builder.append("*/"); _builder.newLine(); _builder.append("public class "); _builder.append(className, ""); _builder.append(" extends AbstractUIPlugin {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("private Injector injector;"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("// The plug-in ID"); _builder.newLine(); _builder.append(" "); _builder.append("public static final String PLUGIN_ID = \""); String _pluginId = GeneratorUtil.pluginId(); _builder.append(_pluginId, " "); _builder.append("\"; //$NON-NLS-1$"); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(" "); _builder.append("// The shared instance"); _builder.newLine(); _builder.append(" "); _builder.append("private static "); _builder.append(className, " "); _builder.append(" plugin;"); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(" "); _builder.append("/*"); _builder.newLine(); _builder.append(" "); _builder.append("* (non-Javadoc)"); _builder.newLine(); _builder.append(" "); _builder.append("* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)"); _builder.newLine(); _builder.append(" "); _builder.append("*/"); _builder.newLine(); _builder.append(" "); _builder.append("public void start(BundleContext context) throws Exception {"); _builder.newLine(); _builder.append(" "); _builder.append("super.start(context);"); _builder.newLine(); _builder.append(" "); _builder.append("plugin = this;"); _builder.newLine(); _builder.append(" "); _builder.append("injector = createInjector();"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("/*"); _builder.newLine(); _builder.append(" "); _builder.append("* (non-Javadoc)"); _builder.newLine(); _builder.append(" "); _builder.append("* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)"); _builder.newLine(); _builder.append(" "); _builder.append("*/"); _builder.newLine(); _builder.append(" "); _builder.append("public void stop(BundleContext context) throws Exception {"); _builder.newLine(); _builder.append(" "); _builder.append("plugin = null;"); _builder.newLine(); _builder.append(" "); _builder.append("super.stop(context);"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("/**"); _builder.newLine(); _builder.append(" "); _builder.append("* Returns the shared instance"); _builder.newLine(); _builder.append(" "); _builder.append("* "); _builder.newLine(); _builder.append(" "); _builder.append("* @return the shared instance"); _builder.newLine(); _builder.append(" "); _builder.append("*/"); _builder.newLine(); _builder.append(" "); _builder.append("public static "); _builder.append(className, " "); _builder.append(" getDefault() {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("return plugin;"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("protected Injector createInjector() {"); _builder.newLine(); _builder.append(" "); _builder.append("return Guice.createInjector(Modules2.mixin(new GraphitiRuntimeModule(), new "); String _guiceModuleClassName = this.naming.getGuiceModuleClassName(diagram); String _shortName = this.shortName(_guiceModuleClassName); _builder.append(_shortName, " "); _builder.append("()));"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("public final Injector getInjector() {"); _builder.newLine(); _builder.append(" "); _builder.append("return injector;"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("public static final <T> T get(Class<T> type) {"); _builder.newLine(); _builder.append(" "); _builder.append("return getDefault().getInjector().getInstance(type);"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append("}"); _builder.newLine(); return _builder; } }