Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml	(revision 67)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml	(revision 68)
@@ -248,5 +248,5 @@
 	</extension>
 
-<!---->
+<!--
    <extension
          point="org.eclipse.xtext.builder.participant">
@@ -255,7 +255,7 @@
       </participant>
    </extension>
+   -->
    
-   
-   <!--this is for using a button for generation
+   <!--this is for using a button for generation-->
    <extension
         point="org.eclipse.ui.handlers">
@@ -291,5 +291,5 @@
     </menuContribution>
     </extension>
- -->
+ <!---->
    
    
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/handler/GenerationHandler.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/handler/GenerationHandler.java	(revision 68)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/handler/GenerationHandler.java	(revision 68)
@@ -0,0 +1,78 @@
+package de.ugoe.cs.swe.bnftools.ui.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.xtext.builder.EclipseResourceFileSystemAccess;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.ui.resource.IResourceSetProvider;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GenerationHandler extends AbstractHandler implements IHandler {
+    
+    @Inject
+    private IGenerator generator;
+ 
+    @Inject
+    private Provider<EclipseResourceFileSystemAccess> fileAccessProvider;
+     
+    @Inject
+    IResourceDescriptions resourceDescriptions;
+     
+    @Inject
+    IResourceSetProvider resourceSetProvider;
+     
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+         
+        ISelection selection = HandlerUtil.getCurrentSelection(event);
+        if (selection instanceof IStructuredSelection) {
+            IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+            Object firstElement = structuredSelection.getFirstElement();
+            if (firstElement instanceof IFile) {
+                IFile file = (IFile) firstElement;
+                IProject project = file.getProject();
+                IFolder srcGenFolder = project.getFolder("src-gen");
+                if (!srcGenFolder.exists()) {
+                    try {
+                        srcGenFolder.create(true, true,
+                                new NullProgressMonitor());
+                    } catch (CoreException e) {
+                        return null;
+                    }
+                }
+ 
+                final EclipseResourceFileSystemAccess fsa = fileAccessProvider.get();
+                fsa.setOutputPath(srcGenFolder.getFullPath().toString());
+                 
+                URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
+                ResourceSet rs = resourceSetProvider.get(project);
+                Resource r = rs.getResource(uri, true);
+                generator.doGenerate(r, fsa);
+                 
+            }
+        }
+        return null;
+    }
+ 
+    @Override
+    public boolean isEnabled() {
+        return true;
+    }
+ 
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.xtend	(revision 67)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.xtend	(revision 68)
@@ -8,4 +8,9 @@
 import de.ugoe.cs.swe.bnftools.ebnf.Rule
 import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry
+import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList
+import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition
+import de.ugoe.cs.swe.bnftools.ebnf.Term
+import de.ugoe.cs.swe.bnftools.ebnf.Atom
+import de.ugoe.cs.swe.bnftools.ebnf.StringRule
 
 /**
@@ -26,5 +31,26 @@
 	
 	def text(BnfEntry entry){
-		'Rule'
+		'BnfEntry'
 	}
+	
+	def text(Rule rule){
+		'Rule: '+rule.name
+	}
+	
+	def text(DefinitionList dlist){
+		'Definition List'
+	}
+	
+	def text(SingleDefinition sdef){
+		'Single Definition'
+	}
+	
+	def text(Term term){
+		'Term'
+	}
+	
+	def text(Atom atom){
+		'Atom'
+	}
+	
 }
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend	(revision 67)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend	(revision 68)
@@ -23,7 +23,5 @@
 	}
 
-	def boolean _isLeaf(Rule rule) {
-		return true;
-	}
+
 
 }
