--- /dev/null
+package winterwell.markdown.views;
+
+
+import java.io.File;
+import java.net.URI;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IPathEditorInput;
+import org.eclipse.ui.part.ViewPart;
+
+import winterwell.markdown.editors.ActionBarContributor;
+import winterwell.markdown.editors.MarkdownEditor;
+import winterwell.markdown.pagemodel.MarkdownPage;
+
+
+
+
+public class MarkdownPreview extends ViewPart {
+
+ public static MarkdownPreview preview = null;
+
+ private Browser viewer = null;
+
+ /**
+ * The constructor.
+ */
+ public MarkdownPreview() {
+ preview = this;
+ }
+
+ /**
+ * This is a callback that will allow us
+ * to create the viewer and initialize it.
+ */
+ @Override
+ public void createPartControl(Composite parent) {
+ viewer = new Browser(parent, SWT.MULTI); // | SWT.H_SCROLL | SWT.V_SCROLL
+ }
+
+
+
+
+ /**
+ * Passing the focus request to the viewer's control.
+ */
+ @Override
+ public void setFocus() {
+ if (viewer==null) return;
+ viewer.setFocus();
+ update();
+ }
+
+ public void update() {
+ if (viewer==null) return;
+ try {
+ IEditorPart editor = ActionBarContributor.getActiveEditor();
+ if (!(editor instanceof MarkdownEditor)) {
+ viewer.setText("");
+ return;
+ }
+ MarkdownEditor ed = (MarkdownEditor) editor;
+ MarkdownPage page = ed.getMarkdownPage();
+ String html = page.html();
+ html = addBaseURL(editor, html);
+ if (page != null) viewer.setText(html);
+ else viewer.setText("");
+ } catch (Exception ex) {
+ // Smother
+ System.out.println(ex);
+
+ if (viewer != null && !viewer.isDisposed())
+ viewer.setText(ex.getMessage());
+ }
+ }
+
+ /**
+ * Adjust the URL base to be the file's directory.
+ * @param editor
+ * @param html
+ * @return
+ */
+ private String addBaseURL(IEditorPart editor, String html) {
+ try {
+ IPathEditorInput input = (IPathEditorInput) editor.getEditorInput();
+ IPath path = input.getPath();
+ path = path.removeLastSegments(1);
+ File f = path.toFile();
+ URI fileURI = f.toURI();
+ String html2 = "<html><head><base href='"+fileURI+"' /></head><body>\r\n"+html
+ +"\r\n</body></html>";
+ return html2;
+ } catch (Exception ex) {
+ return html;
+ }
+ }
+}
\ No newline at end of file