@Override public void partOpened(IWorkbenchPartReference partRef) { if (partRef.getPart(false) instanceof AutomationEditor) { IWorkbenchPage page = partRef.getPage(); IViewReference view = page.findViewReference(View.ID); if (view != null) page.setPartState(view, IWorkbenchPage.STATE_MINIMIZED); ++openedEditorNumber; } partActivated(partRef); }
@Override public void partClosed(IWorkbenchPartReference partRef) { if (partRef.getPart(false) instanceof AutomationEditor) { IWorkbenchPage page = partRef.getPage(); IViewReference view = page.findViewReference(View.ID); --openedEditorNumber; if (openedEditorNumber == 0) { page.setEditorAreaVisible(false); if (view != null) page.setPartState(view, IWorkbenchPage.STATE_RESTORED); } } partActivated(partRef); }
/** Shows the current selection (if valid) in the transformed data view. */ private void showSelectionInDataView() { InstanceSelection selection = getValidSelection(); if (selection != null) { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); // pin the property sheet if possible IViewReference ref = page.findViewReference(IPageLayout.ID_PROP_SHEET); if (ref != null) { IViewPart part = ref.getView(true); if (part instanceof PropertySheet) ((PropertySheet) part).setPinned(true); } // show transformed data view with selection if possible try { TransformedDataView transformedDataView = (TransformedDataView) page.showView(TransformedDataView.ID); transformedDataView.showSelection(selection, reportImage); } catch (PartInitException e) { // if it's not there, we cannot do anything } } }
/** * selectionChanged() event handler. Fills the list of managed-built projects based on the * selection. If some non-managed-built projects are selected, disables the action. * * @param action The action * @param selection The selection */ protected void onSelectionChanged(IAction action, ISelection selection) { fProjects.clear(); boolean badObject = false; if (selection != null) { if (selection instanceof IStructuredSelection) { if (selection.isEmpty()) { // could be a form editor or something. try to get the project from the active part IWorkbenchPage page = CUIPlugin.getActivePage(); if (page != null) { IWorkbenchPart part = page.getActivePart(); if (part != null) { Object o = part.getAdapter(IResource.class); if (o != null && o instanceof IResource) { fProjects.add(((IResource) o).getProject()); } } } } Iterator<?> iter = ((IStructuredSelection) selection).iterator(); while (iter.hasNext()) { Object selItem = iter.next(); IProject project = null; if (selItem instanceof ICElement) { ICProject cproject = ((ICElement) selItem).getCProject(); if (cproject != null) project = cproject.getProject(); } else if (selItem instanceof IResource) { project = ((IResource) selItem).getProject(); } else if (selItem instanceof IncludeRefContainer) { ICProject fCProject = ((IncludeRefContainer) selItem).getCProject(); if (fCProject != null) project = fCProject.getProject(); } else if (selItem instanceof IncludeReferenceProxy) { IncludeRefContainer irc = ((IncludeReferenceProxy) selItem).getIncludeRefContainer(); if (irc != null) { ICProject fCProject = irc.getCProject(); if (fCProject != null) project = fCProject.getProject(); } } else if (selItem instanceof IAdaptable) { Object adapter = ((IAdaptable) selItem).getAdapter(IProject.class); if (adapter != null && adapter instanceof IProject) { project = (IProject) adapter; } } // Check whether the project is CDT project if (project != null) { if (!CoreModel.getDefault().isNewStyleProject(project)) project = null; else { ICConfigurationDescription[] tmp = getCfgs(project); if (tmp.length == 0) project = null; } } if (project != null) { fProjects.add(project); } else { badObject = true; break; } } } else if (selection instanceof ITextSelection) { // If a text selection check the selected part to see if we can find // an editor part that we can adapt to a resource and then // back to a project. IWorkbenchWindow window = CUIPlugin.getActiveWorkbenchWindow(); if (window != null) { IWorkbenchPage page = window.getActivePage(); if (page != null) { IWorkbenchPart part = page.getActivePart(); if (part instanceof IEditorPart) { IEditorPart epart = (IEditorPart) part; IResource resource = epart.getEditorInput().getAdapter(IResource.class); if (resource != null) { IProject project = resource.getProject(); badObject = !(project != null && CoreModel.getDefault().isNewStyleProject(project)); if (!badObject) { fProjects.add(project); } } } } } } else if (selection instanceof ImaginarySelection) { fProjects.add(((ImaginarySelection) selection).getProject()); } } boolean enable = false; if (!badObject && !fProjects.isEmpty()) { Iterator<IProject> iter = fProjects.iterator(); ICConfigurationDescription[] firstConfigs = getCfgs(iter.next()); if (firstConfigs != null) { for (ICConfigurationDescription firstConfig : firstConfigs) { boolean common = true; Iterator<IProject> iter2 = fProjects.iterator(); while (iter2.hasNext()) { ICConfigurationDescription[] currentConfigs = getCfgs(iter2.next()); int j = 0; for (; j < currentConfigs.length; j++) { if (firstConfig.getName().equals(currentConfigs[j].getName())) break; } if (j == currentConfigs.length) { common = false; break; } } if (common) { enable = true; break; } } } } action.setEnabled(enable); // Bug 375760 // If focus is on a view that doesn't provide a resource/project context. Use the selection in a // project/resource view. We support three views. If more than one is open, nevermind. If // there's only // one project in the workspace and it's a CDT one, use it unconditionally. // // Note that whatever project we get here is just a candidate; it's tested for suitability when // we // call ourselves recursively // if (badObject || fProjects.isEmpty()) { // Check for lone CDT project in workspace IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); if (projects != null && projects.length == 1) { IProject project = projects[0]; if (CoreModel.getDefault().isNewStyleProject(project) && (getCfgs(project).length > 0)) { onSelectionChanged(action, new ImaginarySelection(project)); return; } } // Check the three supported views IWorkbenchPage page = CUIPlugin.getActivePage(); int viewCount = 0; if (page != null) { IViewReference theViewRef = null; IViewReference viewRef = null; theViewRef = page.findViewReference("org.eclipse.cdt.ui.CView"); // $NON-NLS-1$ viewCount += (theViewRef != null) ? 1 : 0; viewRef = page.findViewReference("org.eclipse.ui.navigator.ProjectExplorer"); // $NON-NLS-1$ viewCount += (viewRef != null) ? 1 : 0; theViewRef = (theViewRef == null) ? viewRef : theViewRef; viewRef = page.findViewReference("org.eclipse.ui.views.ResourceNavigator"); // $NON-NLS-1$ viewCount += (viewRef != null) ? 1 : 0; theViewRef = (theViewRef == null) ? viewRef : theViewRef; if (theViewRef != null && viewCount == 1) { IViewPart view = theViewRef.getView(false); if (view != null) { ISelection cdtSelection = view.getSite().getSelectionProvider().getSelection(); if (cdtSelection != null) { if (!cdtSelection.isEmpty()) { if (!cdtSelection.equals(selection)) { // avoids infinite recursion onSelectionChanged(action, cdtSelection); } } } } } } } }