public void testSearchNotRunIfViewDeactivated() throws PartInitException, JavaModelException { view = (ActiveSearchView) JavaPlugin.getActivePage().showView(ActiveSearchView.ID); for (AbstractRelationProvider provider : ContextCorePlugin.getDefault().getRelationProviders()) { assertTrue(provider.getCurrentDegreeOfSeparation() > 0); } IViewPart viewPart = JavaPlugin.getActivePage().showView("org.eclipse.ui.views.ProblemView"); // XXX e4.0 IPerspectiveDescriptor API has changed // IPerspectiveDescriptor perspective = ((WorkbenchPage) // JavaPlugin.getActivePage()).getPerspective(); IViewReference reference = JavaPlugin.getActivePage().findViewReference(ActiveSearchView.ID); assertNotNull(reference); // assertTrue(perspective.canCloseView(view)); // assertTrue(perspective.hideView(reference)); JavaPlugin.getActivePage().hideView(viewPart); for (AbstractRelationProvider provider : ContextCorePlugin.getDefault().getRelationProviders()) { assertFalse(provider.isEnabled()); } JavaPlugin.getActivePage().showView(ActiveSearchView.ID); for (AbstractRelationProvider provider : ContextCorePlugin.getDefault().getRelationProviders()) { assertTrue(provider.isEnabled()); } }
/** * Utility method to inspect a selection to find a Java element. * * @param selection the selection to be inspected * @return a Java element to be used as the initial selection, or <code>null</code>, if no Java * element exists in the given selection */ protected IJavaElement getInitialJavaElement(IStructuredSelection selection) { IJavaElement jelem = null; if (selection != null && !selection.isEmpty()) { Object selectedElement = selection.getFirstElement(); if (selectedElement instanceof IAdaptable) { IAdaptable adaptable = (IAdaptable) selectedElement; jelem = adaptable.getAdapter(IJavaElement.class); if (jelem == null || !jelem.exists()) { jelem = null; IResource resource = adaptable.getAdapter(IResource.class); if (resource != null && resource.getType() != IResource.ROOT) { while (jelem == null && resource.getType() != IResource.PROJECT) { resource = resource.getParent(); jelem = resource.getAdapter(IJavaElement.class); } if (jelem == null) { jelem = JavaCore.create(resource); // java project } } } } } if (jelem == null) { IWorkbenchPart part = JavaPlugin.getActivePage().getActivePart(); if (part instanceof ContentOutline) { part = JavaPlugin.getActivePage().getActiveEditor(); } if (part instanceof IViewPartInputProvider) { Object elem = ((IViewPartInputProvider) part).getViewPartInput(); if (elem instanceof IJavaElement) { jelem = (IJavaElement) elem; } } } if (jelem == null || jelem.getElementType() == IJavaElement.JAVA_MODEL) { try { IJavaProject[] projects = JavaCore.create(getWorkspaceRoot()).getJavaProjects(); if (projects.length == 1) { IClasspathEntry[] rawClasspath = projects[0].getRawClasspath(); for (int i = 0; i < rawClasspath.length; i++) { if (rawClasspath[i].getEntryKind() == IClasspathEntry.CPE_SOURCE) { // add only if the project contains a source folder jelem = projects[0]; break; } } } } catch (JavaModelException e) { JavaPlugin.log(e); } } return jelem; }
/** * Assert NO proposals on the primitive leaf type of an array type. * * @throws Exception */ public void testAnnotateParameter_ArrayOfPrimitive() throws Exception { String X_PATH = "pack/age/X"; String[] pathAndContents = new String[] { X_PATH + ".java", "package pack.age;\n" + "import java.util.List;\n" + "public interface X {\n" + " public String test(int[] ints, List<String> list);\n" + "}\n" }; addLibrary( fJProject1, "lib.jar", "lib.zip", pathAndContents, ANNOTATION_PATH, JavaCore.VERSION_1_8, null); IType type = fJProject1.findType(X_PATH.replace('/', '.')); JavaEditor javaEditor = (JavaEditor) JavaUI.openInEditor(type); try { int offset = pathAndContents[1].indexOf("int[]"); List<ICompletionProposal> list = collectAnnotateProposals(javaEditor, offset); assertNumberOfProposals(list, 0); } finally { JavaPlugin.getActivePage().closeAllEditors(false); } }
public void testViewRecursion() throws JavaModelException, PartInitException { view = (ActiveSearchView) JavaPlugin.getActivePage().showView(ActiveSearchView.ID); ActiveSearchView.getFromActivePerspective().setSyncExecForTesting(false); for (AbstractRelationProvider provider : ContextCorePlugin.getDefault().getRelationProviders()) { assertTrue(provider.isEnabled()); } assertEquals(0, view.getViewer().getTree().getItemCount()); IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); IMethod m1 = type1.createMethod("void m1() {\n m1(); \n}", null, true, null); StructuredSelection sm1 = new StructuredSelection(m1); monitor.selectionChanged(part, sm1); IInteractionElement node = manager.processInteractionEvent( mockInterestContribution(m1.getHandleIdentifier(), scaling.getLandmark())); assertEquals(1, ContextCore.getContextManager().getActiveLandmarks().size()); assertEquals(1, search(2, node).size()); List<TreeItem> collectedItems = new ArrayList<TreeItem>(); UiTestUtil.collectTreeItemsInView(view.getViewer().getTree().getItems(), collectedItems); // just make sure that the view didn't blow up. assertEquals(1, collectedItems.size()); monitor.selectionChanged(part, sm1); manager.processInteractionEvent( mockInterestContribution(m1.getHandleIdentifier(), -scaling.getLandmark())); }
public void testSearchAfterDeletion() throws JavaModelException, PartInitException, IOException, CoreException { view = (ActiveSearchView) JavaPlugin.getActivePage().showView(ActiveSearchView.ID); if (view != null) { assertEquals(0, view.getViewer().getTree().getItemCount()); IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); IMethod m1 = type1.createMethod("void m1() {\n m2() \n}", null, true, null); IMethod m2 = type1.createMethod("void m2() { }", null, true, null); StructuredSelection sm2 = new StructuredSelection(m2); monitor.selectionChanged(part, sm2); IInteractionElement node = manager.processInteractionEvent( mockInterestContribution(m2.getHandleIdentifier(), scaling.getLandmark())); assertEquals(1, ContextCore.getContextManager().getActiveLandmarks().size()); assertEquals(1, search(2, node).size()); m1.delete(true, null); assertFalse(m1.exists()); assertEquals(0, search(2, node).size()); } }
public JavaEditor openJavaEditor(IJavaElement javaElement) { IEditorPart part = EditorUtility.isOpenInEditor(javaElement); if (part == null) { try { part = JavaUI.openInEditor(javaElement); } catch (PartInitException e) { // ignore } catch (JavaModelException e) { // ignore } } IWorkbenchPage page = JavaPlugin.getActivePage(); if (page != null && part != null) { page.bringToTop(part); } if (part != null) { part.setFocus(); } if (part instanceof JavaEditor) { return (JavaEditor) part; } return null; }
private IProgressMonitor getProgressMonitor() { IWorkbenchPage wbPage = JavaPlugin.getActivePage(); if (wbPage == null) return null; IEditorPart editor = wbPage.getActiveEditor(); if (editor == null) return null; return editor.getEditorSite().getActionBars().getStatusLineManager().getProgressMonitor(); }
/** * Returns the text selection of the current editor. <code>null</code> is returned when the * current editor does not have focus or does not return a text selection. * * @return Returns the text selection of the current editor or <code>null</code>. * @since 3.0 */ protected ITextSelection getCurrentTextSelection() { IWorkbenchPart part = JavaPlugin.getActivePage().getActivePart(); if (part instanceof IEditorPart) { ISelectionProvider selectionProvider = part.getSite().getSelectionProvider(); if (selectionProvider != null) { ISelection selection = selectionProvider.getSelection(); if (selection instanceof ITextSelection) { return (ITextSelection) selection; } } } return null; }
/** * 將所要變更的內容寫回Edit中 (New) * * @param msg */ protected void applyChange(ASTRewrite rewrite) { try { // 參考org.eclipse.jdt.internal.ui.text.correction.CorrectionMarkerResolutionGenerator run // org.eclipse.jdt.internal.ui.text.correction.ChangeCorrectionProposal apply與performChange ICompilationUnit cu = (ICompilationUnit) actOpenable; IEditorPart part = EditorUtility.isOpenInEditor(cu); IEditorInput input = part.getEditorInput(); IDocument doc = JavaPlugin.getDefault().getCompilationUnitDocumentProvider().getDocument(input); performChange(JavaPlugin.getActivePage().getActiveEditor(), doc, rewrite); } catch (CoreException e) { logger.error("[Core Exception] EXCEPTION ", e); } }
// similar to // org.eclipse.jdt.internal.ui.text.correction.ModifierCorrectionSubProcessor.removeOverrideAnnotationProposal(..) public void removeDeprecatedAnnotation( IDocument document, ICompilationUnit cu, BodyDeclaration decl) { Annotation annot = findAnnotation(decl.modifiers()); if (annot != null) { ASTRewrite rewrite = ASTRewrite.create(annot.getAST()); rewrite.remove(annot, null); callASTRewriteCorrectionProposal(getDisplayString(), cu, rewrite, 6, getImage(), document); ITextViewer viewer = getViewer(JavaPlugin.getActivePage().getActiveEditor()); ITrackedNodePosition trackPos = rewrite.track(decl); if (trackPos != null && viewer != null) { viewer.setSelectedRange(trackPos.getStartPosition(), 0); } } }
/** * Returns whether the Smart Insert Mode is selected. * * @return <code>true</code> if the Smart Insert Mode is selected * @since 3.7 */ private boolean isSmartInsertMode() { IWorkbenchPage page = JavaPlugin.getActivePage(); if (page != null) { IEditorPart part = page.getActiveEditor(); if (part instanceof ITextEditorExtension3) { ITextEditorExtension3 extension = (ITextEditorExtension3) part; return extension.getInsertMode() == ITextEditorExtension3.SMART_INSERT; } else if (part != null && EditorUtility.isCompareEditorInput(part.getEditorInput())) { ITextEditorExtension3 extension = (ITextEditorExtension3) part.getAdapter(ITextEditorExtension3.class); if (extension != null) return extension.getInsertMode() == ITextEditorExtension3.SMART_INSERT; } } return false; }
protected void openResource(final IFile resource) { final IWorkbenchPage activePage = JavaPlugin.getActivePage(); if (activePage != null) { final Display display = getShell().getDisplay(); if (display != null) { display.asyncExec( new Runnable() { public void run() { try { IDE.openEditor(activePage, resource, true); } catch (PartInitException e) { JavaPlugin.log(e); } } }); } } }
/** * Assert two proposals ("@NonNull" and "@Nullable") on a complex field type (list of array) Apply * the second proposal and check the effect. * * @throws Exception */ public void testAnnotateField1() throws Exception { String NODE_PATH = "pack/age/Node"; String[] pathAndContents = new String[] { NODE_PATH + ".java", "package pack.age;\n" + "import java.util.List;\n" + "public class Node {\n" + " List<Object[]> value;\n" + "}\n" }; addLibrary( fJProject1, "lib.jar", "lib.zip", pathAndContents, ANNOTATION_PATH, JavaCore.VERSION_1_5, null); IType type = fJProject1.findType(NODE_PATH.replace('/', '.')); JavaEditor javaEditor = (JavaEditor) JavaUI.openInEditor(type); try { int offset = pathAndContents[1].indexOf("[]> value"); List<ICompletionProposal> list = collectAnnotateProposals(javaEditor, offset); assertCorrectLabels(list); assertNumberOfProposals(list, 2); ICompletionProposal proposal = findProposalByName("Annotate as 'Object @NonNull []'", list); String expectedInfo = "<dl><dt>value</dt>" + "<dd>Ljava/util/List<[Ljava/lang/Object;>;</dd>" + "<dd>Ljava/util/List<[<b>1</b>Ljava/lang/Object;>;</dd>" + // <= 1 "</dl>"; assertEquals("expect detail", expectedInfo, proposal.getAdditionalProposalInfo()); proposal = findProposalByName("Annotate as 'Object @Nullable []'", list); expectedInfo = "<dl><dt>value</dt>" + "<dd>Ljava/util/List<[Ljava/lang/Object;>;</dd>" + "<dd>Ljava/util/List<[<b>0</b>Ljava/lang/Object;>;</dd>" + // <= 0 "</dl>"; assertEquals("expect detail", expectedInfo, proposal.getAdditionalProposalInfo()); IDocument document = javaEditor.getDocumentProvider().getDocument(javaEditor.getEditorInput()); proposal.apply(document); IFile annotationFile = fJProject1.getProject().getFile(new Path(ANNOTATION_PATH).append(NODE_PATH + ".eea")); assertTrue("Annotation file should have been created", annotationFile.exists()); String expectedContent = "class pack/age/Node\n" + "value\n" + " Ljava/util/List<[Ljava/lang/Object;>;\n" + " Ljava/util/List<[0Ljava/lang/Object;>;\n"; checkContentOfFile("annotation file content", annotationFile, expectedContent); } finally { JavaPlugin.getActivePage().closeAllEditors(false); } }
// FIXME(stephan): enable once implemented public void _testAnnotateParameter_TypeParameter() throws Exception { String X_PATH = "pack/age/X"; String[] pathAndContents = new String[] { X_PATH + ".java", "package pack.age;\n" + "import java.util.List;\n" + "public interface X {\n" + " public <X, T extends List<X>> X test(T list);\n" + "}\n" }; addLibrary( fJProject1, "lib.jar", "lib.zip", pathAndContents, ANNOTATION_PATH, JavaCore.VERSION_1_8, null); IType type = fJProject1.findType(X_PATH.replace('/', '.')); JavaEditor javaEditor = (JavaEditor) JavaUI.openInEditor(type); try { int offset = pathAndContents[1].indexOf("T extends"); List<ICompletionProposal> list = collectAnnotateProposals(javaEditor, offset); assertCorrectLabels(list); assertNumberOfProposals(list, 2); ICompletionProposal proposal = findProposalByName("Annotate as '@NonNull T'", list); String expectedInfo = "<dl><dt>test</dt>" + "<dd><X:Ljava/lang/Object;T:Ljava/util/List<TX;>>(TT;)TX;</dd>" + "<dd><X:Ljava/lang/Object;1T:Ljava/util/List<TX;>>(TT;)TX;</dd>" + // <= 1 "</dl>"; assertEquals("expect detail", expectedInfo, proposal.getAdditionalProposalInfo()); proposal = findProposalByName("Annotate as '@Nullable Number'", list); expectedInfo = "<dl><dt>test</dt>" + "<dd><X:Ljava/lang/Object;T:Ljava/util/List<TX;>>(TT;)TX;</dd>" + "<dd><X:Ljava/lang/Object;0T:Ljava/util/List<TX;>>(TT;)TX;</dd>" + // <= 0 "</dl>"; assertEquals("expect detail", expectedInfo, proposal.getAdditionalProposalInfo()); IDocument document = javaEditor.getDocumentProvider().getDocument(javaEditor.getEditorInput()); proposal.apply(document); IFile annotationFile = fJProject1.getProject().getFile(new Path(ANNOTATION_PATH).append(X_PATH + ".eea")); assertTrue("Annotation file should have been created", annotationFile.exists()); String expectedContent = "class pack/age/X\n" + "test\n" + " <X:Ljava/lang/Object;T:Ljava/util/List<;TX;>>(TT;)TX;\n" + " <X:Ljava/lang/Object;0T:Ljava/util/List<;TX;>>(TT;)TX;\n"; checkContentOfFile("annotation file content", annotationFile, expectedContent); } finally { JavaPlugin.getActivePage().closeAllEditors(false); } }
/** * Assert two proposals ("@NonNull" and "@Nullable") on the array representing the varargs * ellipsis An entry with annotation on the inner array already exists and will be amended. Apply * the second proposal and check the effect. * * <p>Cf. {@link AnnotateAssistTest18#testAnnotateParameter_Varargs1()} * * @throws Exception */ public void testAnnotateParameter_Varargs2() throws Exception { String X_PATH = "pack/age/X"; String[] pathAndContents = new String[] { X_PATH + ".java", "package pack.age;\n" + "import java.util.List;\n" + "public interface X {\n" + " public String test(List<String> list, int[] ... ints);\n" + "}\n" }; addLibrary( fJProject1, "lib.jar", "lib.zip", pathAndContents, ANNOTATION_PATH, JavaCore.VERSION_1_8, null); IFile annotationFile = fJProject1.getProject().getFile(new Path(ANNOTATION_PATH).append(X_PATH + ".eea")); String initialContent = "class pack/age/X\n" + "test\n" + " (Ljava/util/List<Ljava/lang/String;>;[[I)Ljava/lang/String;\n" + " (Ljava/util/List<Ljava/lang/String;>;[[1I)Ljava/lang/String;\n"; ensureExists(annotationFile.getParent()); annotationFile.create(new ByteArrayInputStream(initialContent.getBytes("UTF-8")), 0, null); IType type = fJProject1.findType(X_PATH.replace('/', '.')); JavaEditor javaEditor = (JavaEditor) JavaUI.openInEditor(type); try { int offset = pathAndContents[1].indexOf("..."); List<ICompletionProposal> list = collectAnnotateProposals(javaEditor, offset); assertCorrectLabels(list); assertNumberOfProposals(list, 2); ICompletionProposal proposal = findProposalByName("Annotate as 'int[] @NonNull ...'", list); String expectedInfo = "<dl><dt>test</dt>" + "<dd>(Ljava/util/List<Ljava/lang/String;>;[[I)Ljava/lang/String;</dd>" + "<dd>(Ljava/util/List<Ljava/lang/String;>;[<b>1</b>[1I)Ljava/lang/String;</dd>" + // <= 1 "</dl>"; assertEquals("expect detail", expectedInfo, proposal.getAdditionalProposalInfo()); proposal = findProposalByName("Annotate as 'int[] @Nullable ...'", list); expectedInfo = "<dl><dt>test</dt>" + "<dd>(Ljava/util/List<Ljava/lang/String;>;[[I)Ljava/lang/String;</dd>" + "<dd>(Ljava/util/List<Ljava/lang/String;>;[<b>0</b>[1I)Ljava/lang/String;</dd>" + // <= 0 "</dl>"; assertEquals("expect detail", expectedInfo, proposal.getAdditionalProposalInfo()); IDocument document = javaEditor.getDocumentProvider().getDocument(javaEditor.getEditorInput()); proposal.apply(document); annotationFile = fJProject1.getProject().getFile(new Path(ANNOTATION_PATH).append(X_PATH + ".eea")); assertTrue("Annotation file should have been created", annotationFile.exists()); String expectedContent = "class pack/age/X\n" + "test\n" + " (Ljava/util/List<Ljava/lang/String;>;[[I)Ljava/lang/String;\n" + " (Ljava/util/List<Ljava/lang/String;>;[0[1I)Ljava/lang/String;\n"; checkContentOfFile("annotation file content", annotationFile, expectedContent); } finally { JavaPlugin.getActivePage().closeAllEditors(false); } }
/** * Returns the currently active java editor, or <code>null</code> if it cannot be determined. * * @return the currently active java editor, or <code>null</code> */ private JavaEditor getJavaEditor() { IEditorPart part = JavaPlugin.getActivePage().getActiveEditor(); if (part instanceof JavaEditor) return (JavaEditor) part; else return null; }