Browse Source

Issue 78: Make SGen generation optional
Added a preferences page to make generation optional.
Moved and renamed all related preferences to be child of YAKINDU Preferences

bohl@itemis.de 10 years ago
parent
commit
89d108a55e

+ 13 - 6
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/builder/SCTBuilder.java

@@ -32,6 +32,7 @@ import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.yakindu.sct.generator.core.GeneratorActivator;
 import org.yakindu.sct.generator.core.GeneratorExecutor;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
@@ -109,14 +110,20 @@ public class SCTBuilder extends IncrementalProjectBuilder {
 	@Override
 	protected IProject[] build(int kind, @SuppressWarnings("rawtypes") Map args, IProgressMonitor monitor)
 			throws CoreException {
-		if (kind == FULL_BUILD) {
-			fullBuild(monitor);
-		} else {
-			IResourceDelta delta = getDelta(getProject());
-			if (delta == null) {
+		
+		IPreferenceStore store = GeneratorActivator.getDefault().getPreferenceStore();
+		boolean generateAutomatical = store.getBoolean(GeneratorActivator.PREF_GENERATE_AUTOMATICALLY);
+
+		if (generateAutomatical) {
+			if (kind == FULL_BUILD) {
 				fullBuild(monitor);
 			} else {
-				incrementalBuild(delta, monitor);
+				IResourceDelta delta = getDelta(getProject());
+				if (delta == null) {
+					fullBuild(monitor);
+				} else {
+					incrementalBuild(delta, monitor);
+				}
 			}
 		}
 		return null;

+ 2 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/GeneratorActivator.java

@@ -13,6 +13,8 @@ public class GeneratorActivator extends AbstractUIPlugin {
 
 	// The shared instance
 	private static GeneratorActivator plugin;
+	//Preference constant for automatic code generation
+	public static final String PREF_GENERATE_AUTOMATICALLY = "generate.automatically";
 	
 	/**
 	 * The constructor

+ 3 - 2
plugins/org.yakindu.sct.generator.genmodel.ui/plugin.xml

@@ -81,9 +81,10 @@
     <extension
             point="org.eclipse.ui.preferencePages">
         <page
-            class="org.yakindu.sct.generator.genmodel.ui.SGenExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+        	category="org.yakindu.sct.ui.preferences.root"
+            class="org.yakindu.sct.generator.genmodel.ui.SGenExecutableExtensionFactory:org.yakindu.sct.generator.genmodel.ui.preferences.GeneratorRootPreferencePage"
             id="org.yakindu.sct.generator.genmodel.SGen"
-            name="SGen">
+            name="Generator Model">
             <keywordReference id="org.yakindu.sct.generator.genmodel.ui.keyword_SGen"/>
         </page>
         <page

+ 42 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/preferences/GeneratorRootPreferencePage.java

@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2015 committers of YAKINDU and others.
+ * 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:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.generator.genmodel.ui.preferences;
+
+import org.eclipse.gmf.runtime.common.ui.preferences.CheckBoxFieldEditor;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage;
+import org.yakindu.sct.generator.core.GeneratorActivator;
+
+public class GeneratorRootPreferencePage extends LanguageRootPreferencePage {
+
+	public GeneratorRootPreferencePage() {
+
+		setPreferenceStore(doGetPreferenceStore());
+		setDescription("Change the behavior of the Generator model");
+	}
+
+	@Override
+	protected void createFieldEditors() {
+		addField(new CheckBoxFieldEditor(GeneratorActivator.PREF_GENERATE_AUTOMATICALLY, "Execute SGen Files automatically: ",
+				getFieldEditorParent()));
+	}
+
+	public void init(IWorkbench workbench) {
+		new PreferenceInitializer().initializeDefaultPreferences();
+	}
+
+	@Override
+	protected IPreferenceStore doGetPreferenceStore() {
+		return GeneratorActivator.getDefault().getPreferenceStore();
+	}
+
+}

+ 27 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/preferences/PreferenceInitializer.java

@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2015 committers of YAKINDU and others.
+ * 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:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.generator.genmodel.ui.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.yakindu.sct.generator.core.GeneratorActivator;
+
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+	@Override
+	public void initializeDefaultPreferences() {
+		getPreferenceStore().setDefault(GeneratorActivator.PREF_GENERATE_AUTOMATICALLY, true);
+	}
+
+	protected IPreferenceStore getPreferenceStore() {
+		return GeneratorActivator.getDefault().getPreferenceStore();
+	}
+}

+ 2 - 1
plugins/org.yakindu.sct.model.stext.ui/plugin.xml

@@ -80,9 +80,10 @@
     <extension
             point="org.eclipse.ui.preferencePages">
         <page
+        	category="org.yakindu.sct.ui.preferences.root"
             class="org.yakindu.sct.model.stext.ui.STextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
             id="org.yakindu.sct.model.stext.SText"
-            name="SText">
+            name="Expressions">
             <keywordReference id="org.yakindu.sct.model.stext.ui.keyword_SText"/>
         </page>
         <page