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

Last change on this file since 89 was 89, checked in by phdmakk, 10 years ago
  • removed popup dialogs and other unnecessary code
  • 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_GenerationHandlerRTF  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 RTF");
75          //used to save the command name (defined in extensions)
76          String mode = "";
77         
78          try {
79             mode = event.getCommand().getName();
80          } catch (NotDefinedException e1) {
81          // TODO Auto-generated catch block
82            e1.printStackTrace();
83          }
84         
85          // stuff to get the workbench and current file
86          IWorkbench wb = PlatformUI.getWorkbench();
87          IWorkbenchWindow window = wb.getActiveWorkbenchWindow();
88          IWorkbenchPage page = window.getActivePage();
89          IEditorPart editor = page.getActiveEditor();
90          IEditorInput input = editor.getEditorInput();
91          IPath path = ((FileEditorInput) input).getPath();
92         
93          String name = path.toString();
94          File myfile = new File(name);
95         
96          IWorkspace workspace= ResourcesPlugin.getWorkspace();
97          IPath location= Path.fromOSString(myfile.getAbsolutePath());
98          IFile file= workspace.getRoot().getFileForLocation(location);
99         
100          IProject project = file.getProject();
101          IFolder srcGenFolder = project.getFolder("src-gen");
102          if (!srcGenFolder.exists()) {
103            try {
104              srcGenFolder.create(true, true, new NullProgressMonitor());
105            } catch (CoreException e) {
106            return null;
107            }
108          }
109         
110          final EclipseResourceFileSystemAccess2 fsa = fileAccessProvider.get();
111         
112          fsa.setProject(project);
113         
114          //same stuff
115          //fsa.setOutputPath("src-gen");
116          fsa.setOutputPath(srcGenFolder.getName().toString());
117         
118          fsa.setMonitor(new NullProgressMonitor());
119          Map<String, OutputConfiguration> teste = fsa.getOutputConfigurations();
120         
121          Iterator<Entry<String, OutputConfiguration>> it = teste.entrySet().iterator();
122         
123          //make a new Outputconfiguration <- needed
124          while(it.hasNext()){
125         
126            Entry<String, OutputConfiguration> next = it.next();
127            OutputConfiguration out = next.getValue();
128            out.isOverrideExistingResources();
129            out.setCreateOutputDirectory(true); // <--- do not touch this
130         
131          }
132          // ----->
133         
134          URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
135          ResourceSet rs = resourceSetProvider.get(project);
136          Resource r = rs.getResource(uri, true);
137         
138//        // to pass a String inside a resource i have to wrap it in a EOBject
139//        SimpleAnyType wrapper = XMLTypeFactory.eINSTANCE.createSimpleAnyType();
140//        wrapper.setInstanceType(EcorePackage.eINSTANCE.getEString());
141//        wrapper.setValue(mode);
142//        //
143          EbnfGenerator gen = (EbnfGenerator)generator;
144          // add string to resource
145//        r.getContents().add(wrapper);
146          gen.doGenerate(r, fsa,true);
147          //generator.doGenerate(r, fsa);
148         
149          return null;
150         
151        }
152}
Note: See TracBrowser for help on using the repository browser.