/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.editor;
import java.util.*;
import org.eclipse.ui.*;
import org.jboss.tools.common.model.ui.editor.EditorPartFactory;
import org.jboss.tools.common.model.ui.editor.EditorPartWrapper;
import org.jboss.tools.common.model.ui.editor.EditorPartWrapperExtension;
public class EditorActionBarContributorWrapper implements IEditorActionBarContributor {
IActionBars bars;
IWorkbenchPage page;
Map<String,IEditorActionBarContributor> contributors = new HashMap<String,IEditorActionBarContributor>();
IEditorActionBarContributor active;
public void init(IActionBars bars, IWorkbenchPage page) {
this.bars = bars;
this.page = page;
}
public void setActiveEditor(IEditorPart targetEditor) {
IEditorPart p = (targetEditor instanceof EditorPartWrapper) ? ((EditorPartWrapper)targetEditor).getEditor() : targetEditor;
String entity = (targetEditor instanceof EditorPartWrapper) ? ((EditorPartWrapper)targetEditor).getEntity() : null;
IEditorActionBarContributor c = getContributor(entity);
if(c != active && c!=null) {
if(active != null) {
active.setActiveEditor(null);
//active.dispose();
}
active = c;
bars.getMenuManager().removeAll();
bars.getToolBarManager().removeAll();
bars.getStatusLineManager().removeAll();
active.init(bars, page);
bars.updateActionBars();
bars.getToolBarManager().update(false);
}
if (active!=null) active.setActiveEditor(p);
}
public void dispose() {
if(active != null) active.dispose();
contributors.clear();
}
public IEditorActionBarContributor getActiveContributer() {
return active;
}
IEditorActionBarContributor getContributor(String entity) {
if(entity == null) entity = ""; //$NON-NLS-1$
IEditorActionBarContributor c = (IEditorActionBarContributor)contributors.get(entity);
if(c == null) {
if(entity != null) {
EditorPartFactory f = EditorPartWrapperExtension.getInstance().getFactory(entity);
if(f != null) c = f.createEditorActionBarContributor();
}
/// if(c == null) c = new XMLActionContributor();
if(c != null) contributors.put(entity, c);
}
return c;
}
}