How to programmatically change the selection within package explorer

感情迁移 提交于 2019-11-28 01:48:47

问题


I am currently developing a plugin for eclipse that analyzes dependencies and references between projects within the Eclipse Workspace and displays them in its own View in a UML-like diagram.

To increase the usefulness of my plugin, I wish to add interactivity to the diagram by allowing users to open a project in the package explorer and if applicable open it in an editor by clicking on the graph displayed.

However, my problem is that while I know how to obtain a given selection from the package explorer, I have not been able to find a way to change the selection or simply open up a project in the package explorer programmatically.

Does anyone have a solution for this problem?


回答1:


This answer extends what the accepted answer states but takes it further for folks who mind the "Discouraged Access" warning on the use of PackageExplorerPart. Exact warning (more for easier searching off Google) that you see is

Discouraged access: The type PackageExplorerPart is not accessible due to restriction on required library /eclipse_install_path/eclipse/plugins/org.eclipse.jdt.ui_3.9.1.v20130820-1427.jar

Code Sample:

final IWorkbenchPart activePart = getActivePart();
if (activePart != null && activePart instanceof IPackagesViewPart) {
    ((IPackagesViewPart) activePart).selectAndReveal(newElement);
}

Supporting Code:

private IWorkbenchPart getActivePart() {
    final IWorkbench workbench = PlatformUI.getWorkbench();
    final IWorkbenchWindow activeWindow = workbench.getActiveWorkbenchWindow();
    if (activeWindow != null) {
        final IWorkbenchPage activePage = activeWindow.getActivePage();
        if (activePage != null) {
            return activePage.getActivePart();
        }
    }
    return null;
}



回答2:


I have found the solution. Eclipse does offer direct access to the package explorer in org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart , but it is discouraged.

import org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart;

...

PackageExplorerPart part= PackageExplorerPart.getFromActivePerspective();
IResource resource =  /*any IResource to be selected in the explorer*/;

part.selectAndReveal(resource);

This will highlight whatever IResource resource is and expand the tree as necessary.



来源:https://stackoverflow.com/questions/11335491/how-to-programmatically-change-the-selection-within-package-explorer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!