Example usage for org.eclipse.jdt.core IPackageFragment exists

List of usage examples for org.eclipse.jdt.core IPackageFragment exists

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IPackageFragment exists.

Prototype

boolean exists();

Source Link

Document

Returns whether this Java element exists in the model.

Usage

From source file:at.bestsolution.javafx.ide.jdt.internal.JavaClassResourceService.java

License:Open Source License

IResource handleElementCreation(IContainer container, String packageName, String className) {
    // FIXME This is temporary
    if (!container.getProject().isOpen()) {
        try {/*w w w  . j  a  v  a2 s  . co m*/
            container.getProject().open(new NullProgressMonitor());
        } catch (CoreException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    IProject pr = container.getProject();

    IJavaElement jElement = getInitialJavaElement(container);
    IPackageFragmentRoot jRoot = getFragmentRoot(jElement);

    try {
        IJavaProject jProject = JavaCore.create(pr);
        jProject.open(new NullProgressMonitor());
        jRoot.open(new NullProgressMonitor());
        IPackageFragment fragment = jRoot.getPackageFragment(packageName);
        if (!fragment.exists()) {
            ((IFolder) fragment.getResource()).create(true, true, null);
        }
        ICompilationUnit u = fragment.getCompilationUnit(className + ".java");
        IFile f = (IFile) u.getResource();
        ByteArrayInputStream in = new ByteArrayInputStream(
                new String("public class " + className + " {\n}").getBytes());
        f.create(in, IFile.FORCE | IFile.KEEP_HISTORY, new NullProgressMonitor());
        in.close();
        // pr.build(IncrementalProjectBuilder.FULL_BUILD, new
        // NullProgressMonitor());
        return f;
    } catch (JavaModelException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (CoreException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    System.err.println(jRoot);

    return null;
}

From source file:byke.tests.workspaceutils.JavaProject.java

License:Open Source License

public ICompilationUnit createCompilationUnit(final IPackageFragmentRoot sourceFolder, String packageName,
        String cuName, String contents) throws JavaModelException, CoreException {

    IPackageFragment packageFragment = sourceFolder.getPackageFragment(packageName);
    if (!packageFragment.exists()) {
        packageFragment = sourceFolder.createPackageFragment(packageName, false, null);
    }//w w  w.  ja  va2  s .co  m
    return createCompilationUnit(packageFragment, cuName, contents);
}

From source file:ccw.ClojureCore.java

License:Open Source License

/**
 * Tries to open a clojure file in an editor
 * @return an editor input if the file has been found, or null
 *//*w  w  w.j  av  a2s .  c o  m*/
private static IEditorInput findEditorInput(IPackageFragmentRoot packageFragmentRoot,
        IPackageFragment packageFragment, String searchedPackage, String searchedFileName)
        throws JavaModelException {
    if (packageFragment.exists() && packageFragment.getElementName().equals(searchedPackage)) {
        for (Object njr : packageFragment.isDefaultPackage() ? packageFragmentRoot.getNonJavaResources()
                : packageFragment.getNonJavaResources()) {
            if (njr instanceof IJarEntryResource) {
                IJarEntryResource jer = (IJarEntryResource) njr;
                if (jer.getName().equals(searchedFileName)) {
                    return new JarEntryEditorInput(jer);
                }
            } else if (njr instanceof IFile) {
                IFile file = (IFile) njr;
                if (file.getName().equals(searchedFileName)) {
                    return new FileEditorInput(file);
                }
            } else if (njr instanceof File) {
                File f = (File) njr;
                if (f.getName().equals(searchedFileName)) {
                    IFileStore fileStore = EFS.getLocalFileSystem().getStore(f.toURI());
                    return new FileStoreEditorInput(fileStore);
                }
            }
        }
    }
    return null;
}

From source file:com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.java

License:Open Source License

private void createNewClass(String fqcn) {

    int pos = fqcn.lastIndexOf('.');
    String packageName = pos < 0 ? "" : fqcn.substring(0, pos); //$NON-NLS-1$
    String className = pos <= 0 || pos >= fqcn.length() ? "" : fqcn.substring(pos + 1); //$NON-NLS-1$

    // create the wizard page for the class creation, and configure it
    NewClassWizardPage page = new NewClassWizardPage();

    // set the parent class
    page.setSuperClass(SdkConstants.CLASS_VIEW, true /* canBeModified */);

    // get the source folders as java elements.
    IPackageFragmentRoot[] roots = getPackageFragmentRoots(mEditorDelegate.getEditor().getProject(),
            false /*includeContainers*/, true /*skipGenFolder*/);

    IPackageFragmentRoot currentRoot = null;
    IPackageFragment currentFragment = null;
    int packageMatchCount = -1;

    for (IPackageFragmentRoot root : roots) {
        // Get the java element for the package.
        // This method is said to always return a IPackageFragment even if the
        // underlying folder doesn't exist...
        IPackageFragment fragment = root.getPackageFragment(packageName);
        if (fragment != null && fragment.exists()) {
            // we have a perfect match! we use it.
            currentRoot = root;//from w w  w  .j  a v  a  2 s  . c  o m
            currentFragment = fragment;
            packageMatchCount = -1;
            break;
        } else {
            // we don't have a match. we look for the fragment with the best match
            // (ie the closest parent package we can find)
            try {
                IJavaElement[] children;
                children = root.getChildren();
                for (IJavaElement child : children) {
                    if (child instanceof IPackageFragment) {
                        fragment = (IPackageFragment) child;
                        if (packageName.startsWith(fragment.getElementName())) {
                            // its a match. get the number of segments
                            String[] segments = fragment.getElementName().split("\\."); //$NON-NLS-1$
                            if (segments.length > packageMatchCount) {
                                packageMatchCount = segments.length;
                                currentFragment = fragment;
                                currentRoot = root;
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                // Couldn't get the children: we just ignore this package root.
            }
        }
    }

    ArrayList<IPackageFragment> createdFragments = null;

    if (currentRoot != null) {
        // if we have a perfect match, we set it and we're done.
        if (packageMatchCount == -1) {
            page.setPackageFragmentRoot(currentRoot, true /* canBeModified*/);
            page.setPackageFragment(currentFragment, true /* canBeModified */);
        } else {
            // we have a partial match.
            // create the package. We have to start with the first segment so that we
            // know what to delete in case of a cancel.
            try {
                createdFragments = new ArrayList<IPackageFragment>();

                int totalCount = packageName.split("\\.").length; //$NON-NLS-1$
                int count = 0;
                int index = -1;
                // skip the matching packages
                while (count < packageMatchCount) {
                    index = packageName.indexOf('.', index + 1);
                    count++;
                }

                // create the rest of the segments, except for the last one as indexOf will
                // return -1;
                while (count < totalCount - 1) {
                    index = packageName.indexOf('.', index + 1);
                    count++;
                    createdFragments.add(currentRoot.createPackageFragment(packageName.substring(0, index),
                            true /* force*/, new NullProgressMonitor()));
                }

                // create the last package
                createdFragments.add(currentRoot.createPackageFragment(packageName, true /* force*/,
                        new NullProgressMonitor()));

                // set the root and fragment in the Wizard page
                page.setPackageFragmentRoot(currentRoot, true /* canBeModified*/);
                page.setPackageFragment(createdFragments.get(createdFragments.size() - 1),
                        true /* canBeModified */);
            } catch (JavaModelException e) {
                // If we can't create the packages, there's a problem.
                // We revert to the default package
                for (IPackageFragmentRoot root : roots) {
                    // Get the java element for the package.
                    // This method is said to always return a IPackageFragment even if the
                    // underlying folder doesn't exist...
                    IPackageFragment fragment = root.getPackageFragment(packageName);
                    if (fragment != null && fragment.exists()) {
                        page.setPackageFragmentRoot(root, true /* canBeModified*/);
                        page.setPackageFragment(fragment, true /* canBeModified */);
                        break;
                    }
                }
            }
        }
    } else if (roots.length > 0) {
        // if we haven't found a valid fragment, we set the root to the first source folder.
        page.setPackageFragmentRoot(roots[0], true /* canBeModified*/);
    }

    // if we have a starting class name we use it
    if (className != null) {
        page.setTypeName(className, true /* canBeModified*/);
    }

    // create the action that will open it the wizard.
    OpenNewClassWizardAction action = new OpenNewClassWizardAction();
    action.setConfiguredWizardPage(page);
    action.run();
    IJavaElement element = action.getCreatedElement();

    if (element == null) {
        // lets delete the packages we created just for this.
        // we need to start with the leaf and go up
        if (createdFragments != null) {
            try {
                for (int i = createdFragments.size() - 1; i >= 0; i--) {
                    createdFragments.get(i).delete(true /* force*/, new NullProgressMonitor());
                }
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        }
    }
}

From source file:com.android.ide.eclipse.adt.internal.editors.manifest.model.UiClassAttributeNode.java

License:Open Source License

private void createNewClass(String packageName, String className) {
    // create the wizard page for the class creation, and configure it
    NewClassWizardPage page = new NewClassWizardPage();

    // set the parent class
    page.setSuperClass(mReferenceClass, true /* canBeModified */);

    // get the source folders as java elements.
    IPackageFragmentRoot[] roots = getPackageFragmentRoots(getProject(), true /*include_containers*/);

    IPackageFragmentRoot currentRoot = null;
    IPackageFragment currentFragment = null;
    int packageMatchCount = -1;

    for (IPackageFragmentRoot root : roots) {
        // Get the java element for the package.
        // This method is said to always return a IPackageFragment even if the
        // underlying folder doesn't exist...
        IPackageFragment fragment = root.getPackageFragment(packageName);
        if (fragment != null && fragment.exists()) {
            // we have a perfect match! we use it.
            currentRoot = root;//w w  w .  ja  v a2 s .  c o m
            currentFragment = fragment;
            packageMatchCount = -1;
            break;
        } else {
            // we don't have a match. we look for the fragment with the best match
            // (ie the closest parent package we can find)
            try {
                IJavaElement[] children;
                children = root.getChildren();
                for (IJavaElement child : children) {
                    if (child instanceof IPackageFragment) {
                        fragment = (IPackageFragment) child;
                        if (packageName.startsWith(fragment.getElementName())) {
                            // its a match. get the number of segments
                            String[] segments = fragment.getElementName().split("\\."); //$NON-NLS-1$
                            if (segments.length > packageMatchCount) {
                                packageMatchCount = segments.length;
                                currentFragment = fragment;
                                currentRoot = root;
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                // Couldn't get the children: we just ignore this package root.
            }
        }
    }

    ArrayList<IPackageFragment> createdFragments = null;

    if (currentRoot != null) {
        // if we have a perfect match, we set it and we're done.
        if (packageMatchCount == -1) {
            page.setPackageFragmentRoot(currentRoot, true /* canBeModified*/);
            page.setPackageFragment(currentFragment, true /* canBeModified */);
        } else {
            // we have a partial match.
            // create the package. We have to start with the first segment so that we
            // know what to delete in case of a cancel.
            try {
                createdFragments = new ArrayList<IPackageFragment>();

                int totalCount = packageName.split("\\.").length; //$NON-NLS-1$
                int count = 0;
                int index = -1;
                // skip the matching packages
                while (count < packageMatchCount) {
                    index = packageName.indexOf('.', index + 1);
                    count++;
                }

                // create the rest of the segments, except for the last one as indexOf will
                // return -1;
                while (count < totalCount - 1) {
                    index = packageName.indexOf('.', index + 1);
                    count++;
                    createdFragments.add(currentRoot.createPackageFragment(packageName.substring(0, index),
                            true /* force*/, new NullProgressMonitor()));
                }

                // create the last package
                createdFragments.add(currentRoot.createPackageFragment(packageName, true /* force*/,
                        new NullProgressMonitor()));

                // set the root and fragment in the Wizard page
                page.setPackageFragmentRoot(currentRoot, true /* canBeModified*/);
                page.setPackageFragment(createdFragments.get(createdFragments.size() - 1),
                        true /* canBeModified */);
            } catch (JavaModelException e) {
                // if we can't create the packages, there's a problem. we revert to the default
                // package
                for (IPackageFragmentRoot root : roots) {
                    // Get the java element for the package.
                    // This method is said to always return a IPackageFragment even if the
                    // underlying folder doesn't exist...
                    IPackageFragment fragment = root.getPackageFragment(packageName);
                    if (fragment != null && fragment.exists()) {
                        page.setPackageFragmentRoot(root, true /* canBeModified*/);
                        page.setPackageFragment(fragment, true /* canBeModified */);
                        break;
                    }
                }
            }
        }
    } else if (roots.length > 0) {
        // if we haven't found a valid fragment, we set the root to the first source folder.
        page.setPackageFragmentRoot(roots[0], true /* canBeModified*/);
    }

    // if we have a starting class name we use it
    if (className != null) {
        page.setTypeName(className, true /* canBeModified*/);
    }

    // create the action that will open it the wizard.
    OpenNewClassWizardAction action = new OpenNewClassWizardAction();
    action.setConfiguredWizardPage(page);
    action.run();
    IJavaElement element = action.getCreatedElement();

    if (element != null) {
        if (element.getElementType() == IJavaElement.TYPE) {

            IType type = (IType) element;

            if (mPostCreationAction != null) {
                mPostCreationAction.processNewType(type);
            }

            handleNewType(type);
        }
    } else {
        // lets delete the packages we created just for this.
        // we need to start with the leaf and go up
        if (createdFragments != null) {
            try {
                for (int i = createdFragments.size() - 1; i >= 0; i--) {
                    createdFragments.get(i).delete(true /* force*/, new NullProgressMonitor());
                }
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        }
    }
}

From source file:com.android.ide.eclipse.adt.internal.editors.manifest.model.UiPackageAttributeNode.java

License:Open Source License

/**
 * Handles response to the Label hyper link being activated.
 *//*from  w w  w .j  a v  a  2 s .co  m*/
private void doLabelClick() {
    // get the current package name
    String package_name = getTextWidget().getText().trim();

    if (package_name.length() == 0) {
        createNewPackage();
    } else {
        // Try to select the package in the Package Explorer for the current
        // project and the current editor's site.

        IProject project = getProject();
        if (project == null) {
            AdtPlugin.log(IStatus.ERROR, "Failed to get project for UiPackageAttribute"); //$NON-NLS-1$
            return;
        }

        IWorkbenchPartSite site = getUiParent().getEditor().getSite();
        if (site == null) {
            AdtPlugin.log(IStatus.ERROR, "Failed to get editor site for UiPackageAttribute"); //$NON-NLS-1$
            return;
        }

        for (IPackageFragmentRoot root : getPackageFragmentRoots(project)) {
            IPackageFragment fragment = root.getPackageFragment(package_name);
            if (fragment != null && fragment.exists()) {
                ShowInPackageViewAction action = new ShowInPackageViewAction(site);
                action.run(fragment);
                // This action's run() doesn't provide the status (although internally it could)
                // so we just assume it worked.
                return;
            }
        }
    }
}

From source file:com.android.ide.eclipse.adt.internal.refactoring.core.AndroidPackageRenameParticipant.java

License:Open Source License

/**
 * Returns Android gen package text change
 *
 * @param pm the progress monitor// w  ww .  ja  va  2s  . c  o m
 *
 * @return Android gen package text change
 * @throws CoreException
 * @throws OperationCanceledException
 */
public Change getGenPackageChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
    if (mIsPackage) {
        IPackageFragment genJavaPackageFragment = getGenPackageFragment();
        if (genJavaPackageFragment != null && genJavaPackageFragment.exists()) {
            return new RenamePackageChange(genJavaPackageFragment, mNewName, true);
        }
    }
    return null;
}

From source file:com.android.ide.eclipse.adt.internal.refactoring.core.FixImportsJob.java

License:Open Source License

@Override
public IStatus runInWorkspace(final IProgressMonitor monitor) throws CoreException {
    if (mJavaPackage == null || mAndroidManifest == null || !mAndroidManifest.exists()) {
        return Status.CANCEL_STATUS;
    }/*from ww  w  .  jav  a 2s  .  c  o  m*/
    IProject project = mAndroidManifest.getProject();
    IJavaProject javaProject = JavaCore.create(project);
    if (javaProject == null || !javaProject.isOpen()) {
        return Status.CANCEL_STATUS;
    }

    project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor);

    IMarker[] markers = project.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
    for (int i = 0; i < markers.length; i++) {
        IMarker marker = markers[i];
        IResource resource = marker.getResource();
        try {
            IJavaElement element = JavaCore.create(resource);
            if (element != null && (element instanceof ICompilationUnit)) {
                final ICompilationUnit cu = (ICompilationUnit) element;
                IPackageFragment packageFragment = (IPackageFragment) cu
                        .getAncestor(IJavaElement.PACKAGE_FRAGMENT);
                if (packageFragment != null && packageFragment.exists()) {
                    String packageName = packageFragment.getElementName();
                    if (packageName != null && packageName.startsWith(mJavaPackage)) {
                        CompilationUnit astRoot = SharedASTProvider.getAST(cu,
                                SharedASTProvider.WAIT_ACTIVE_ONLY, null);
                        CodeGenerationSettings settings = JavaPreferencesSettings
                                .getCodeGenerationSettings(cu.getJavaProject());
                        final boolean hasAmbiguity[] = new boolean[] { false };
                        IChooseImportQuery query = new IChooseImportQuery() {
                            public TypeNameMatch[] chooseImports(TypeNameMatch[][] openChoices,
                                    ISourceRange[] ranges) {
                                hasAmbiguity[0] = true;
                                return new TypeNameMatch[0];
                            }
                        };
                        final OrganizeImportsOperation op = new OrganizeImportsOperation(cu, astRoot,
                                settings.importIgnoreLowercase, !cu.isWorkingCopy(), true, query);
                        Display.getDefault().asyncExec(new Runnable() {

                            public void run() {
                                try {
                                    IProgressService progressService = PlatformUI.getWorkbench()
                                            .getProgressService();
                                    progressService.run(true, true,
                                            new WorkbenchRunnableAdapter(op, op.getScheduleRule()));
                                    IEditorPart openEditor = EditorUtility.isOpenInEditor(cu);
                                    if (openEditor != null) {
                                        openEditor.doSave(monitor);
                                    }
                                } catch (Throwable e) {
                                    RefactoringUtil.log(e);
                                }
                            }
                        });

                    }
                }
            }
        } catch (Throwable e) {
            RefactoringUtil.log(e);
        }
    }
    return Status.OK_STATUS;
}

From source file:com.android.ide.eclipse.adt.internal.refactorings.core.AndroidPackageRenameParticipant.java

License:Open Source License

/**
 * Returns Android gen package text change
 *
 * @param pm the progress monitor/*from   w w w  .  j  a v  a 2  s .c  o  m*/
 *
 * @return Android gen package text change
 * @throws CoreException if an error happens
 * @throws OperationCanceledException if the operation is canceled
 */
public Change getGenPackageChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
    if (mRefactoringAppPackage) {
        IPackageFragment genJavaPackageFragment = getGenPackageFragment();
        if (genJavaPackageFragment != null && genJavaPackageFragment.exists()) {
            return new RenamePackageChange(genJavaPackageFragment, mNewPackage, true);
        }
    }
    return null;
}

From source file:com.android.ide.eclipse.adt.internal.refactorings.core.FixImportsJob.java

License:Open Source License

@Override
public IStatus runInWorkspace(final IProgressMonitor monitor) throws CoreException {
    if (mJavaPackage == null || mAndroidManifest == null || !mAndroidManifest.exists()) {
        return Status.CANCEL_STATUS;
    }//  w ww  .  j  ava  2s  .c  o m
    IProject project = mAndroidManifest.getProject();
    IJavaProject javaProject = JavaCore.create(project);
    if (javaProject == null || !javaProject.isOpen()) {
        return Status.CANCEL_STATUS;
    }

    project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor);

    IMarker[] markers = project.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
    for (int i = 0; i < markers.length; i++) {
        IMarker marker = markers[i];
        IResource resource = marker.getResource();
        try {
            IJavaElement element = JavaCore.create(resource);
            if (element != null && (element instanceof ICompilationUnit)) {
                final ICompilationUnit cu = (ICompilationUnit) element;
                IPackageFragment packageFragment = (IPackageFragment) cu
                        .getAncestor(IJavaElement.PACKAGE_FRAGMENT);
                if (packageFragment != null && packageFragment.exists()) {
                    String packageName = packageFragment.getElementName();
                    if (packageName != null && packageName.startsWith(mJavaPackage)) {
                        CompilationUnit astRoot = SharedASTProvider.getAST(cu,
                                SharedASTProvider.WAIT_ACTIVE_ONLY, null);
                        CodeGenerationSettings settings = JavaPreferencesSettings
                                .getCodeGenerationSettings(cu.getJavaProject());
                        final boolean hasAmbiguity[] = new boolean[] { false };
                        IChooseImportQuery query = new IChooseImportQuery() {
                            @Override
                            public TypeNameMatch[] chooseImports(TypeNameMatch[][] openChoices,
                                    ISourceRange[] ranges) {
                                hasAmbiguity[0] = true;
                                return new TypeNameMatch[0];
                            }
                        };
                        final OrganizeImportsOperation op = new OrganizeImportsOperation(cu, astRoot,
                                settings.importIgnoreLowercase, !cu.isWorkingCopy(), true, query);
                        Display.getDefault().asyncExec(new Runnable() {

                            @Override
                            public void run() {
                                try {
                                    IProgressService progressService = PlatformUI.getWorkbench()
                                            .getProgressService();
                                    progressService.run(true, true,
                                            new WorkbenchRunnableAdapter(op, op.getScheduleRule()));
                                    IEditorPart openEditor = EditorUtility.isOpenInEditor(cu);
                                    if (openEditor != null) {
                                        openEditor.doSave(monitor);
                                    }
                                } catch (Throwable e) {
                                    RefactoringUtil.log(e);
                                }
                            }
                        });

                    }
                }
            }
        } catch (Throwable e) {
            RefactoringUtil.log(e);
        }
    }
    return Status.OK_STATUS;
}