/**
* Copyright (c) 2014 by JP Moresmau
* This code is made available under the terms of the Eclipse Public License,
* version 1.0 (EPL). See http://www.eclipse.org/legal/epl-v10.html
*/
package net.sf.eclipsefp.haskell.ui.internal.views.worksheet;
import java.util.List;
import net.sf.eclipsefp.haskell.ui.internal.editors.haskell.HaskellEditor;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.part.IPage;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.part.PageBookView;
/**
* The view showing the worksheet: expressions to evaluate on the current haskell module
* @author JP Moresmau
*
*/
public class WorkSheetView extends PageBookView {
public static final String ID="net.sf.eclipsefp.haskell.ui.internal.views.worksheet.WorkSheetView";
/**
*
*/
public WorkSheetView() {
}
/**
* evaluate the expressions in the current page if it's hooked to the given editor
* @param editor
*/
public void eval(final HaskellEditor editor){
WorkSheetViewPage p=(WorkSheetViewPage)getCurrentPage();
if (p!=null && p.getEditor()==editor){
p.eval();
}
}
/**
* get all eval composites from the current page if it's hooked to the given editor
* @param editor
* @return
*/
public List<EvalComposite> getEvalComposites(final HaskellEditor editor){
WorkSheetViewPage p=(WorkSheetViewPage)getCurrentPage();
if (p!=null && p.getEditor()==editor){
return p.getEvalComposites();
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.ui.part.PageBookView#createDefaultPage(org.eclipse.ui.part.PageBook)
*/
@Override
protected WorkSheetViewPage createDefaultPage( final PageBook book ) {
WorkSheetViewPage page=new WorkSheetViewPage();
initPage( page );
page.createControl(book);
return page;
}
/* (non-Javadoc)
* @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart)
*/
@Override
protected PageRec doCreatePage( final IWorkbenchPart part ) {
if (part instanceof HaskellEditor) {
WorkSheetViewPage page=createDefaultPage(getPageBook());
page.setEditor( (HaskellEditor )part);
return new PageRec(part, page);
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.ui.part.PageBookView#doDestroyPage(org.eclipse.ui.IWorkbenchPart, org.eclipse.ui.part.PageBookView.PageRec)
*/
@Override
protected void doDestroyPage( final IWorkbenchPart part, final PageRec pageRecord ) {
IPage page = pageRecord.page;
page.dispose();
pageRecord.dispose();
}
/* (non-Javadoc)
* @see org.eclipse.ui.part.PageBookView#getBootstrapPart()
*/
@Override
protected IWorkbenchPart getBootstrapPart() {
IWorkbenchPage page = getSite().getPage();
if (page != null) {
return page.getActiveEditor();
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.ui.part.PageBookView#isImportant(org.eclipse.ui.IWorkbenchPart)
*/
@Override
protected boolean isImportant( final IWorkbenchPart part ) {
//We only care about Haskell editors
return (part instanceof HaskellEditor);
}
}