Parcourir la source

fix inconsistent naming of generators; provide default sorting of generators in GenModel Wizard

holger.willebrandt@gmail.com il y a 13 ans
Parent
commit
f8af168c88

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

@@ -27,7 +27,7 @@
           class="org.yakindu.sct.generator.core.impl.GenericXPandCodeGenerator"
           description="Generate Code using Xpand Templates"
           id="yakindu::xpand"
-          name="YAKINDU Generic Xpand Generator">
+          name="Custom Xpand Generator">
     </SCTGenerator>
  </extension>
  <extension
@@ -36,8 +36,7 @@
           class="org.yakindu.sct.generator.core.impl.GenericJavaBasedGenerator"
           description="Generate Code using Xpand Templates"
           id="yakindu::generic"
-          name="YAKINDU Generic Java Generator">
+          name="Custom Xtend2/Java Generator">
     </SCTGenerator>
  </extension>
- 
 </plugin>

+ 1 - 1
plugins/org.yakindu.sct.generator.cpp/plugin.xml

@@ -8,7 +8,7 @@
             class="org.yakindu.sct.generator.cpp.CppCodeGenerator"
             description="YAKINDU.org C++ Code Generator"
             id="yakindu::cpp"
-            name="YAKINDU.org C++ Code Generator">
+            name="YAKINDU C++ Code Generator">
       </SCTGenerator>
    </extension>
    <extension

+ 56 - 1
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/CoreGenerator.java

@@ -10,12 +10,20 @@
  */
 package org.yakindu.sct.generator.genmodel.ui.wizard;
 
+import java.util.Comparator;
+
+import org.yakindu.sct.generator.core.extensions.GeneratorExtensions.GeneratorDescriptor;
+
 /**
+ * Defines all Generators that are known to be core-generators (provided by
+ * YAKINDU)
+ * 
  * @author holger willebrandt - Initial contribution and API
  */
 public enum CoreGenerator {
 
-	Java("yakindu::java"), C("yakindu::c"), Cpp("yakindu::cpp");
+	Java("yakindu::java"), C("yakindu::c"), Cpp("yakindu::cpp"), GenericJava(
+			"yakindu::generic"), Xpand("yakindu::xpand");
 
 	private String id;
 
@@ -27,4 +35,51 @@ public enum CoreGenerator {
 		return id;
 	}
 
+	static CoreGenerator parseId(String id) {
+		if (Java.id.equals(id)) {
+			return Java;
+		}
+		if (C.id.equals(id)) {
+			return C;
+		}
+		if (Cpp.id.equals(id)) {
+			return Cpp;
+		}
+		if (GenericJava.id.equals(id)) {
+			return GenericJava;
+		}
+		if (Xpand.id.equals(id)) {
+			return Xpand;
+		}
+		throw new IllegalArgumentException(String.format(
+				"No such generator id '%s'", id));
+	}
+
+	/**
+	 * Comparator to sort {@link GeneratorDescriptor}s. YAKINDU
+	 * {@link CoreGenerator}s come first.
+	 */
+	public static final Comparator<GeneratorDescriptor> generatorOrder = new Comparator<GeneratorDescriptor>() {
+
+		public int compare(GeneratorDescriptor o1, GeneratorDescriptor o2) {
+			int a = 0;
+			int b = 0;
+			try {
+				a = CoreGenerator.parseId(o1.getId()).ordinal();
+			} catch (IllegalArgumentException e) {
+				a = Integer.MAX_VALUE;
+			}
+			try {
+				b = CoreGenerator.parseId(o2.getId()).ordinal();
+			} catch (IllegalArgumentException e) {
+				b = Integer.MAX_VALUE;
+			}
+			int result = Integer.valueOf(a).compareTo(b);
+			if (result == 0) {
+				result = o1.getName().compareTo(o2.getName());
+			}
+			return result;
+		}
+	};
+
 }

+ 7 - 5
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/SGenWizardPage2.java

@@ -81,6 +81,7 @@ public class SGenWizardPage2 extends WizardPage {
 	protected CheckboxTreeViewer stateChartTree;
 	private final SGenWizardPage1 fileSelectionPage;
 
+
 	private static final ITreeContentProvider treeContentProvider = new ITreeContentProvider() {
 
 		public Object[] getElements(Object inputElement) {
@@ -173,10 +174,10 @@ public class SGenWizardPage2 extends WizardPage {
 				new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
 		generatorCombo.setLabelProvider(new GeneratorDescriptorLabelProvider());
 		generatorCombo.setContentProvider(new ArrayContentProvider());
-		GeneratorDescriptor[] generatorArray = Iterables.toArray(
-				GeneratorExtensions.getGeneratorDescriptors(),
-				GeneratorDescriptor.class);
-		generatorCombo.setInput(generatorArray);
+		List<GeneratorDescriptor> descriptors = Lists
+				.newArrayList(GeneratorExtensions.getGeneratorDescriptors());
+		Collections.sort(descriptors, CoreGenerator.generatorOrder);
+		generatorCombo.setInput(descriptors);
 		generatorCombo.getCombo().select(0);
 
 		Label lblNewLabel = new Label(container, SWT.NONE);
@@ -292,8 +293,9 @@ public class SGenWizardPage2 extends WizardPage {
 	}
 
 	private void applyPreselection(TreeNode treeNode) {
-		if (treeNode.isPreselected())
+		if (treeNode.isPreselected()) {
 			stateChartTree.setChecked(treeNode, true);
+		}
 		for (TreeNode child : treeNode.children) {
 			applyPreselection(child);
 		}

+ 1 - 1
plugins/org.yakindu.sct.generator.java/plugin.xml

@@ -7,7 +7,7 @@
             class="org.yakindu.sct.generator.java.JavaSCTGenerator"
             description="YAKINDU Java Code Generator"
             id="yakindu::java"
-            name="YAKINDU Java generator">
+            name="YAKINDU Java Code Generator">
       </SCTGenerator>
    </extension>
    <extension