// ============================================================================
//
// 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 org.talend.dataprofiler.core.ui.editor;
import java.util.Hashtable;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
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.ui.IActionBars;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.forms.editor.IFormPage;
import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
import org.talend.dataprofiler.core.ui.action.actions.RunAnalysisAction;
import org.talend.dataprofiler.core.ui.editor.analysis.AnalysisEditor;
/**
* DOC rli class global comment. Detailled comment
*/
public class AnalysisFormEditorContributor extends MultiPageEditorActionBarContributor {
protected AnalysisEditor fEditor;
protected IFormPage fPage;
private Hashtable<String, Action> fGlobalActions = new Hashtable<String, Action>();
public AnalysisFormEditorContributor() {
super();
}
/**
* DOC rli PDEFormEditorContributor class global comment. Detailled comment
*/
class GlobalAction extends Action {
private String id;
public GlobalAction(String id) {
this.id = id;
}
@Override
public void run() {
fEditor.performGlobalAction(id);
}
}
private void addGlobalAction(String id) {
GlobalAction action = new GlobalAction(id);
action.setActionDefinitionId(id);
addGlobalAction(id, action);
}
private void addGlobalAction(String id, Action action) {
fGlobalActions.put(id, action);
getActionBars().setGlobalActionHandler(id, action);
}
@Override
public void contributeToMenu(IMenuManager mm) {
}
@Override
public void contributeToStatusLine(IStatusLineManager slm) {
}
@Override
public void contributeToToolBar(IToolBarManager tbm) {
}
@Override
public void contributeToCoolBar(ICoolBarManager cbm) {
}
public AnalysisEditor getEditor() {
return fEditor;
}
public IAction getGlobalAction(String id) {
return fGlobalActions.get(id);
}
public IStatusLineManager getStatusLineManager() {
return getActionBars().getStatusLineManager();
}
protected void makeActions() {
addGlobalAction(ActionFactory.DELETE.getId());
// MOD mzhao bug 8710
addGlobalAction(RunAnalysisAction.ID);
}
@Override
public void setActiveEditor(IEditorPart targetEditor) {
if (!(targetEditor instanceof AnalysisEditor)) {
return;
}
fEditor = (AnalysisEditor) targetEditor;
setActivePage(fEditor.getActiveEditor());
}
@Override
public void setActivePage(IEditorPart newEditor) {
if (fEditor == null) {
return;
}
IFormPage oldPage = fPage;
fPage = fEditor.getActivePageInstance();
if (fPage != null) {
if (oldPage != null && !oldPage.isEditor() && !fPage.isEditor()) {
getActionBars().updateActionBars();
}
}
// MOD mzhao bug 8710
addGlobalAction(RunAnalysisAction.ID, fGlobalActions.get(RunAnalysisAction.ID));
}
@Override
public void init(IActionBars bars) {
super.init(bars);
makeActions();
}
}