blob: 7171e35cb560a6ea645ec3202a9715d9a14e3264 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2006 Sybase, Inc. and others.
*
* 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:
* Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsf.facesconfig.ui;
import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
import org.eclipse.jface.action.ICoolBarManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jst.jsf.facesconfig.ui.pageflow.PageflowActionBarContributor;
import org.eclipse.jst.jsf.facesconfig.ui.pageflow.PageflowEditor;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.part.EditorActionBarContributor;
import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
import org.eclipse.wst.sse.ui.StructuredTextEditor;
import org.eclipse.wst.xml.ui.internal.tabletree.SourcePageActionContributor;
/**
* The faces-config editor itself is composed by a set of pages. Each page has
* its own action contributor. This FacesConfigActionBarContributor will work as
* a proxy to delegate the action contributing to target nested action
* contributor.
*
* @author hmeng
*/
public class FacesConfigActionBarContributor extends
MultiPageEditorActionBarContributor {
private SourcePageActionContributor sourceActionContributor = null;
private PageflowActionBarContributor pageflowActionContributor = null;
private EditingDomainActionBarContributor formbasedPageActionContributor = null;
private IEditorPart activeNestedEditor;
/**
* Default constructor
*/
public FacesConfigActionBarContributor() {
super();
}
public void setActivePage(IEditorPart activeEditor) {
if (activeEditor != activeNestedEditor) {
if (getActionContributor(activeNestedEditor) != null) {
getActionContributor(activeNestedEditor).setActiveEditor(
activeEditor);
}
activeNestedEditor = activeEditor;
EditorActionBarContributor activeContributor = getActionContributor(activeEditor);
if (activeContributor != null)
activeContributor.setActiveEditor(activeEditor);
else
super.setActiveEditor(activeEditor);
updateActionBars();
}
}
public void contributeToCoolBar(ICoolBarManager coolBarManager) {
EditorActionBarContributor activeContributor = getActionContributor(activeNestedEditor);
if (activeContributor != null)
activeContributor.contributeToCoolBar(coolBarManager);
}
public void contributeToMenu(IMenuManager menuManager) {
EditorActionBarContributor activeContributor = getActionContributor(activeNestedEditor);
if (activeContributor != null) {
activeContributor.contributeToMenu(menuManager);
}
}
public void contributeToStatusLine(IStatusLineManager statusLineManager) {
EditorActionBarContributor activeContributor = getActionContributor(activeNestedEditor);
if (activeContributor != null) {
activeContributor.contributeToStatusLine(statusLineManager);
}
}
public void contributeToToolBar(IToolBarManager toolBarManager) {
EditorActionBarContributor activeContributor = getActionContributor(activeNestedEditor);
if (activeContributor != null) {
activeContributor.contributeToToolBar(toolBarManager);
}
}
public void dispose() {
getFormbasedPageActionContributor().dispose();
getPageflowActionContributor().dispose();
getSourceActionContributor().dispose();
}
public IActionBars getActionBars() {
EditorActionBarContributor activeContributor = getActionContributor(activeNestedEditor);
if (activeContributor != null) {
return activeContributor.getActionBars();
}
return super.getActionBars();
}
public IWorkbenchPage getPage() {
return super.getPage();
}
public void init(IActionBars bars, IWorkbenchPage page) {
getPageflowActionContributor().init(bars, page);
getSourceActionContributor().init(bars, page);
getFormbasedPageActionContributor().init(bars, page);
super.init(bars, page);
}
// private IEditorPart getActiveNestedEditor(IEditorPart targetEditor) {
// IEditorPart activeNestedEditor_;
// if (targetEditor instanceof FormEditor) {
// activeNestedEditor_ = ((FormEditor) targetEditor).getActiveEditor();
// } else {
// activeNestedEditor_ = targetEditor;
// }
// return activeNestedEditor_;
// }
private EditorActionBarContributor getActionContributor(
IEditorPart activeNestedEditor_) {
EditorActionBarContributor activeContributor = null;
if (activeNestedEditor_ instanceof PageflowEditor) {
activeContributor = getPageflowActionContributor();
} else if (activeNestedEditor_ instanceof StructuredTextEditor) {
activeContributor = getSourceActionContributor();
} else if (activeNestedEditor_ != null) {
activeContributor = getFormbasedPageActionContributor();
}
return activeContributor;
}
private SourcePageActionContributor getSourceActionContributor() {
if (sourceActionContributor == null) {
sourceActionContributor = new SourcePageActionContributor();
}
return sourceActionContributor;
}
private EditingDomainActionBarContributor getFormbasedPageActionContributor() {
if (formbasedPageActionContributor == null) {
formbasedPageActionContributor = new MyEditingDomainActionContributor();
}
return formbasedPageActionContributor;
}
private PageflowActionBarContributor getPageflowActionContributor() {
if (pageflowActionContributor == null) {
pageflowActionContributor = new PageflowActionBarContributor();
}
return pageflowActionContributor;
}
/**
* update the action bars
*/
public void updateActionBars() {
EditorActionBarContributor activeContributor = getActionContributor(activeNestedEditor);
if (activeContributor instanceof INestedActionContributor)
((INestedActionContributor) activeContributor).update();
// getActionBars().getMenuManager().removeAll();
// activeContributor.contributeToMenu(getActionBars().getMenuManager());
getActionBars().updateActionBars();
}
}