source: default/v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/handler/BT_GenerationHandlerPDF.java @ 84

Last change on this file since 84 was 84, checked in by hkaulbersch, 10 years ago

commit: generator improved

  • Property svn:mime-type set to text/plain
File size: 5.3 KB
Line 
1package de.ugoe.cs.swe.bnftools.ui.handler;
2
3import java.io.File;
4import java.util.Iterator;
5import java.util.Map;
6import java.util.Map.Entry;
7
8import org.eclipse.core.commands.AbstractHandler;
9import org.eclipse.core.commands.ExecutionEvent;
10import org.eclipse.core.commands.ExecutionException;
11import org.eclipse.core.commands.IHandler;
12import org.eclipse.core.commands.common.NotDefinedException;
13import org.eclipse.core.resources.IFile;
14import org.eclipse.core.resources.IFolder;
15import org.eclipse.core.resources.IProject;
16import org.eclipse.core.resources.IWorkspace;
17import org.eclipse.core.resources.ResourcesPlugin;
18import org.eclipse.core.runtime.CoreException;
19import org.eclipse.core.runtime.IPath;
20import org.eclipse.core.runtime.NullProgressMonitor;
21import org.eclipse.core.runtime.Path;
22import org.eclipse.emf.common.util.URI;
23import org.eclipse.emf.ecore.EcorePackage;
24import org.eclipse.emf.ecore.resource.Resource;
25import org.eclipse.emf.ecore.resource.ResourceSet;
26import org.eclipse.emf.ecore.xml.type.SimpleAnyType;
27import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
28import org.eclipse.jface.dialogs.MessageDialog;
29import org.eclipse.ui.IEditorInput;
30import org.eclipse.ui.IEditorPart;
31import org.eclipse.ui.IWorkbench;
32import org.eclipse.ui.IWorkbenchPage;
33import org.eclipse.ui.IWorkbenchWindow;
34import org.eclipse.ui.PlatformUI;
35import org.eclipse.ui.handlers.HandlerUtil;
36import org.eclipse.ui.part.FileEditorInput;
37import org.eclipse.xtext.builder.EclipseResourceFileSystemAccess2;
38import org.eclipse.xtext.generator.IGenerator;
39import org.eclipse.xtext.generator.OutputConfiguration;
40import org.eclipse.xtext.resource.IResourceDescriptions;
41import org.eclipse.xtext.ui.resource.IResourceSetProvider;
42
43import com.google.inject.Inject;
44import com.google.inject.Provider;
45
46import de.ugoe.cs.swe.bnftools.generator.EbnfGenerator;
47
48public class BT_GenerationHandlerPDF  extends AbstractHandler implements IHandler {
49
50        @Inject
51    private IGenerator generator;
52 
53    @Inject
54    private Provider<EclipseResourceFileSystemAccess2> fileAccessProvider;
55     
56    @Inject
57    IResourceDescriptions resourceDescriptions;
58     
59    @Inject
60    IResourceSetProvider resourceSetProvider;
61     
62   
63   
64    @Override
65    public boolean isEnabled() {
66        return true;
67    }
68
69
70
71   
72    public Object execute(ExecutionEvent event) throws ExecutionException {
73          MessageDialog.openInformation(HandlerUtil.getActiveShell(event),
74                        "Hello", "Generating PDF");
75       
76         
77          //used to save the command name (defined in extensions)
78          String mode = "";
79         
80          try {
81             mode = event.getCommand().getName();
82          } catch (NotDefinedException e1) {
83            e1.printStackTrace();
84          }
85         
86          // stuff to get the workbench and current file
87          IWorkbench wb = PlatformUI.getWorkbench();
88          IWorkbenchWindow window = wb.getActiveWorkbenchWindow();
89          IWorkbenchPage page = window.getActivePage();
90          IEditorPart editor = page.getActiveEditor();
91          IEditorInput input = editor.getEditorInput();
92          IPath path = ((FileEditorInput) input).getPath();
93         
94          String name = path.toString();
95          File myfile = new File(name);
96         
97          IWorkspace workspace= ResourcesPlugin.getWorkspace();
98          IPath location= Path.fromOSString(myfile.getAbsolutePath());
99          IFile file= workspace.getRoot().getFileForLocation(location);
100         
101          IProject project = file.getProject();
102          IFolder srcGenFolder = project.getFolder("src-gen");
103          if (!srcGenFolder.exists()) {
104            try {
105              srcGenFolder.create(true, true, new NullProgressMonitor());
106            } catch (CoreException e) {
107            return null;
108            }
109          }
110         
111          final EclipseResourceFileSystemAccess2 fsa = fileAccessProvider.get();
112         
113          fsa.setProject(project);
114         
115          //same stuff
116          //fsa.setOutputPath("src-gen");
117          fsa.setOutputPath(srcGenFolder.getName().toString());
118         
119          fsa.setMonitor(new NullProgressMonitor());
120          Map<String, OutputConfiguration> teste = fsa.getOutputConfigurations();
121         
122          Iterator<Entry<String, OutputConfiguration>> it = teste.entrySet().iterator();
123         
124          //make a new Outputconfiguration <- needed
125          while(it.hasNext()){
126         
127            Entry<String, OutputConfiguration> next = it.next();
128            OutputConfiguration out = next.getValue();
129            out.isOverrideExistingResources();
130            out.setCreateOutputDirectory(true); // <--- do not touch this
131         
132          }
133          // ----->
134         
135          URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
136          ResourceSet rs = resourceSetProvider.get(project);
137          Resource r = rs.getResource(uri, true);
138         
139          // to pass a String inside a resource i have to wrap it in a EOBject
140          SimpleAnyType wrapper = XMLTypeFactory.eINSTANCE.createSimpleAnyType();
141          wrapper.setInstanceType(EcorePackage.eINSTANCE.getEString());
142          wrapper.setValue(mode);
143          //
144          EbnfGenerator gen = (EbnfGenerator)generator;
145          // add string to resource
146          r.getContents().add(wrapper);
147          gen.doGenerate(r, fsa,false);
148          //generator.doGenerate(r, fsa);
149
150          return null;
151         
152        }
153}
Note: See TracBrowser for help on using the repository browser.