source: default/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/formatter/HtmlFormatterHandler.java @ 41

Last change on this file since 41 was 41, checked in by zeiss, 14 years ago
  • Property svn:mime-type set to text/plain
File size: 3.0 KB
Line 
1package de.ugoe.cs.swe.bnftools.ui.formatter;
2
3import java.io.BufferedInputStream;
4import java.io.BufferedReader;
5import java.io.BufferedWriter;
6import java.io.File;
7import java.io.FileInputStream;
8import java.io.FileWriter;
9import java.io.IOException;
10import java.net.URISyntaxException;
11import java.net.URL;
12
13import org.eclipse.core.commands.AbstractHandler;
14import org.eclipse.core.commands.ExecutionEvent;
15import org.eclipse.core.commands.ExecutionException;
16import org.eclipse.core.resources.IContainer;
17import org.eclipse.core.resources.IWorkspace;
18import org.eclipse.core.resources.IWorkspaceRoot;
19import org.eclipse.core.resources.ResourcesPlugin;
20import org.eclipse.core.runtime.IPath;
21import org.eclipse.core.runtime.Platform;
22import org.eclipse.emf.ecore.EObject;
23import org.eclipse.ui.PlatformUI;
24import org.eclipse.xtext.parsetree.NodeAdapter;
25import org.eclipse.xtext.parsetree.NodeUtil;
26import org.eclipse.xtext.ui.editor.XtextEditor;
27import org.eclipse.xtext.ui.editor.model.XtextDocument;
28import org.osgi.framework.Bundle;
29
30import de.ugoe.cs.swe.bnftools.utils.RootEObjectFinder;
31
32public class HtmlFormatterHandler extends AbstractHandler {
33
34        public Object execute(ExecutionEvent event) throws ExecutionException {
35                XtextEditor editor = (XtextEditor) PlatformUI.getWorkbench()
36                                .getActiveWorkbenchWindow().getActivePage().getActiveEditor();
37
38                // TODO: better error handling
39                if (!(editor.getDocument() instanceof XtextDocument)) {
40                        return null;
41                }
42
43                XtextDocument doc = (XtextDocument) editor.getDocument();
44                IContainer parent = editor.getResource().getParent();
45
46                EObject root = doc.readOnly(new RootEObjectFinder());
47                NodeAdapter rootNode = NodeUtil.getNodeAdapter(root);
48
49                FormatterConfig config = new FormatterConfig();
50                EbnfHtmlFormatterVisitor visitor = new EbnfHtmlFormatterVisitor(
51                                rootNode.getParserNode().getElement(), config);
52
53                visitor.accept();
54
55                Bundle bundle = Platform.getBundle("de.ugoe.cs.swe.bnftools.ebnf.ui");
56                String bundlePath = bundle.getLocation().replaceAll("reference:file:","");
57                String resourcePath = bundle.getResource("resources/html-header.html").getPath();
58                String result = "";
59                try {
60                        result = readFileAsString(bundlePath + resourcePath);
61                } catch (IOException e) {
62                }
63                result = result + visitor.getBuf();
64               
65                System.out.println(visitor.getBuf());
66               
67                writeFile(result, editor.getResource().getLocation().toPortableString().toString() + ".html");
68               
69                return null;
70        }
71
72        private String readFileAsString(String filePath) throws java.io.IOException{
73            byte[] buffer = new byte[(int) new File(filePath).length()];
74            FileInputStream f = new FileInputStream(filePath);
75            f.read(buffer);
76            return new String(buffer);
77        }
78       
79        private void writeFile(String str, String filename) {
80                try {
81                        FileWriter fstream = new FileWriter(filename);
82                        BufferedWriter out = new BufferedWriter(fstream);
83                        out.write(str);
84                        out.close();
85                } catch (Exception e) {// Catch exception if any
86                        System.err.println("Error: " + e.getMessage());
87                }
88        }
89
90}
Note: See TracBrowser for help on using the repository browser.