package tk.eclipse.plugin.htmleditor.editors; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.IPageBookViewPage; import org.eclipse.ui.part.Page; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import tk.eclipse.plugin.htmleditor.HTMLPlugin; /** * <code>IContentOutlinePage</code> implementation for the multi page editor. * * @author Naoki Takezoe */ public class MultiPageEditorOutlinePage extends Page implements IContentOutlinePage { private IContentOutlinePage activePage; private Composite control; /** * Set the active editor. * This outline page shows the outline which is provided by given editor. * * @param editor the active editor */ public void setActiveEditor(IEditorPart editor){ if(activePage!=null){ activePage.getControl().dispose(); } activePage = (IContentOutlinePage)editor.getAdapter(IContentOutlinePage.class); if(control!=null){ if(activePage!=null){ initActivePage(); activePage.createControl(control); getSite().getActionBars().updateActionBars(); control.layout(); } } } @Override public void createControl(Composite parent) { control = new Composite(parent, SWT.NULL); control.setLayout(new FillLayout()); if(activePage!=null){ initActivePage(); activePage.createControl(control); } } /** * Initializes the active outline page. */ private void initActivePage(){ getSite().getActionBars().getToolBarManager().removeAll(); getSite().getActionBars().getMenuManager().removeAll(); if(activePage instanceof IPageBookViewPage){ IPageBookViewPage pageBook = (IPageBookViewPage)activePage; if(pageBook.getSite()==null){ try { pageBook.init(getSite()); } catch(PartInitException ex){ HTMLPlugin.logException(ex); } } } } @Override public Control getControl() { if(activePage!=null){ activePage.getControl(); } return control; } @Override public void setFocus() { if(activePage!=null){ activePage.setFocus(); } } public void addSelectionChangedListener(ISelectionChangedListener listener) { // if(activePage!=null){ // activePage.addSelectionChangedListener(listener); // } } public ISelection getSelection() { if(activePage!=null){ return activePage.getSelection(); } return null; } public void removeSelectionChangedListener(ISelectionChangedListener listener) { // if(activePage!=null){ // activePage.removeSelectionChangedListener(listener); // } } public void setSelection(ISelection selection) { if(activePage!=null){ activePage.setSelection(selection); } } }