blob: 24d54261a84a4dafabf02e92b6106d26ba0724fc [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2009-2010 Texas Center for Applied Technology
* Texas Engineering Experiment Station
* The Texas A&M University System
* All Rights Reserved.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Austin Riddle (Texas Center for Applied Technology) -
* initial demo implementation
*****************************************************************************/
package org.eclipse.rap.gef.demo;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.rwt.lifecycle.UICallBack;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorActionBarContributor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.INavigationHistory;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IPartListener2;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IReusableEditor;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.MultiPartInitException;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.EditorPart;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.views.contentoutline.ContentOutline;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
/**
* Wraps an editor in a view
*/
public class EditorView extends ViewPart {
protected EditorPart editor;
/**
* returns the editor wrapped by this view
* @return
*/
public EditorPart getEditor () {
return editor;
}
public Object getAdapter(Class adapter) {
Object o = null;
if (editor != null) o = editor.getAdapter(adapter);
if (o == null) return super.getAdapter(adapter);
return o;
}
public void createPartControl(Composite parent) {
UICallBack.activate(getSite().getId()+getViewSite().getSecondaryId());
if (editor != null)
editor.createPartControl(parent);
}
public void setFocus() {
if (editor != null) {
editor.setFocus();
activateOutlineHooks();
}
}
public void dispose() {
if (editor != null) deactivateOutlineHooks();
UICallBack.deactivate(getSite().getId()+getViewSite().getSecondaryId());
super.dispose();
}
protected void activateOutlineHooks () {
IContentOutlinePage page = (IContentOutlinePage)editor.getAdapter(IContentOutlinePage.class);
if (page != null) {
IWorkbenchPage p = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (p != null) {
IViewReference ref = p.findViewReference(IPageLayout.ID_OUTLINE);
if (ref != null) {
IViewPart vp = ref.getView(false);
if (vp instanceof ContentOutline) {
((ContentOutline)vp).partActivated(editor);
}
}
}
}
}
protected void deactivateOutlineHooks () {
IContentOutlinePage page = (IContentOutlinePage)editor.getAdapter(IContentOutlinePage.class);
if (page != null) {
IWorkbenchPage p = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (p != null) {
IViewReference ref = p.findViewReference(IPageLayout.ID_OUTLINE);
if (ref != null) {
IViewPart vp = ref.getView(false);
if (vp instanceof ContentOutline) {
((ContentOutline)vp).partClosed(editor);
}
}
}
}
}
public void setInitializationData(IConfigurationElement cfig, String propertyName, Object data) {
super.setInitializationData(cfig, propertyName, data);
if (editor != null)
editor.setInitializationData(cfig, propertyName, data);
}
public void init(IViewSite site, IMemento memento) throws PartInitException {
super.init(site, memento);
if (editor != null && editor.getEditorInput() != null)
editor.init(new EditorViewSite(site),editor.getEditorInput());
}
/**
*
* Wraps a view site
*
*/
public class EditorViewSite implements IEditorSite {
IViewSite vSite;
IWorkbenchPage page;
/**
* wraps a view site
* @param site
*/
public EditorViewSite (IViewSite site) {
vSite = site;
page = new EditorViewSitePage();
}
public Object getService(Class api) {
return vSite.getService(api);
}
public boolean hasService(Class api) {
return vSite.hasService(api);
}
public IEditorActionBarContributor getActionBarContributor() {
return null;
}
public IActionBars getActionBars() {
return vSite.getActionBars();
}
public void registerContextMenu(MenuManager menuManager, ISelectionProvider selectionProvider, boolean includeEditorInput) {
registerContextMenu(menuManager,selectionProvider);
}
public void registerContextMenu(String menuId, MenuManager menuManager, ISelectionProvider selectionProvider, boolean includeEditorInput) {
registerContextMenu(menuId,menuManager,selectionProvider);
}
public IWorkbenchPage getPage() {
return page;
}
public ISelectionProvider getSelectionProvider() {
return vSite.getSelectionProvider();
}
public Shell getShell() {
return vSite.getShell();
}
public IWorkbenchWindow getWorkbenchWindow() {
return vSite.getWorkbenchWindow();
}
public void setSelectionProvider(ISelectionProvider provider) {
vSite.setSelectionProvider(provider);
}
public Object getAdapter(Class adapter) {
return vSite.getAdapter(adapter);
}
public String getId() {
return vSite.getId();
}
public IWorkbenchPart getPart() {
return vSite.getPart();
}
public String getPluginId() {
return vSite.getPluginId();
}
public String getRegisteredName() {
return vSite.getRegisteredName();
}
public void registerContextMenu(MenuManager menuManager, ISelectionProvider selectionProvider) {
vSite.registerContextMenu(menuManager,selectionProvider);
}
public void registerContextMenu(String menuId, MenuManager menuManager, ISelectionProvider selectionProvider) {
vSite.registerContextMenu(menuId,menuManager,selectionProvider);
}
class EditorViewSitePage implements IWorkbenchPage {
public IEditorReference[] findEditors(IEditorInput input, String editorId, int matchFlags) {
return vSite.getPage().findEditors(input, editorId, matchFlags);
}
public IWorkingSet getAggregateWorkingSet() {
return getAggregateWorkingSet();
}
public int getPartState(IWorkbenchPartReference ref) {
return vSite.getPage().getPartState(ref);
}
public IWorkbenchPartReference getReference(IWorkbenchPart part) {
return vSite.getPage().getReference(part);
}
public IWorkingSet[] getWorkingSets() {
return vSite.getPage().getWorkingSets();
}
public boolean isPageZoomed() {
return vSite.getPage().isPageZoomed();
}
public IEditorPart openEditor(IEditorInput input, String editorId, boolean activate, int matchFlags) throws PartInitException {
return vSite.getPage().openEditor(input, editorId,activate,matchFlags);
}
public void setPartState(IWorkbenchPartReference ref, int state) {
vSite.getPage().setPartState(ref,state);
}
public void setWorkingSets(IWorkingSet[] sets) {
vSite.getPage().setWorkingSets(sets);
}
public void toggleZoom(IWorkbenchPartReference ref) {
vSite.getPage().toggleZoom(ref);
}
public void zoomOut() {
vSite.getPage().zoomOut();
}
public void activate(IWorkbenchPart part) {
vSite.getPage().activate(part);
}
public void addPropertyChangeListener(IPropertyChangeListener listener) {
vSite.getPage().addPropertyChangeListener(listener);
}
public void bringToTop(IWorkbenchPart part) {
vSite.getPage().bringToTop(part);
}
public boolean close() {
return vSite.getPage().close();
}
public boolean closeAllEditors(boolean save) {
return vSite.getPage().closeAllEditors(save);
}
public void closeAllPerspectives(boolean saveEditors, boolean closePage) {
vSite.getPage().closeAllPerspectives(saveEditors,closePage);
}
public boolean closeEditor(IEditorPart ed, boolean save) {
return vSite.getPage().closeEditor(ed,save);
}
public boolean closeEditors(IEditorReference[] editorRefs, boolean save) {
return vSite.getPage().closeEditors(editorRefs,save);
}
public void closePerspective(IPerspectiveDescriptor desc, boolean saveEditors, boolean closePage) {
vSite.getPage().closePerspective(desc,saveEditors,closePage);
}
public IEditorPart findEditor(IEditorInput input) {
if (input.equals(editor.getEditorInput())) return editor;
return vSite.getPage().findEditor(input);
}
public IViewPart findView(String viewId) {
return vSite.getPage().findView(viewId);
}
public IViewReference findViewReference(String viewId, String secondaryId) {
return vSite.getPage().findViewReference(viewId, secondaryId);
}
public IViewReference findViewReference(String viewId) {
return vSite.getPage().findViewReference(viewId);
}
//THIS IS IMPORTANT
public IEditorPart getActiveEditor() {
if (EditorView.this.equals(vSite.getPage().getActivePart())) {
return editor;
}
return vSite.getPage().getActiveEditor();
}
public IEditorPart[] getDirtyEditors() {
return vSite.getPage().getDirtyEditors();
}
public IEditorReference[] getEditorReferences() {
return vSite.getPage().getEditorReferences();
}
public int getEditorReuseThreshold() {
return vSite.getPage().getEditorReuseThreshold();
}
public IEditorPart[] getEditors() {
return vSite.getPage().getEditors();
}
public IExtensionTracker getExtensionTracker() {
return vSite.getPage().getExtensionTracker();
}
public IAdaptable getInput() {
return vSite.getPage().getInput();
}
public String getLabel() {
return vSite.getPage().getLabel();
}
public INavigationHistory getNavigationHistory() {
return vSite.getPage().getNavigationHistory();
}
public String[] getNewWizardShortcuts() {
return vSite.getPage().getNewWizardShortcuts();
}
public IPerspectiveDescriptor[] getOpenPerspectives() {
return vSite.getPage().getOpenPerspectives();
}
public IPerspectiveDescriptor getPerspective() {
return vSite.getPage().getPerspective();
}
public String[] getPerspectiveShortcuts() {
return vSite.getPage().getPerspectiveShortcuts();
}
public String[] getShowViewShortcuts() {
return vSite.getPage().getShowViewShortcuts();
}
public IPerspectiveDescriptor[] getSortedPerspectives() {
return vSite.getPage().getSortedPerspectives();
}
public IViewReference[] getViewReferences() {
return vSite.getPage().getViewReferences();
}
public IViewPart[] getViews() {
return vSite.getPage().getViews();
}
public IViewPart[] getViewStack(IViewPart part) {
return vSite.getPage().getViewStack(part);
}
public IWorkbenchWindow getWorkbenchWindow() {
return vSite.getPage().getWorkbenchWindow();
}
public IWorkingSet getWorkingSet() {
return vSite.getPage().getWorkingSet();
}
public void hideActionSet(String actionSetID) {
vSite.getPage().hideActionSet(actionSetID);
}
public void hideView(IViewPart view) {
vSite.getPage().hideView(view);
}
public void hideView(IViewReference view) {
vSite.getPage().hideView(view);
}
public boolean isEditorAreaVisible() {
return vSite.getPage().isEditorAreaVisible();
}
public boolean isEditorPinned(IEditorPart ed) {
return vSite.getPage().isEditorPinned(ed);
}
public boolean isPartVisible(IWorkbenchPart part) {
return vSite.getPage().isPartVisible(part);
}
public IEditorPart openEditor(IEditorInput input, String editorId, boolean activate) throws PartInitException {
return vSite.getPage().openEditor(input,editorId,activate);
}
public IEditorPart openEditor(IEditorInput input, String editorId) throws PartInitException {
return vSite.getPage().openEditor(input,editorId);
}
public void removePropertyChangeListener(IPropertyChangeListener listener) {
vSite.getPage().removePropertyChangeListener(listener);
}
public void resetPerspective() {
vSite.getPage().resetPerspective();
}
public void reuseEditor(IReusableEditor ed, IEditorInput input) {
vSite.getPage().reuseEditor(ed,input);
}
public boolean saveAllEditors(boolean confirm) {
return vSite.getPage().saveAllEditors(confirm);
}
public boolean saveEditor(IEditorPart ed, boolean confirm) {
return vSite.getPage().saveEditor(ed,confirm);
}
public void savePerspective() {
vSite.getPage().savePerspective();
}
public void savePerspectiveAs(IPerspectiveDescriptor perspective) {
vSite.getPage().savePerspectiveAs(perspective);
}
public void setEditorAreaVisible(boolean showEditorArea) {
vSite.getPage().setEditorAreaVisible(showEditorArea);
}
public void setEditorReuseThreshold(int openEditors) {
vSite.getPage().setEditorReuseThreshold(openEditors);
}
public void setPerspective(IPerspectiveDescriptor perspective) {
vSite.getPage().setPerspective(perspective);
}
public void showActionSet(String actionSetID) {
vSite.getPage().showActionSet(actionSetID);
}
public IViewPart showView(String viewId, String secondaryId, int mode) throws PartInitException {
return vSite.getPage().showView(viewId,secondaryId,mode);
}
public IViewPart showView(String viewId) throws PartInitException {
return vSite.getPage().showView(viewId);
}
public void addPartListener(IPartListener listener) {
vSite.getPage().addPartListener(listener);
}
public void addPartListener(IPartListener2 listener) {
vSite.getPage().addPartListener(listener);
}
///THIS IS IMPORTANT
public IWorkbenchPart getActivePart() {
if (EditorView.this.equals(vSite.getPage().getActivePart())) {
return editor;
}
return vSite.getPage().getActivePart();
}
public IWorkbenchPartReference getActivePartReference() {
return vSite.getPage().getActivePartReference();
}
public void removePartListener(IPartListener listener) {
vSite.getPage().removePartListener(listener);
}
public void removePartListener(IPartListener2 listener) {
vSite.getPage().removePartListener(listener);
}
public void addPostSelectionListener(ISelectionListener listener) {
vSite.getPage().addPostSelectionListener(listener);
}
public void addPostSelectionListener(String partId, ISelectionListener listener) {
vSite.getPage().addPostSelectionListener(partId,listener);
}
public void addSelectionListener(ISelectionListener listener) {
vSite.getPage().addSelectionListener(listener);
}
public void addSelectionListener(String partId, ISelectionListener listener) {
vSite.getPage().addSelectionListener(partId,listener);
}
public ISelection getSelection() {
return vSite.getPage().getSelection();
}
public ISelection getSelection(String partId) {
return vSite.getPage().getSelection(partId);
}
public void removePostSelectionListener(ISelectionListener listener) {
vSite.getPage().removePostSelectionListener(listener);
}
public void removePostSelectionListener(String partId, ISelectionListener listener) {
vSite.getPage().removePostSelectionListener(partId,listener);
}
public void removeSelectionListener(ISelectionListener listener) {
vSite.getPage().removeSelectionListener(listener);
}
public void removeSelectionListener(String partId, ISelectionListener listener) {
vSite.getPage().removeSelectionListener(partId,listener);
}
public void hideEditor(IEditorReference ref)
{
vSite.getPage().hideEditor(ref);
}
public IEditorReference[] openEditors(IEditorInput[] inputs, String[] editorIDs, int matchFlags) throws MultiPartInitException
{
return vSite.getPage().openEditors(inputs, editorIDs, matchFlags);
}
public void showEditor(IEditorReference ref)
{
vSite.getPage().showEditor(ref);
}
}
}
}