/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package oraloganalyzer;
import oraloganalyzer.actions.ExportErrorListAction;
import oraloganalyzer.actions.ParseFileAction;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.ICoolBarManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarContributionItem;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.ContributionItemFactory;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchConfigurer;
/**
* Adds actions to a workbench window.
*/
public final class WorkbenchActionBuilder
{
private IWorkbenchWindow window;
/**
* A convience variable and method so that the actionConfigurer doesn't need
* to get passed into registerGlobalAction every time it's called.
*/
private IActionBarConfigurer fActionBarConfigurer;
// generic actions
private IWorkbenchAction closeAction;
// private IWorkbenchAction closeAllAction;
//
// private IWorkbenchAction closeAllSavedAction;
//
// private IWorkbenchAction saveAction;
//
// private IWorkbenchAction saveAllAction;
//
// private IWorkbenchAction saveAsAction;
// generic retarget actions
private IWorkbenchAction undoAction;
private IWorkbenchAction redoAction;
private IWorkbenchAction cutAction;
private IWorkbenchAction copyAction;
private IWorkbenchAction pasteAction;
private IWorkbenchAction selectAllAction;
private IWorkbenchAction findAction;
// private IWorkbenchAction revertAction;
private IWorkbenchAction quitAction;
private IWorkbenchAction parseFileAction;
private IWorkbenchAction exportAction;
/**
* Constructs a new action builder which contributes actions to the given
* window.
*
* @param window
* the window
*/
public WorkbenchActionBuilder(IWorkbenchWindow window)
{
this.window = window;
}
/**
* Returns the window to which this action builder is contributing.
*/
private IWorkbenchWindow getWindow()
{
return window;
}
/**
* Builds the actions and contributes them to the given window.
*
* @param windowConfigurer
* @param actionBarConfigurer
*/
public void makeAndPopulateActions(IWorkbenchConfigurer windowConfigurer,
IActionBarConfigurer actionBarConfigurer)
{
makeActions(windowConfigurer, actionBarConfigurer);
populateMenuBar(actionBarConfigurer);
populateCoolBar(actionBarConfigurer);
}
/**
* Fills the coolbar with the workbench actions.
*
* @param configurer
*/
private void populateCoolBar(IActionBarConfigurer configurer)
{
ICoolBarManager cbManager = configurer.getCoolBarManager();
//cbManager.add(new GroupMarker("group.file"));
// File Group
IToolBarManager fileToolBar = new ToolBarManager(cbManager.getStyle());
fileToolBar.add(parseFileAction);
fileToolBar.add(exportAction);
/*
fileToolBar.add(new Separator(IWorkbenchActionConstants.NEW_GROUP));
fileToolBar.add(new GroupMarker(IWorkbenchActionConstants.SAVE_GROUP));
fileToolBar.add(saveAction);
fileToolBar.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
*/
// Add to the cool bar manager
cbManager.add(new ToolBarContributionItem(fileToolBar,
IWorkbenchActionConstants.TOOLBAR_FILE));
//cbManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
//cbManager.add(new GroupMarker(IWorkbenchActionConstants.GROUP_EDITOR));
}
/**
* Fills the menu bar with the workbench actions.
*
* @param configurer
*/
public void populateMenuBar(IActionBarConfigurer configurer)
{
IMenuManager menubar = configurer.getMenuManager();
MenuManager menu = createFileMenu();
menubar.add(menu);
menubar.add(createEditMenu());
menubar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
}
/**
* Creates and returns the File menu.
*/
private MenuManager createFileMenu()
{
MenuManager menu = new MenuManager("&Datei", "Datei");
// IWorkbenchActionConstants.M_FILE);
menu.add(new GroupMarker(IWorkbenchActionConstants.FILE_START));
menu.add(parseFileAction);
menu.add(exportAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.NEW_EXT));
menu.add(closeAction);
// menu.add(closeAllAction);
// menu.add(closeAllSavedAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.CLOSE_EXT));
// menu.add(new Separator());
// menu.add(saveAction);
// menu.add(saveAsAction);
// menu.add(saveAllAction);
// menu.add(revertAction);
menu.add(ContributionItemFactory.REOPEN_EDITORS.create(getWindow()));
menu.add(new GroupMarker(IWorkbenchActionConstants.MRU));
menu.add(new Separator());
menu.add(quitAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.FILE_END));
return menu;
}
/**
* Creates and returns the Edit menu.
*/
private MenuManager createEditMenu()
{
MenuManager menu = new MenuManager(
"&Bearbeiten", IWorkbenchActionConstants.M_EDIT); //$NON-NLS-1$
menu.add(new GroupMarker(IWorkbenchActionConstants.EDIT_START));
menu.add(undoAction);
menu.add(redoAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.UNDO_EXT));
menu.add(cutAction);
menu.add(copyAction);
menu.add(pasteAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.CUT_EXT));
menu.add(selectAllAction);
menu.add(new Separator());
menu.add(findAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.FIND_EXT));
menu.add(new GroupMarker(IWorkbenchActionConstants.ADD_EXT));
menu.add(new GroupMarker(IWorkbenchActionConstants.EDIT_END));
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
return menu;
}
/**
* Disposes any resources and unhooks any listeners that are no longer
* needed. Called when the window is closed.
*/
public void dispose()
{
closeAction.dispose();
// closeAllAction.dispose();
// closeAllSavedAction.dispose();
// saveAction.dispose();
// saveAllAction.dispose();
// saveAsAction.dispose();
redoAction.dispose();
cutAction.dispose();
copyAction.dispose();
pasteAction.dispose();
selectAllAction.dispose();
findAction.dispose();
// revertAction.dispose();
quitAction.dispose();
parseFileAction.dispose();
exportAction.dispose();
// null out actions to make leak debugging easier
closeAction = null;
// closeAllAction = null;
// closeAllSavedAction = null;
// saveAction = null;
// saveAllAction = null;
// saveAsAction = null;
undoAction = null;
redoAction = null;
cutAction = null;
copyAction = null;
pasteAction = null;
selectAllAction = null;
findAction = null;
// revertAction = null;
quitAction = null;
parseFileAction = null;
exportAction = null;
}
/**
* Creates actions (and contribution items) for the menu bar, toolbar and
* status line.
*/
private void makeActions(IWorkbenchConfigurer workbenchConfigurer,
IActionBarConfigurer actionBarConfigurer)
{
// The actions in jface do not have menu vs. enable, vs. disable vs.
// color
// There are actions in here being passed the workbench - problem
setCurrentActionBarConfigurer(actionBarConfigurer);
// saveAction = ActionFactory.SAVE.create(getWindow());
// registerGlobalAction(saveAction);
//
// saveAsAction = ActionFactory.SAVE_AS.create(getWindow());
// registerGlobalAction(saveAsAction);
//
// saveAllAction = ActionFactory.SAVE_ALL.create(getWindow());
// registerGlobalAction(saveAllAction);
undoAction = ActionFactory.UNDO.create(getWindow());
registerGlobalAction(undoAction);
redoAction = ActionFactory.REDO.create(getWindow());
registerGlobalAction(redoAction);
cutAction = ActionFactory.CUT.create(getWindow());
registerGlobalAction(cutAction);
copyAction = ActionFactory.COPY.create(getWindow());
registerGlobalAction(copyAction);
pasteAction = ActionFactory.PASTE.create(getWindow());
registerGlobalAction(pasteAction);
selectAllAction = ActionFactory.SELECT_ALL.create(getWindow());
registerGlobalAction(selectAllAction);
findAction = ActionFactory.FIND.create(getWindow());
registerGlobalAction(findAction);
closeAction = ActionFactory.CLOSE.create(getWindow());
closeAction.setText("Schliessen");
registerGlobalAction(closeAction);
// closeAllAction = ActionFactory.CLOSE_ALL.create(getWindow());
// registerGlobalAction(closeAllAction);
//
// closeAllSavedAction =
// ActionFactory.CLOSE_ALL_SAVED.create(getWindow());
// registerGlobalAction(closeAllSavedAction);
// revertAction = ActionFactory.REVERT.create(getWindow());
// registerGlobalAction(revertAction);
quitAction = ActionFactory.QUIT.create(getWindow());
quitAction.setText("Beenden");
registerGlobalAction(quitAction);
parseFileAction = ParseFileAction.create(window);
parseFileAction.setText("�ffnen");
registerGlobalAction(parseFileAction);
exportAction = ExportErrorListAction.create(window);
exportAction.setText("Exportieren");
registerGlobalAction(exportAction);
}
private void setCurrentActionBarConfigurer(
IActionBarConfigurer actionBarConfigurer)
{
this.fActionBarConfigurer = actionBarConfigurer;
}
private void registerGlobalAction(IAction action)
{
fActionBarConfigurer.registerGlobalAction(action);
}
}