blob: 5a81154a59a512766cf70384dd72831f51ee570e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.examples.rcp.browser;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
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.swt.SWT;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.RetargetAction;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
/**
* Builds the actions and populates the menubar and toolbar when a new window
* is opened.
* This work is factored into a separate class to avoid cluttering
* <code>BrowserAdvisor</code>
* <p>
* This adds several actions to the menus and toolbar that are typical for
* web browsers (e.g. Back, Forward, Stop, Refresh). These are defined as
* retargetable actions, for which the <code>BrowserView</code> registers
* handling actions.
*
* @since 3.1
*/
public class BrowserActionBarAdvisor extends ActionBarAdvisor {
private IAction newWindowAction, newTabAction, quitAction, historyAction, aboutAction;
private RetargetAction backAction, forwardAction, stopAction, refreshAction;
public BrowserActionBarAdvisor(IActionBarConfigurer configurer) {
super(configurer);
}
protected void makeActions(final IWorkbenchWindow window) {
ISharedImages images = window.getWorkbench().getSharedImages();
newWindowAction = ActionFactory.OPEN_NEW_WINDOW.create(window);
newWindowAction.setText("&New Window");
register(newWindowAction);
newTabAction = new Action("New &Tab") { //$NON-NLS-1$
int counter = 0;
{ setId("newTab");
setActionDefinitionId(IBrowserConstants.COMMAND_PREFIX + "newTab"); } //$NON-NLS-1$
public void run() {
try {
String secondaryId = Integer.toString(++counter);
IWorkbenchPage page = window.getActivePage();
if (page != null) {
page.showView(IBrowserConstants.BROWSER_VIEW_ID, secondaryId, IWorkbenchPage.VIEW_ACTIVATE);
}
} catch (PartInitException e) {
e.printStackTrace();
}
}
};
register(newTabAction);
quitAction = ActionFactory.QUIT.create(window);
register(quitAction);
backAction = new RetargetAction("back", "&Back");
backAction.setActionDefinitionId(IBrowserConstants.COMMAND_PREFIX + "back"); //$NON-NLS-1$
backAction.setToolTipText("Back");
backAction.setImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_BACK));
window.getPartService().addPartListener(backAction);
register(backAction);
forwardAction = new RetargetAction("forward", "&Forward");
forwardAction.setActionDefinitionId(IBrowserConstants.COMMAND_PREFIX + "forward"); //$NON-NLS-1$
forwardAction.setToolTipText("Forward");
forwardAction.setImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_FORWARD));
window.getPartService().addPartListener(forwardAction);
register(forwardAction);
stopAction = new RetargetAction("stop", "Sto&p");
stopAction.setActionDefinitionId(IBrowserConstants.COMMAND_PREFIX + "stop"); //$NON-NLS-1$
stopAction.setToolTipText("Stop");
window.getPartService().addPartListener(stopAction);
register(stopAction);
refreshAction = new RetargetAction("refresh", "&Refresh");
refreshAction.setActionDefinitionId(IBrowserConstants.COMMAND_PREFIX + "refresh"); //$NON-NLS-1$
refreshAction.setToolTipText("Refresh");
window.getPartService().addPartListener(refreshAction);
register(refreshAction);
historyAction = new Action("History", IAction.AS_CHECK_BOX) { //$NON-NLS-1$
{ setId("history");
setActionDefinitionId(IBrowserConstants.COMMAND_PREFIX + "history"); } //$NON-NLS-1$
public void run() {
try {
IWorkbenchPage page = window.getActivePage();
if (page != null) {
IViewPart historyView = page.findView(IBrowserConstants.HISTORY_VIEW_ID);
if (historyView == null) {
page.showView(IBrowserConstants.HISTORY_VIEW_ID);
setChecked(true);
}
else {
page.hideView(historyView);
setChecked(false);
}
}
} catch (PartInitException e) {
e.printStackTrace();
}
}
};
register(historyAction);
aboutAction = ActionFactory.ABOUT.create(window);
register(aboutAction);
}
protected void fillMenuBar(IMenuManager menuBar) {
IMenuManager fileMenu = new MenuManager("&File", "file"); //$NON-NLS-2$
menuBar.add(fileMenu);
fileMenu.add(newWindowAction);
fileMenu.add(newTabAction);
fileMenu.add(new Separator());
fileMenu.add(quitAction);
IMenuManager viewMenu = new MenuManager("&View", "view"); //$NON-NLS-2$
menuBar.add(viewMenu);
viewMenu.add(backAction);
viewMenu.add(forwardAction);
viewMenu.add(stopAction);
viewMenu.add(refreshAction);
viewMenu.add(new Separator("views")); //$NON-NLS-1$
viewMenu.add(historyAction);
IMenuManager helpMenu = new MenuManager("&Help", "help"); //$NON-NLS-2$
menuBar.add(helpMenu);
helpMenu.add(aboutAction);
}
protected void fillCoolBar(ICoolBarManager coolBar) {
IToolBarManager toolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
coolBar.add(new ToolBarContributionItem(toolBar, "standard")); //$NON-NLS-1$
// For the Back and Forward actions, force their text to be shown on the toolbar,
// not just their image. For the remaining actions, the ActionContributionItem
// is created implicitly with the default presentation mode.
ActionContributionItem backCI = new ActionContributionItem(backAction);
backCI.setMode(ActionContributionItem.MODE_FORCE_TEXT);
toolBar.add(backCI);
ActionContributionItem forwardCI = new ActionContributionItem(forwardAction);
forwardCI.setMode(ActionContributionItem.MODE_FORCE_TEXT);
toolBar.add(forwardCI);
toolBar.add(stopAction);
toolBar.add(refreshAction);
}
}