package org.eclipse.util;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.part.IPage;
import org.eclipse.ui.part.IPageBookViewPage;
import org.eclipse.ui.part.MessagePage;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.part.PageBookView;
/**
* A default PageBookView implementation. Subclasses only have to implement
* application-specific methods, such as <code>isImportant</code> and
* <code>doCreatePage</code>.
*/
public abstract class PageBookViewBase extends PageBookView {
private final Set<IPage> pages = new HashSet<IPage>();
@Override
protected IPage createDefaultPage(PageBook book) {
MessagePage page = new MessagePage();
initPage(page);
page.createControl(book);
return page;
}
@Override
protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) {
getPages().remove(pageRecord.page);
pageRecord.dispose();
}
@Override
protected IWorkbenchPart getBootstrapPart() {
return getSite().getPage().getActiveEditor();
}
/**
* Subclasses should call this and return the result in
* <code>doCreatePage</code>.
*/
protected PageRec createPage(IWorkbenchPart part, IPageBookViewPage page) {
initPage(page);
page.createControl(getPageBook());
getPages().add(page);
return new PageRec(part, page);
}
/**
* Returns the page corresponding to a given part.
*/
public IPage getPageForPart(IWorkbenchPart part) {
PageRec pageRec = getPageRec(part);
if (pageRec != null) {
return pageRec.page;
} else {
return null;
}
}
/**
* Returns the currently maintained pages.
*/
public Set<IPage> getPages() {
return pages;
}
}