下面列出了怎么用org.eclipse.ui.navigator.CommonViewer的API类实例代码及写法,或者点击链接到github查看源代码。
public static void expandConnection(CodewindConnection connection) {
if (connection == null) {
return;
}
List<CodewindApplication> apps = connection.getApps();
if (!apps.isEmpty()) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
IViewPart view = getViewPart(CodewindExplorerView.VIEW_ID);
if (view instanceof CommonNavigator) {
CommonViewer viewer = ((CommonNavigator)view).getCommonViewer();
if (!viewer.getExpandedState(connection)) {
viewer.expandToLevel(AbstractTreeViewer.ALL_LEVELS);
}
}
}
});
}
}
public static void toggleExpansion(Object element) {
final Object obj = element == null ? CodewindManager.getManager() : element;
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
IViewPart view = getViewPart(CodewindExplorerView.VIEW_ID);
if (view instanceof CommonNavigator) {
CommonViewer viewer = ((CommonNavigator)view).getCommonViewer();
if (!viewer.getExpandedState(obj)) {
viewer.expandToLevel(obj, AbstractTreeViewer.ALL_LEVELS);
} else {
viewer.collapseToLevel(obj, AbstractTreeViewer.ALL_LEVELS);
}
}
}
});
}
@Override
public void markerSelected(IWorkbenchPart part, IMarker marker) {
if (selectionInProgress) {
return;
}
BugContentProvider provider = BugContentProvider.getProvider(getNavigatorContentService());
CommonViewer commonViewer = getCommonViewer();
if (marker == null) {
commonViewer.setSelection(new StructuredSelection(), false);
} else if (provider.isFiltered(marker)) {
Object parent = provider.getParent(marker);
if (parent != null) {
commonViewer.setSelection(new StructuredSelection(parent), true);
}
} else {
commonViewer.setSelection(new StructuredSelection(marker), true);
}
}
@Override
public void run(IAction action) {
if (navigator == null) {
return;
}
BugContentProvider provider = BugContentProvider.getProvider(navigator.getNavigatorContentService());
List<GroupType> list = provider.getGrouping().asList();
GroupSelectionDialog dialog = new GroupSelectionDialog(navigator.getSite().getShell(), list);
dialog.setTitle("Bug Group Configuration");
int result = dialog.open();
if (result != Window.OK) {
return;
}
Grouping grouping = Grouping.createFrom(dialog.getGroups());
provider.setGrouping(grouping);
CommonViewer viewer = navigator.getCommonViewer();
Object[] expandedElements = viewer.getExpandedElements();
provider.reSetInput();
viewer.setExpandedElements(expandedElements);
}
@Override
public void run(IAction action) {
if (navigator == null) {
return;
}
Set<BugPattern> filtered = FindbugsPlugin.getFilteredPatterns();
Set<BugCode> filteredTypes = FindbugsPlugin.getFilteredPatternTypes();
FilterBugsDialog dialog = new FilterBugsDialog(navigator.getSite().getShell(), filtered, filteredTypes);
dialog.setTitle("Bug Filter Configuration");
int result = dialog.open();
if (result != Window.OK) {
return;
}
String selectedIds = dialog.getSelectedIds();
FindbugsPlugin.getDefault().getPreferenceStore().setValue(FindBugsConstants.LAST_USED_EXPORT_FILTER, selectedIds);
BugContentProvider provider = BugContentProvider.getProvider(navigator.getNavigatorContentService());
provider.refreshFilters();
CommonViewer viewer = navigator.getCommonViewer();
Object[] expandedElements = viewer.getExpandedElements();
viewer.refresh(true);
viewer.setExpandedElements(expandedElements);
}
@Override
public void run(IAction action) {
if (navigator != null) {
CommonViewer viewer = navigator.getCommonViewer();
BugContentProvider provider = BugContentProvider.getProvider(navigator.getNavigatorContentService());
// provider.setRefreshRequested(true);
Object[] expandedElements = viewer.getExpandedElements();
Object input = viewer.getInput();
if (provider.getChildren(input).length == 0) {
viewer.setInput(null);
if (input instanceof IWorkingSet || input instanceof IWorkspaceRoot) {
viewer.setInput(input);
} else {
viewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
}
viewer.refresh(true);
} else {
provider.reSetInput();
}
viewer.setExpandedElements(expandedElements);
}
}
@Override
public void run(IAction action) {
if (navigator == null) {
return;
}
Grouping grouping = getGrouping(action.getId());
if (grouping == null) {
return;
}
BugContentProvider provider = BugContentProvider.getProvider(navigator.getNavigatorContentService());
provider.setGrouping(grouping);
CommonViewer viewer = navigator.getCommonViewer();
Object[] expandedElements = viewer.getExpandedElements();
provider.reSetInput();
viewer.setExpandedElements(expandedElements);
}
@Override
public void run(IAction action) {
if (!action.isEnabled()) {
return;
}
CommonViewer viewer = navigator.getCommonViewer();
Object[] expandedElements = viewer.getVisibleExpandedElements();
Object input = viewer.getInput();
if (input instanceof BugGroup) {
BugGroup group = (BugGroup) input;
Object data = group.getParent();
boolean needRefresh = data == null;
if (needRefresh) {
BugContentProvider.getProvider(navigator.getNavigatorContentService()).reSetInput();
} else {
viewer.setInput(data);
}
// viewer.setSelection(new StructuredSelection(input), true);
// viewer.expandToLevel(input, 1);
viewer.setExpandedElements(expandedElements);
}
action.setEnabled(isEnabled());
}
public void resourceChanged(final IResourceChangeEvent event) {
UIHelper.runUIAsync(new Runnable() {
public void run() {
ToolboxExplorer.refresh();
// Expand the current spec and all its children
final CommonViewer viewer = ToolboxExplorer.getViewer();
// Event is only null when this Ctor calls us causing the
// initial expanded state of a spec to be fully expanded.
// Afterwards, the users expanded states is preserved.
if (event == null && viewer != null) { // viewer might already be disposed which happens when the Toolbox shuts down.
final Spec specLoaded = Activator.getSpecManager().getSpecLoaded();
viewer.expandToLevel(specLoaded, ToolboxExplorer.DEFAULT_EXPAND_LEVEL);
}
}
});
}
@Override
public void createControl(Composite parent) {
fOutlineViewer = new CommonViewer(OUTLINE_COMMON_NAVIGATOR_ID, parent, SWT.MULTI);
// seems like common filters need to be explicitly added
for (ViewerFilter filter : fOutlineViewer.getNavigatorContentService().getFilterService()
.getVisibleFilters(true)) {
this.fOutlineViewer.addFilter(filter);
}
Object[] listeners = fSelectionChangedListeners.getListeners();
for (int i = 0; i < listeners.length; i++) {
fSelectionChangedListeners.remove(listeners[i]);
fOutlineViewer.addSelectionChangedListener((ISelectionChangedListener) listeners[i]);
}
listeners = fPostSelectionChangedListeners.getListeners();
for (int i = 0; i < listeners.length; i++) {
fPostSelectionChangedListeners.remove(listeners[i]);
fOutlineViewer.addPostSelectionChangedListener((ISelectionChangedListener) listeners[i]);
}
fOutlineViewer.setUseHashlookup(true);
IActionBars actionBars = getSite().getActionBars();
registerToolbarActions(actionBars);
}
@Override
public void expandAll() {
getControl().setRedraw(false);
NavigatorContentProvider.FILE_CHILDREN_ENABLED = false;
final IStructuredSelection currentSelection = (IStructuredSelection) getSelection();
if (currentSelection == null || currentSelection.isEmpty()) {
super.expandAll();
} else {
final Iterator<?> it = currentSelection.iterator();
while (it.hasNext()) {
final Object o = it.next();
if (o instanceof TopLevelFolder) {
expandToLevel(o, CommonViewer.ALL_LEVELS); // 2
} else if (o instanceof IContainer) {
expandToLevel(o, CommonViewer.ALL_LEVELS);
}
}
}
NavigatorContentProvider.FILE_CHILDREN_ENABLED = true;
this.refresh(false);
getControl().setRedraw(true);
}
@Override
protected void handleDoubleClick(final DoubleClickEvent anEvent) {
final IStructuredSelection selection = (IStructuredSelection) anEvent.getSelection();
final Object element = selection.getFirstElement();
if (element instanceof VirtualContent && ((VirtualContent<?>) element).handleDoubleClick()) {
if (element instanceof Tag) {
Tag t = (Tag) element;
findControl.searchFor(t.getName());
return;
}
} else {
super.handleDoubleClick(anEvent);
}
if (element instanceof WrappedContainer || element instanceof TopLevelFolder) {
final CommonViewer tree = getCommonViewer();
if (tree.getExpandedState(element)) {
final Object[] contents = ((VirtualContent<?>) element).getNavigatorChildren();
if (contents.length > 0) {
tree.reveal(contents[contents.length - 1]);
}
}
}
}
public void init(ICommonActionExtensionSite aSite) {
viewer = (CommonViewer) aSite.getStructuredViewer();
contentService = aSite.getContentService();
filterService = (NavigatorFilterService) contentService.getFilterService();
extensionStateModel = contentService.findStateModel(WorkingSetsContentProvider.EXTENSION_ID);
workingSetActionGroup = new WorkingSetFilterActionGroup(aSite.getViewSite().getShell(), filterChangeListener);
workingSetRootModeActionGroup = new WorkingSetRootModeActionGroup(viewer, extensionStateModel);
topLevelModeListener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
setWorkingSet(workingSet);
viewer.getFrameList().reset();
}
};
if (contentService.isActive(WorkingSetsContentProvider.EXTENSION_ID)) {
managerChangeListener.listen();
extensionStateModel.addPropertyChangeListener(topLevelModeListener);
}
contentService.getActivationService().addExtensionActivationListener(activationListener);
}
public void init(ICommonActionExtensionSite aSite) {
viewer = (CommonViewer) aSite.getStructuredViewer();
contentService = aSite.getContentService();
filterService = (NavigatorFilterService) contentService.getFilterService();
extensionStateModel = contentService.findStateModel(WorkingSetsContentProvider.EXTENSION_ID);
workingSetActionGroup = new WorkingSetFilterActionGroup(aSite.getViewSite().getShell(), filterChangeListener);
workingSetRootModeActionGroup = new WorkingSetRootModeActionGroup(viewer, extensionStateModel);
topLevelModeListener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
setWorkingSet(workingSet);
viewer.getFrameList().reset();
}
};
if (contentService.isActive(WorkingSetsContentProvider.EXTENSION_ID)) {
managerChangeListener.listen();
extensionStateModel.addPropertyChangeListener(topLevelModeListener);
}
contentService.getActivationService().addExtensionActivationListener(activationListener);
}
/**
* Tries to find a match for the element in the given root passed. If found returns true.
*
* @param infosSearched: a memo to know which infos were already searched to prevent searching many times in
* the same place.
*/
private IStructuredSelection findMatchInTreeNodeRoot(File element, CommonViewer commonViewer,
InterpreterInfoTreeNodeRoot treeNodeRoot, Set<IInterpreterInfo> infosSearched) {
if (infosSearched.contains(treeNodeRoot.interpreterInfo)) {
return null;
}
infosSearched.add(treeNodeRoot.interpreterInfo);
List<TreeNode> nodesOrderedForFileSearch = treeNodeRoot.getNodesOrderedForFileSearch();
for (TreeNode node : nodesOrderedForFileSearch) {
PythonpathTreeNode match = findMatch(node, element);
if (match != null) {
return new StructuredSelection(match);
}
}
return null;
}
public static void refreshExplorerView() {
Display.getDefault().asyncExec(() -> {
if (PlatformUI.isWorkbenchRunning()
&& PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null
&& PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) {
IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.findView("org.bonitasoft.studio.application.project.explorer");
if (viewPart != null) {
CommonViewer viewer = viewPart.getAdapter(CommonViewer.class);
if (viewer != null && !viewer.getTree().isDisposed()) {
viewer.refresh(true);
}
}
}
});
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (null == activeWorkbenchWindow) {
return null;
}
IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
if (null == activePage) {
return null;
}
IWorkbenchPart activePart = activePage.getActivePart();
if (!(activePart instanceof CommonNavigator)) {
return null;
}
CommonNavigator navigator = (CommonNavigator) activePart;
CommonViewer commonViewer = navigator.getCommonViewer();
Tree navigatorTree = commonViewer.getTree();
List<TreeItem> visibleItems = new ArrayList<>();
collectChildren(navigatorTree.getItems(), visibleItems);
List<Object> visibleData = visibleItems.stream().map(i -> i.getData()).collect(Collectors.toList());
commonViewer.setSelection(new StructuredSelection(visibleData), false);
return null;
}
@Override
protected CommonViewer createCommonViewerObject ( final Composite aParent )
{
// quick fix to automatically expand some content
final CommonViewer result = super.createCommonViewerObject ( aParent );
result.setAutoExpandLevel ( 2 );
return result;
}
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
CommonViewer v2 = (CommonViewer) viewer;
BugContentProvider provider = BugContentProvider.getProvider(v2.getNavigatorContentService());
if (element instanceof BugGroup) {
BugGroup group = (BugGroup) element;
if (provider.getFilteredMarkersCount(group) == group.getMarkersCount()) {
return false;
}
}
return true;
}
@Override
public void inputChanged(Viewer newViewer, Object oldInput, Object newInput) {
viewer = (CommonViewer) newViewer;
if (newInput == null || newInput instanceof IWorkingSet || newInput instanceof IWorkspaceRoot) {
rootElement.dispose();
}
input = newInput;
if (newInput == null) {
refreshJob.setViewer(null);
} else {
refreshJob.setViewer((CommonViewer) newViewer);
bugFilterActive = isBugFilterActive();
}
clearFilters();
}
public void setViewer(CommonViewer newViewer) {
if (newViewer != null) {
this.viewer = newViewer;
startListening();
} else {
stopListening();
this.viewer = null;
}
}
@Override
public void run(IAction action) {
if (action.isEnabled() && navigator != null && selectedElement != null) {
CommonViewer viewer = navigator.getCommonViewer();
Object[] expandedElements = viewer.getVisibleExpandedElements();
viewer.setInput(selectedElement);
viewer.setExpandedElements(expandedElements);
}
}
@Override
public void run(IAction action) {
Set<String> sortedIds = FindbugsPlugin.getFilteredIds();
String patternType = getPatternOrPatternType();
if (patternType != null) {
if (!sortedIds.contains(patternType)) {
sortedIds.add(patternType);
} else {
sortedIds.remove(patternType);
}
}
String ids = FindBugsConstants.encodeIds(sortedIds);
final IPreferenceStore store = FindbugsPlugin.getDefault().getPreferenceStore();
store.setValue(FindBugsConstants.LAST_USED_EXPORT_FILTER, ids);
BugContentProvider provider = BugContentProvider.getProvider(navigator.getNavigatorContentService());
if (!provider.isBugFilterActive()) {
MessageDialog.openWarning(null, "Toggle Filter", "Filtering by pattern or type id is currently not enabled!\n"
+ "To enable it, please select \"Toggle Filters...->Bugs by Id\" filter!");
}
provider.refreshFilters();
CommonViewer viewer = navigator.getCommonViewer();
Object[] expandedElements = viewer.getExpandedElements();
viewer.refresh(true);
viewer.setExpandedElements(expandedElements);
data = null;
}
/**
* Retrieves the current viewer if any
* @return the instance of common viewer or <code>null</code>
*/
public static CommonViewer getViewer()
{
CommonNavigator navigator = findCommonNavigator(ToolboxExplorer.VIEW_ID);
if (navigator != null)
{
final CommonViewer commonViewer = navigator.getCommonViewer();
commonViewer.setAutoExpandLevel(DEFAULT_EXPAND_LEVEL);
return commonViewer;
}
return null;
}
/**
* Refreshes the instance of the viewer if any
*/
public static void refresh()
{
CommonViewer instance = getViewer();
if (instance != null)
{
instance.refresh();
}
}
/**
* Refresh the common navigator viewer starting with this element. Does not
* refresh the model.
*
* @since 3.1
*/
public void refreshViewer() {
Display.getDefault().asyncExec(() -> {
IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow wbWindow = wb.getActiveWorkbenchWindow();
if (wbWindow == null) {
return;
}
IWorkbenchPage activePage = wbWindow.getActivePage();
if (activePage == null) {
return;
}
for (IViewReference viewReference : activePage.getViewReferences()) {
IViewPart viewPart = viewReference.getView(false);
if (viewPart instanceof CommonNavigator) {
CommonViewer commonViewer = ((CommonNavigator) viewPart).getCommonViewer();
Object element = TmfProjectModelElement.this;
if (element instanceof TmfProjectElement) {
IProject project = (IProject) getResource();
if (project != null && !TmfProjectModelHelper.isShadowProject(project)) {
// for the project element the viewer uses the IProject resource
element = getResource();
}
}
commonViewer.refresh(element);
}
}
});
}
@Override
public void inputChanged(final Viewer v, final Object oldInput, final Object newInput) {
final CommonViewer viewer = (CommonViewer) v;
final ResourceManager mapper = new ResourceManager(this, viewer);
getInstance().resetVirtualFolders(mapper);
getWorkspace().addResourceChangeListener(mapper, POST_CHANGE | PRE_DELETE);
super.inputChanged(viewer, oldInput, newInput);
}
private synchronized void initStateModel(Viewer viewer) {
if (!isStateModelInitialized) {
if (viewer instanceof CommonViewer) {
CommonViewer commonViewer = (CommonViewer) viewer;
fContentService = commonViewer.getNavigatorContentService();
fStateModel = fContentService.findStateModel(JAVA_EXTENSION_ID);
isStateModelInitialized = true;
}
}
}
public ResourceToItemsMapper(CommonViewer viewer) {
_resourceToItem = new HashMap();
_reuseLists = new Stack();
_commonViewer = viewer;
viewer.setMapper(this);
}
public void init(ICommonContentExtensionSite aConfig) {
NavigatorContentService cs = (NavigatorContentService) aConfig.getService();
viewer = (CommonViewer) cs.getViewer();
projectExplorer = viewer.getCommonNavigator();
extensionStateModel = aConfig.getExtensionStateModel();
extensionStateModel.addPropertyChangeListener(rootModeListener);
updateRootMode();
}