// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package com.amalto.workbench.editors.xsdeditor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.IPageBookViewPage; import org.eclipse.ui.part.Page; import org.eclipse.ui.part.PageBook; import org.eclipse.ui.views.contentoutline.ContentOutlinePage; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; /** * created by HHB on 2015-10-27 Detailled comment * */ public class XSDEditorContentOutline extends Page implements IContentOutlinePage { private static Log log = LogFactory.getLog(XSDEditorContentOutline.class); private XSDEditor editor; private PageBook pagebook; private IContentOutlinePage activePage; private EmptyOutlinePage emptyOutlinePage; public XSDEditorContentOutline(XSDEditor editor) { this.editor = editor; } public void setSelection(ISelection selection) { } public ISelection getSelection() { return null; } public void addSelectionChangedListener(ISelectionChangedListener listener) { } public void removeSelectionChangedListener(ISelectionChangedListener listener) { } @Override public void createControl(Composite parent) { pagebook = new PageBook(parent, SWT.NONE); setActiveOutlinePage(activePage); } @Override public void dispose() { if (pagebook != null && !pagebook.isDisposed()) { pagebook.dispose(); } if (emptyOutlinePage != null) { emptyOutlinePage.dispose(); emptyOutlinePage = null; } pagebook = null; editor = null; } @Override public Control getControl() { return pagebook; } @Override public void setFocus() { if (activePage != null) { activePage.setFocus(); } } public void setActiveOutlinePage(IContentOutlinePage page) { activePage = page; if (page == null) { activePage = getEmptyOutlinePage(); } Control control = activePage.getControl(); if (getSite() != null) { if (control == null || control.isDisposed()) { if (activePage instanceof IPageBookViewPage) { try { ((IPageBookViewPage) activePage).init(getSite()); } catch (PartInitException e) { log.error(e.getMessage(), e); return; } } activePage.createControl(pagebook); control = activePage.getControl(); } pagebook.showPage(control); } } private IContentOutlinePage getEmptyOutlinePage() { if (emptyOutlinePage == null) { this.emptyOutlinePage = new EmptyOutlinePage(); } return emptyOutlinePage; } class EmptyOutlinePage extends ContentOutlinePage implements IPageBookViewPage { public EmptyOutlinePage() { super(); } } }