/*******************************************************************************
* Copyright (c) 2000, 2008 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
* Anton Leherbauer (Wind River Systems) - adaptations for Common Navigator
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import java.net.URL;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.core.runtime.Assert;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.ActionGroup;
/**
* A basic abstract action group implementation similar to
* {@link org.eclipse.cdt.internal.ui.cview.CViewActionGroup}, avoiding
* the explicit dependency on {@link org.eclipse.cdt.internal.ui.cview.CView} to
* allow reuse in the Common Navigator.
*
* @see org.eclipse.cdt.internal.ui.cview.CViewActionGroup
*/
public abstract class AbstractCNavigatorActionGroup extends ActionGroup {
/**
* The view part this action group is associated with.
*/
private final IViewPart fViewPart;
/**
* Create a new action group associated with given view part.
*
* @param viewPart
* the view part this action group is associated with, may not be
* <code>null</code>.
*/
public AbstractCNavigatorActionGroup(IViewPart viewPart) {
Assert.isNotNull(viewPart);
fViewPart = viewPart;
makeActions();
}
/**
* Provide access to the view part this action group has been registered with.
*
* @return the view part
*/
protected IViewPart getViewPart() {
return fViewPart;
}
/**
* Returns the image descriptor with the given relative path.
*/
protected ImageDescriptor getImageDescriptor(String relativePath) {
String iconPath = "/icons/" + relativePath; //$NON-NLS-1$
URL iconURL = FileLocator.find(CUIPlugin.getDefault().getBundle(), new Path(iconPath), null);
// it's safe to pass null
return ImageDescriptor.createFromURL(iconURL);
}
/**
* Makes the actions contained in this action group.
*/
protected abstract void makeActions();
/*
* @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
*/
@Override
public abstract void fillContextMenu(IMenuManager menu);
/*
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
*/
@Override
public abstract void fillActionBars(IActionBars actionBars);
/*
* @see org.eclipse.ui.actions.ActionGroup#updateActionBars()
*/
@Override
public abstract void updateActionBars();
}