/*******************************************************************************
* Copyright (c) 2005 Vlad Dumitrescu 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:
* Vlad Dumitrescu
*******************************************************************************/
package org.erlide.ui.editors.erl;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.progress.UIJob;
import org.eclipse.ui.texteditor.BasicTextEditorActionContributor;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import org.erlide.ui.editors.erl.actions.GotoAnnotationAction;
public class ErlEditorActionBarContributor extends BasicTextEditorActionContributor {
public ErlEditorActionBarContributor() {
super();
// contentAssistProposal = new RetargetTextEditorAction(ErlideUIMessages
// .getResourceBundle(), "ContentAssistProposal.");
// ErlLogger.debug("AC 1");
fPreviousAnnotation = new GotoAnnotationAction("PreviousAnnotation.", false); //$NON-NLS-1$
fNextAnnotation = new GotoAnnotationAction("NextAnnotation.", true); //$NON-NLS-1$
}
// protected RetargetTextEditorAction contentAssistProposal;
private final GotoAnnotationAction fPreviousAnnotation;
private final GotoAnnotationAction fNextAnnotation;
@Override
public void contributeToMenu(final IMenuManager menuManager) {
final IMenuManager navigateMenu = menuManager
.findMenuUsingPath(IWorkbenchActionConstants.M_NAVIGATE);
if (navigateMenu != null) {
// navigateMenu.add(new Separator());
// navigateMenu.add(fQuickOutline);
}
}
@Override
public void setActiveEditor(final IEditorPart part) {
super.setActiveEditor(part);
ITextEditor editor = null;
if (part instanceof ITextEditor) {
editor = (ITextEditor) part;
}
if (part instanceof ErlangEditor) {
final ErlangEditor erlangEditor = (ErlangEditor) part;
erlangEditor.getActionGroup().fillActionBars(getActionBars());
}
// contentAssistProposal.setAction(getAction(editor,
// "ContentAssistProposal"));
// IActionBars bars = getActionBars();
// bars.setGlobalActionHandler(ErlangActionIds.COMMENT,
// getAction(editor,
// "Comment"));
// bars.setGlobalActionHandler(ErlangActionIds.UNCOMMENT,
// getAction(editor,
// "Uncomment"));
final IActionBars actionBars = getActionBars();
final IStatusLineManager manager = actionBars.getStatusLineManager();
manager.setMessage(null);
manager.setErrorMessage(null);
fPreviousAnnotation.setEditor(editor);
fNextAnnotation.setEditor(editor);
final IAction showOutline = getAction(editor,
IErlangEditorActionDefinitionIds.SHOW_OUTLINE);
actionBars.setGlobalActionHandler(IErlangEditorActionDefinitionIds.SHOW_OUTLINE,
showOutline);
}
/*
* @see IEditorActionBarContributor#init(IActionBars, IWorkbenchPage)
*/
@Override
public void init(final IActionBars bars, final IWorkbenchPage page) {
super.init(bars, page);
// register actions that have a dynamic editor.
bars.setGlobalActionHandler(ITextEditorActionDefinitionIds.GOTO_NEXT_ANNOTATION,
fNextAnnotation);
bars.setGlobalActionHandler(
ITextEditorActionDefinitionIds.GOTO_PREVIOUS_ANNOTATION,
fPreviousAnnotation);
bars.setGlobalActionHandler(ActionFactory.NEXT.getId(), fNextAnnotation);
bars.setGlobalActionHandler(ActionFactory.PREVIOUS.getId(), fPreviousAnnotation);
}
public void displayMessage(final String message) {
getActionBars().getStatusLineManager().setMessage(message);
new UIJob("message clear") {
@Override
public IStatus runInUIThread(final IProgressMonitor monitor) {
getActionBars().getStatusLineManager().setMessage(null);
return Status.OK_STATUS;
}
}.schedule(2000);
}
}