Package winterwell.markdown.views

Source Code of winterwell.markdown.views.MarkdownPreview

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;
  }
  }
}
TOP

Related Classes of winterwell.markdown.views.MarkdownPreview

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.