List of usage examples for org.eclipse.jdt.core IJavaElement getAncestor
IJavaElement getAncestor(int ancestorType);
From source file:org.eclipse.fx.ide.jdt.ui.internal.FXBeanJavaCompletionProposalComputer.java
License:Open Source License
@Override public List<ICompletionProposal> computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) {/* w ww . j a v a 2 s.c o m*/ if (context instanceof JavaContentAssistInvocationContext && Boolean.FALSE == true) { JavaContentAssistInvocationContext javaContext = (JavaContentAssistInvocationContext) context; CompletionContext completionContext = javaContext.getCoreContext(); IJavaElement enclosingElement = null; if (completionContext.isExtended()) { enclosingElement = completionContext.getEnclosingElement(); } else { try { enclosingElement = javaContext.getCompilationUnit() .getElementAt(context.getInvocationOffset() + 1); } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } } List<ICompletionProposal> l = new ArrayList<ICompletionProposal>(); if (enclosingElement != null) { IType type = (IType) enclosingElement.getAncestor(IJavaElement.TYPE); if (type == null) { return l; } try { IField[] fields = type.getFields(); IMethod[] methods = type.getMethods(); int offset = context.getInvocationOffset() - 3; if (offset > 0) { String prefix = context.getDocument().get(offset, 3); IType propType = type.getJavaProject().findType("javafx.beans.property.Property"); IType writableType = type.getJavaProject().findType("javafx.beans.value.WritableValue"); // Primitives IType booleanType = type.getJavaProject() .findType("javafx.beans.property.ReadOnlyBooleanProperty"); IType doubleType = type.getJavaProject() .findType("javafx.beans.property.ReadOnlyDoubleProperty"); IType floatType = type.getJavaProject() .findType("javafx.beans.property.ReadOnlyFloatProperty"); IType intType = type.getJavaProject() .findType("javafx.beans.property.ReadOnlyIntegerProperty"); IType longType = type.getJavaProject() .findType("javafx.beans.property.ReadOnlyLongProperty"); IType stringType = type.getJavaProject() .findType("javafx.beans.property.ReadOnlyStringProperty"); for (int i = 0; i < fields.length; i++) { IField curr = fields[i]; if (!Flags.isEnum(curr.getFlags())) { IType fieldType = toType(type, curr.getTypeSignature()); if (fieldType != null) { if (assignable(fieldType, propType)) { if ("set".equals(prefix)) { if (assignable(fieldType, writableType)) { String setterName = NamingConventions.suggestSetterName( type.getJavaProject(), curr.getElementName(), curr.getFlags(), false, null); if (!hasMethod(methods, setterName)) { StyledString s = new StyledString(setterName + "(" //$NON-NLS-1$ + toValue(fieldType, booleanType, doubleType, floatType, intType, longType, stringType) + ")" + " : void"); s.append(" - Setter for '" + curr.getElementName() + "'", //$NON-NLS-1$//$NON-NLS-2$ StyledString.QUALIFIER_STYLER); l.add(new CompletionProposalImpl(setterName, s, setterName + "(" + toValue(fieldType, booleanType, doubleType, floatType, intType, longType, stringType) + " " + curr.getElementName() + ")", curr, Type.SETTER, offset)); } } } else if (Character.isWhitespace(prefix.charAt(0)) && prefix.endsWith("is")) { if (assignable(fieldType, booleanType)) { String getterName = NamingConventions.suggestGetterName( type.getJavaProject(), curr.getElementName(), curr.getFlags(), false, null); getterName = "is" + getterName.substring(3); if (!hasMethod(methods, getterName)) { StyledString s = new StyledString(getterName + "() : boolean"); s.append(" - Getter for '" + curr.getElementName() + "'", StyledString.QUALIFIER_STYLER); l.add(new CompletionProposalImpl(getterName, s, getterName + "()", curr, Type.GETTER, offset)); } } } else if ("get".equals(prefix)) { if (!assignable(fieldType, booleanType)) { String getterName = NamingConventions.suggestGetterName( type.getJavaProject(), curr.getElementName(), curr.getFlags(), false, null); if (!hasMethod(methods, getterName)) { StyledString s = new StyledString(getterName + "() : " + toValue(fieldType, booleanType, doubleType, floatType, intType, longType, stringType)); s.append(" - Getter for '" + curr.getElementName() + "'", StyledString.QUALIFIER_STYLER); l.add(new CompletionProposalImpl(getterName, s, toValue(fieldType, booleanType, doubleType, floatType, intType, longType, stringType) + " " + getterName + "()", curr, Type.GETTER, offset)); } } } else if (Character.isWhitespace(prefix.charAt(2))) { String propertyName = curr.getElementName() + "Property() : " + fieldType.getElementName(); if (!hasMethod(methods, propertyName)) { StyledString s = new StyledString(propertyName); l.add(new CompletionProposalImpl( propertyName, s, fieldType.getElementName() + " " + curr.getElementName() + "Property()", curr, Type.ACCESSOR, offset)); } } } } } } } } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BadLocationException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return l; } return Collections.emptyList(); }
From source file:org.eclipse.fx.ide.jdt.ui.internal.handler.AddFXBeanGetterSetterHandler.java
License:Open Source License
@Override public Object execute(ExecutionEvent event) throws ExecutionException { Shell s = HandlerUtil.getActiveShell(event); ISelection selection = HandlerUtil.getCurrentSelection(event); IType type = null;//from w ww . j a v a 2s.c om if (selection instanceof ITextSelection) { JavaEditor editor = (JavaEditor) HandlerUtil.getActiveEditor(event); try { IJavaElement[] items = SelectionConverter.codeResolveForked((editor), true); if (items.length > 0) { type = (IType) items[0].getAncestor(IJavaElement.TYPE); } else { IJavaElement element = SelectionConverter.getElementAtOffset(editor); if (element != null) { type = (IType) element.getAncestor(IJavaElement.TYPE); } } } catch (InvocationTargetException | InterruptedException | JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else if (selection instanceof IStructuredSelection) { IStructuredSelection selected = (IStructuredSelection) selection; Object firstelement = selected.getFirstElement(); try { if (firstelement instanceof IType) { type = (IType) firstelement; } else if (firstelement instanceof ICompilationUnit) { type = ((ICompilationUnit) firstelement).findPrimaryType(); } else if (firstelement instanceof IField) { type = ((IField) firstelement).getDeclaringType(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (type != null) { GetterSetterDialog dialog = new GetterSetterDialog(s, type); dialog.open(); } else { MessageDialog.openInformation(s, ActionMessages.AddGetterSetterAction_error_title, ActionMessages.AddGetterSetterAction_not_applicable); } return null; }
From source file:org.eclipse.incquery.tooling.ui.wizards.NewEiqFileWizardContainerConfigurationPage.java
License:Open Source License
/** * Initialization based on the current selection. * //from w w w .ja v a2s.c om * @param selection * the current selection in the workspace */ public void init(IStructuredSelection selection) { IJavaElement jElement = getInitialJavaElement(selection); initContainerPage(jElement); if (jElement != null) { IPackageFragment pack = (IPackageFragment) jElement.getAncestor(IJavaElement.PACKAGE_FRAGMENT); setPackageFragment(pack, true); } packageChanged(); }
From source file:org.eclipse.jdt.core.dom.CompilationUnitResolver.java
License:Open Source License
public static IBinding[] resolve(final IJavaElement[] elements, int apiLevel, Map compilerOptions, IJavaProject javaProject, WorkingCopyOwner owner, int flags, IProgressMonitor monitor) { final int length = elements.length; final HashMap sourceElementPositions = new HashMap(); // a map from ICompilationUnit to int[] (positions in elements) int cuNumber = 0; final HashtableOfObjectToInt binaryElementPositions = new HashtableOfObjectToInt(); // a map from String (binding key) to int (position in elements) for (int i = 0; i < length; i++) { IJavaElement element = elements[i]; if (!(element instanceof SourceRefElement)) throw new IllegalStateException(element + " is not part of a compilation unit or class file"); //$NON-NLS-1$ Object cu = element.getAncestor(IJavaElement.COMPILATION_UNIT); if (cu != null) { // source member IntArrayList intList = (IntArrayList) sourceElementPositions.get(cu); if (intList == null) { sourceElementPositions.put(cu, intList = new IntArrayList()); cuNumber++;/*from w ww . j a v a2 s . c o m*/ } intList.add(i); } else { // binary member try { String key = ((BinaryMember) element).getKey(true/*open to get resolved info*/); binaryElementPositions.put(key, i); } catch (JavaModelException e) { throw new IllegalArgumentException(element + " does not exist"); //$NON-NLS-1$ } } } ICompilationUnit[] cus = new ICompilationUnit[cuNumber]; sourceElementPositions.keySet().toArray(cus); int bindingKeyNumber = binaryElementPositions.size(); String[] bindingKeys = new String[bindingKeyNumber]; binaryElementPositions.keysToArray(bindingKeys); class Requestor extends ASTRequestor { IBinding[] bindings = new IBinding[length]; public void acceptAST(ICompilationUnit source, CompilationUnit ast) { // TODO (jerome) optimize to visit the AST only once IntArrayList intList = (IntArrayList) sourceElementPositions.get(source); for (int i = 0; i < intList.length; i++) { final int index = intList.list[i]; SourceRefElement element = (SourceRefElement) elements[index]; DOMFinder finder = new DOMFinder(ast, element, true/*resolve binding*/); try { finder.search(); } catch (JavaModelException e) { throw new IllegalArgumentException(element + " does not exist"); //$NON-NLS-1$ } this.bindings[index] = finder.foundBinding; } } public void acceptBinding(String bindingKey, IBinding binding) { int index = binaryElementPositions.get(bindingKey); this.bindings[index] = binding; } } Requestor requestor = new Requestor(); resolve(cus, bindingKeys, requestor, apiLevel, compilerOptions, javaProject, owner, flags, monitor); return requestor.bindings; }
From source file:org.eclipse.jdt.internal.core.JavaProject.java
License:Open Source License
public boolean isOnClasspath(IJavaElement element) { IClasspathEntry[] rawClasspath;/* ww w . java 2 s.co m*/ try { rawClasspath = getRawClasspath(); } catch (JavaModelException e) { return false; // not a Java project } int elementType = element.getElementType(); boolean isPackageFragmentRoot = false; boolean isFolderPath = false; boolean isSource = false; switch (elementType) { case IJavaElement.JAVA_MODEL: return false; case IJavaElement.JAVA_PROJECT: break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: isPackageFragmentRoot = true; break; case IJavaElement.PACKAGE_FRAGMENT: isFolderPath = !((IPackageFragmentRoot) element.getParent()).isArchive(); break; case IJavaElement.COMPILATION_UNIT: isSource = true; break; default: isSource = element.getAncestor(IJavaElement.COMPILATION_UNIT) != null; break; } IPath elementPath = element.getPath(); // first look at unresolved entries int length = rawClasspath.length; for (int i = 0; i < length; i++) { IClasspathEntry entry = rawClasspath[i]; switch (entry.getEntryKind()) { case IClasspathEntry.CPE_LIBRARY: case IClasspathEntry.CPE_PROJECT: case IClasspathEntry.CPE_SOURCE: if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, entry)) return true; break; } } // no need to go further for compilation units and elements inside a compilation unit // it can only be in a source folder, thus on the raw classpath if (isSource) return false; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=304081 // All the resolved classpath entries need to be considered, including the referenced classpath entries IClasspathEntry[] resolvedClasspath = null; try { resolvedClasspath = getResolvedClasspath(); } catch (JavaModelException e) { return false; // Perhaps, not a Java project } for (int index = 0; index < resolvedClasspath.length; index++) { if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, resolvedClasspath[index])) return true; } return false; }
From source file:org.eclipse.jdt.internal.core.search.matching.MatchLocator.java
License:Open Source License
private boolean filterEnum(SearchMatch match) { // filter org.apache.commons.lang.enum package for projects above 1.5 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=317264 IJavaElement element = (IJavaElement) match.getElement(); PackageFragment pkg = (PackageFragment) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT); if (pkg != null) { // enum was found in org.apache.commons.lang.enum at index 5 if (pkg.names.length == 5 && pkg.names[4].equals("enum")) { //$NON-NLS-1$ if (this.options == null) { IJavaProject proj = (IJavaProject) pkg.getAncestor(IJavaElement.JAVA_PROJECT); String complianceStr = proj.getOption(CompilerOptions.OPTION_Source, true); if (CompilerOptions.versionToJdkLevel(complianceStr) >= ClassFileConstants.JDK1_5) return true; } else if (this.options.sourceLevel >= ClassFileConstants.JDK1_5) { return true; }// ww w . j av a 2s. c o m } } return false; }
From source file:org.eclipse.jst.j2ee.internal.common.operations.JavaModelUtil.java
License:Open Source License
public static boolean isExceptionToBeLogged(CoreException exception) { if (!(exception instanceof JavaModelException)) return true; JavaModelException je = (JavaModelException) exception; if (!je.isDoesNotExist()) return true; IJavaElement[] elements = je.getJavaModelStatus().getElements(); for (int i = 0; i < elements.length; i++) { IJavaElement element = elements[i]; // if the element is already a compilation unit don't log // does not exist exceptions. See bug // https://bugs.eclipse.org/bugs/show_bug.cgi?id=75894 // for more details if (element.getElementType() == IJavaElement.COMPILATION_UNIT) continue; ICompilationUnit unit = (ICompilationUnit) element.getAncestor(IJavaElement.COMPILATION_UNIT); if (unit == null) return true; if (!unit.isWorkingCopy()) return true; }/*w w w .java2 s . c om*/ return false; }
From source file:org.eclipse.jst.j2ee.internal.common.operations.JavaModelUtil.java
License:Open Source License
private static void addAllCus(HashSet/*<ICompilationUnit>*/ collector, IJavaElement javaElement) throws JavaModelException { switch (javaElement.getElementType()) { case IJavaElement.JAVA_PROJECT: IJavaProject javaProject = (IJavaProject) javaElement; IPackageFragmentRoot[] packageFragmentRoots = javaProject.getPackageFragmentRoots(); for (int i = 0; i < packageFragmentRoots.length; i++) addAllCus(collector, packageFragmentRoots[i]); return;/* ww w.j a v a 2 s . c o m*/ case IJavaElement.PACKAGE_FRAGMENT_ROOT: IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) javaElement; if (packageFragmentRoot.getKind() != IPackageFragmentRoot.K_SOURCE) return; IJavaElement[] packageFragments = packageFragmentRoot.getChildren(); for (int j = 0; j < packageFragments.length; j++) addAllCus(collector, packageFragments[j]); return; case IJavaElement.PACKAGE_FRAGMENT: IPackageFragment packageFragment = (IPackageFragment) javaElement; collector.addAll(Arrays.asList(packageFragment.getCompilationUnits())); return; case IJavaElement.COMPILATION_UNIT: collector.add(javaElement); return; default: IJavaElement cu = javaElement.getAncestor(IJavaElement.COMPILATION_UNIT); if (cu != null) collector.add(cu); } }
From source file:org.eclipse.jst.jsf.common.ui.internal.utils.JavaModelUtil.java
License:Open Source License
/** * http://bugs.eclipse.org/bugs/show_bug.cgi?id=19253 * /*from w w w .j av a 2 s . co m*/ * Reconciling happens in a separate thread. This can cause a situation * where the Java element gets disposed after an exists test has been done. * So we should not log not present exceptions when they happen in working * copies. * @param exception * @return true if filter not present */ public static boolean filterNotPresentException(CoreException exception) { if (!(exception instanceof JavaModelException)) { return true; } JavaModelException je = (JavaModelException) exception; if (!je.isDoesNotExist()) { return true; } IJavaElement[] elements = je.getJavaModelStatus().getElements(); for (int i = 0; i < elements.length; i++) { IJavaElement element = elements[i]; ICompilationUnit unit = (ICompilationUnit) element.getAncestor(IJavaElement.COMPILATION_UNIT); if (unit == null) { return true; } if (!unit.isWorkingCopy()) { return true; } } return false; }
From source file:org.eclipse.jst.jsf.ui.internal.jspeditor.BeanSuffixHyperlink.java
License:Open Source License
public String getHyperlinkText() { //Bug 254452 - JSF hyperlink provider shows "unknown hyperlink" when in list final IJavaElement element = determineJavaElement(); if (element != null) { final ICompilationUnit compilationUnit = (ICompilationUnit) element .getAncestor(IJavaElement.COMPILATION_UNIT); if (compilationUnit != null) { return NLS.bind(Messages.Hyperlink_Open_JavaMethod, compilationUnit.getElementName(), element.getElementName()); }// w ww. j av a 2s . c om return Messages.Hyperlink_Open_JavaFile; } return Messages.Hyperlink_Open_JavaElement; }