You will need to add the Go Into action to your CNF view toolbar and the Up feature to the CNF view actions.
public class GoIntoAction extends Action {
private IWorkbenchPage page;
private CommonViewer commonViewer;
public GoIntoAction(IWorkbenchPage p, ISelectionProvider selectionProvider) {
page = p;
commonViewer = (CommonViewer) selectionProvider;
}
@SuppressWarnings("unchecked")
protected List getSelectedResources() {
ISelection selection = commonViewer.getSelection();
List resources = null;
if (selection.isEmpty()) {
resources = new ArrayList();
resources.add(ResourcesPlugin.getWorkspace().getRoot());
} else {
resources = ((IStructuredSelection) selection).toList();
}
return resources;
}
@Override
@SuppressWarnings("unchecked")
public boolean isEnabled() {
List resources = getSelectedResources();
return (resources.size() == 1) && (resources.get(0) instanceof IContainer);
}
@Override
@SuppressWarnings("unchecked")
public void run() {
((ProjectExplorerView)page.getActivePart()).setInput(getSelectedResources().get(0));
}
}
The GoIntoAction is added to the CNF view actionProvider extension. See here for Michael Elder's article on defining the viewer.
public class GoUpAction extends Action implements IViewActionDelegate {
private ProjectExplorerView view;
private CommonViewer commonViewer;
public void init(IViewPart aView) {
view = (ProjectExplorerView) aView;
commonViewer = ((ProjectExplorerView) aView).getCommonViewer();
}
@SuppressWarnings("unchecked")
@Override
public boolean isEnabled() {
return !(commonViewer.getInput() instanceof IWorkspaceRoot);
}
public void run(IAction action) {
view.setInput(((IResource) commonViewer.getInput()).getParent());
action.setEnabled(isEnabled());
}
public void selectionChanged(IAction action, ISelection aSelection) {
action.setEnabled(isEnabled());
}
}
Now add the GoUpAction to the CNF view toolbar.
<extension point="org.eclipse.ui.viewActions">
<viewContribution
id="com.kelman.navigator.ui.view.projectexplorercontribution"
targetID="com.kelman.navigator.ui.view.ProjectExplorer">
<action
class="com.kelman.navigator.ui.actions.GoUpAction"
icon="icons/elcl16/up_nav.gif"
id="com.kelman.navigator.ui.actions.goupaction"
label="%goUp.label"
style="push"
toolbarPath="Normal/additions"
tooltip="%goUp.tooltip">
</action>
</viewContribution>
</extension>
I extracted the icons from the org.eclipse.ui.ide_3.*.jar file and dropped them into my plugin.
You will need the following method in your CommonNavigator implementation.
public void setInput(Object aObject) {
IResource resource = (IResource) aObject;
getCommonViewer().setInput(resource);
setContentDescription(resource.getName());
};

No comments:
Post a Comment