package org.objectstyle.wolips.componenteditor.inspector;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISaveablePart;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.editors.text.TextEditor;
import org.eclipse.ui.part.IPage;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.part.PageBookView;
import org.objectstyle.wolips.componenteditor.part.ComponentEditor;
import org.objectstyle.wolips.templateeditor.TemplateEditor;
import org.objectstyle.wolips.wodclipse.core.util.ICursorPositionListener;
import org.objectstyle.wolips.wodclipse.editor.WodEditor;
public class BindingsInspectorPageBookView extends PageBookView implements ICursorPositionListener {
private TextEditor _lastEditor;
private Point _lastSelectionRange;
public BindingsInspectorPageBookView() {
super();
}
protected IPage createDefaultPage(PageBook book) {
BindingsInspectorPage page = new BindingsInspectorPage(null);
initPage(page);
page.createControl(book);
return page;
}
public void createPartControl(Composite parent) {
super.createPartControl(parent);
// getSite().getPage().getWorkbenchWindow().getWorkbench().getHelpSystem().setHelp(getPageBook(),
// IPropertiesHelpContextIds.PROPERTY_SHEET_VIEW);
}
public void dispose() {
super.dispose();
// getSite().getPage().removeSelectionListener(this);
}
protected PageRec doCreatePage(IWorkbenchPart part) {
PageRec pageRec = null;
if (part instanceof ComponentEditor) {
ComponentEditor componentEditor = (ComponentEditor) part;
BindingsInspectorPage page = new BindingsInspectorPage(componentEditor);
initPage(page);
page.createControl(getPageBook());
pageRec = new PageRec(part, page);
}
return pageRec;
}
protected void doDestroyPage(IWorkbenchPart part, PageRec rec) {
BindingsInspectorPage page = (BindingsInspectorPage) rec.page;
page.dispose();
rec.dispose();
}
protected IWorkbenchPart getBootstrapPart() {
IWorkbenchPage page = getSite().getPage();
if (page != null) {
return page.getActivePart();
}
return null;
}
public void init(IViewSite site) throws PartInitException {
// site.getPage().addSelectionListener(this);
super.init(site);
}
protected boolean isImportant(IWorkbenchPart part) {
return part instanceof ComponentEditor;
}
@Override
public void partBroughtToTop(IWorkbenchPart part) {
super.partBroughtToTop(part);
}
@Override
public void partDeactivated(IWorkbenchPart part) {
super.partDeactivated(part);
if (part instanceof ComponentEditor) {
ComponentEditor componentEditor = (ComponentEditor) part;
TemplateEditor templateEditor = componentEditor.getTemplateEditor();
if (templateEditor != null) {
templateEditor.getSourceEditor().removeCursorPositionListener(this);
}
WodEditor wodEditor = componentEditor.getWodEditor();
if (wodEditor != null) {
wodEditor.removeCursorPositionListener(this);
}
}
}
public void partActivated(IWorkbenchPart part) {
super.partActivated(part);
if (part instanceof ComponentEditor) {
ComponentEditor componentEditor = (ComponentEditor) part;
TemplateEditor templateEditor = componentEditor.getTemplateEditor();
if (templateEditor != null) {
templateEditor.getSourceEditor().addCursorPositionListener(this);
}
WodEditor wodEditor = componentEditor.getWodEditor();
if (wodEditor != null) {
wodEditor.addCursorPositionListener(this);
}
} else if (part instanceof BindingsInspectorPageBookView) {
if (_lastEditor != null && _lastSelectionRange != null) {
cursorPositionChanged(_lastEditor, _lastSelectionRange);
}
}
}
public void cursorPositionChanged(TextEditor editor, Point selectionRange) {
if (getViewSite().getPage().isPartVisible(this)) {
// pass the selection to the page
BindingsInspectorPage page = (BindingsInspectorPage) getCurrentPage();
if (page != null) {
page.cursorPositionChanged(editor, selectionRange);
}
}
_lastEditor = editor;
_lastSelectionRange = selectionRange;
}
protected Object getViewAdapter(Class key) {
if (ISaveablePart.class.equals(key)) {
return getSaveablePart();
}
return super.getViewAdapter(key);
}
protected ISaveablePart getSaveablePart() {
IWorkbenchPart part = getCurrentContributingPart();
if (part instanceof ISaveablePart) {
return (ISaveablePart) part;
}
return null;
}
}