Example usage for org.eclipse.jdt.core IPackageFragmentRoot getPackageFragment

List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot getPackageFragment

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IPackageFragmentRoot getPackageFragment.

Prototype

IPackageFragment getPackageFragment(String packageName);

Source Link

Document

Returns the package fragment with the given package name.

Usage

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

License:Open Source License

/**
 * Returns the {@link IPackageFragment} for the package registered in the manifest
 *
 * @return the {@link IPackageFragment} for the package registered in the manifest
 *//*from w w w.  ja v a  2  s .co m*/
@Nullable
public IPackageFragment getPackageFragment() {
    sync();
    try {
        IJavaProject javaProject = BaseProjectHelper.getJavaProject(mProject);
        if (javaProject != null) {
            IPackageFragmentRoot root = ManifestInfo.getSourcePackageRoot(javaProject);
            if (root != null) {
                return root.getPackageFragment(mPackage);
            }
        }
    } catch (CoreException e) {
        AdtPlugin.log(e, null);
    }

    return null;
}

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;/*from  ww  w . ja v a  2  s  .  co  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.
 *//*  w  w  w . j a v a2  s .c  o 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.arcbees.gwtp.plugin.core.common.GWTPNewTypeWizardPage.java

License:Apache License

protected void ensurePackageExists(IProgressMonitor monitor) throws JavaModelException {
    IPackageFragmentRoot root = getPackageFragmentRoot();
    IPackageFragment pack = getPackageFragment();
    if (pack == null) {
        pack = root.getPackageFragment(""); //$NON-NLS-1$
    }// w ww . j  a va2s .c om

    if (!pack.exists()) {
        String packName = pack.getElementName();
        pack = root.createPackageFragment(packName, true, new SubProgressMonitor(monitor, 1));
    }
}

From source file:com.codenvy.ide.ext.java.server.JavaNavigation.java

License:Open Source License

public Object getHierarchicalPackageParent(IPackageFragment child) {
    String name = child.getElementName();
    IPackageFragmentRoot parent = (IPackageFragmentRoot) child.getParent();
    int index = name.lastIndexOf('.');
    if (index != -1) {
        String realParentName = name.substring(0, index);
        IPackageFragment element = parent.getPackageFragment(realParentName);
        if (element.exists()) {
            try {
                if (fFoldPackages && isEmpty(element)
                        && findSinglePackageChild(element, parent.getChildren()) != null) {
                    return getHierarchicalPackageParent(element);
                }/*www .  j  a  v  a  2s .co  m*/
            } catch (JavaModelException e) {
                // ignore
            }
            return element;
        } /*else { // bug 65240
          IResource resource= element.getResource();
          if (resource != null) {
              return resource;
          }
          }*/
    }
    //        if (parent.getResource() instanceof IProject) {
    //            return parent.getJavaProject();
    //        }
    return parent;
}

From source file:com.codenvy.ide.ext.java.server.JavaNavigation.java

License:Open Source License

public List<JarEntry> getChildren(JavaProject project, int rootId, String path) throws JavaModelException {
    IPackageFragmentRoot root = getPackageFragmentRoot(project, rootId);
    if (root == null) {
        return NO_ENTRIES;
    }/* w  w  w.j a  va 2s.com*/

    if (path.startsWith("/")) {
        // jar file and folders
        Object[] resources = root.getNonJavaResources();
        for (Object resource : resources) {
            if (resource instanceof JarEntryDirectory) {
                JarEntryDirectory directory = (JarEntryDirectory) resource;
                Object[] children = findJarDirectoryChildren(directory, path);
                if (children != null) {
                    return convertToJarEntry(children, root);
                }
            }
        }

    } else {
        // packages and class files
        IPackageFragment fragment = root.getPackageFragment(path);
        if (fragment == null) {
            return NO_ENTRIES;
        }
        return convertToJarEntry(getPackageContent(fragment), root);
    }
    return NO_ENTRIES;
}

From source file:com.ecfeed.ui.common.utils.EclipsePackageFragmentGetter.java

License:Open Source License

public static IPackageFragment getPackageFragment(String name, IFileInfoProvider fileInfoProvider)
        throws CoreException {

    IPackageFragmentRoot packageFragmentRoot = getPackageFragmentRoot(fileInfoProvider);
    IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(name);

    if (packageFragment.exists() == false) {
        packageFragment = packageFragmentRoot.createPackageFragment(name, false, null);
    }/*from  w w  w. ja v  a  2 s . c o  m*/
    return packageFragment;
}

From source file:com.google.gdt.eclipse.appengine.rpc.wizards.helpers.RpcServiceLayerCreator.java

License:Open Source License

private void generateSharedFiles(String packageName, IProgressMonitor monitor)
        throws CoreException, MalformedTreeException, BadLocationException {
    String sharedPackageName = packageName;
    if (sharedPackageName.contains("server")) { //$NON-NLS-N$
        sharedPackageName = sharedPackageName.replace("server", "shared"); //$NON-NLS-N$
    } else {/*from   w  w w  .java 2 s .  c  o m*/
        sharedPackageName += ".shared"; //$NON-NLS-N$
    }

    // get shared source folder
    IFolder gaeSharedFolder = gaeProject.getFolder(SHARED_FOLDER_NAME);
    if (!gaeSharedFolder.exists()) {
        gaeSharedFolder.create(true, true, new SubProgressMonitor(monitor, 2));
        CodegenUtils.setupSourceFolders(JavaCore.create(gaeProject), gaeSharedFolder, monitor);
    }

    if (androidProject != null) {
        IFolder androidLinkedFolder = androidProject.getFolder(SHARED_FOLDER_NAME);
        if (!androidLinkedFolder.exists()) {
            /* The variable workspaceLoc is required only for Eclipse 3.5.
             * For Eclipses after 3.5, the project specific path variable WORKSPACE_LOC
             * can be used instead.
             */
            String workspaceLoc = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString();
            // use variables for shared folder path
            IPath sharedFolderPath = new Path(workspaceLoc + "/" //$NON-NLS-N$
                    + gaeProject.getName() + "/" + SHARED_FOLDER_NAME);
            androidLinkedFolder.createLink(sharedFolderPath, IResource.ALLOW_MISSING_LOCAL,
                    new SubProgressMonitor(monitor, 1));
            CodegenUtils.setupSourceFolders(JavaCore.create(androidProject), androidLinkedFolder, monitor);
        }
    }

    IPackageFragmentRoot srcFolder = JavaCore.create(gaeProject).getPackageFragmentRoot(gaeSharedFolder);
    IPackageFragment pack = srcFolder.getPackageFragment(sharedPackageName);

    if (!pack.exists()) {
        pack = srcFolder.createPackageFragment(sharedPackageName, true, new SubProgressMonitor(monitor, 2));
    }

    // for all the entities, generate Proxy, Request
    for (IType anEntity : entityList) {
        current = anEntity;
        createCompilationUnit(pack, current.getElementName() + "Proxy", RpcType.PROXY, //$NON-NLS-N$
                new SubProgressMonitor(monitor, 1));
    }

    // generate Request
    String requestFileName = serviceName.replace("Service", "") + "Request"; //$NON-NLS-N$
    createCompilationUnit(pack, requestFileName, RpcType.REQUEST, //$NON-NLS-N$
            new SubProgressMonitor(monitor, 1));
    // generate RequestFactory
    // check if there is a request factory class in the project
    String rfactoryFileName = serviceName.replace("Service", "") + "RequestFactory"; //$NON-NLS-N$
    List<IType> reqFactoryList = RequestFactoryUtils.findTypes(JavaCore.create(gaeProject),
            RpcType.REQ_FACTORY);
    if (reqFactoryList.isEmpty()) {
        createCompilationUnit(pack, rfactoryFileName, RpcType.REQ_FACTORY, new SubProgressMonitor(monitor, 1)); //$NON-NLS-N$
    } else {
        addReqFactoryBody(reqFactoryList.get(0), new SubProgressMonitor(monitor, 1));
    }
}

From source file:com.google.gdt.eclipse.core.java.JavaModelSearch.java

License:Open Source License

/**
 * Returns a list of package fragments for the given package name.
 * /*w  ww  .  j  ava 2  s . c o m*/
 * @param javaProject the java project whose classpath will be searched
 * @param packageName the package name to find corresponding fragments for
 * @return a possibly empty list of package fragments
 * @throws JavaModelException
 */
public static List<IPackageFragment> getPackageFragments(IJavaProject javaProject, String packageName)
        throws JavaModelException {
    List<IPackageFragment> packageFragments = new ArrayList<IPackageFragment>();

    for (IPackageFragmentRoot packageFragmentRootroot : javaProject.getAllPackageFragmentRoots()) {
        IPackageFragment packageFragment = packageFragmentRootroot.getPackageFragment(packageName);
        if (packageFragment.exists()) {
            packageFragments.add(packageFragment);
        }
    }

    return packageFragments;
}

From source file:com.google.gdt.eclipse.designer.uibinder.editor.UiBinderPairResourceProvider.java

License:Open Source License

/**
 * @return the ui.xml {@link IFile} for given Java one.
 *///from ww w .  j  a  va2  s  .com
private IFile getUIFile(IFile javaFile) throws Exception {
    IProject project = javaFile.getProject();
    IJavaProject javaProject = JavaCore.create(project);
    // prepare form name
    String javaFormName = StringUtils.removeEnd(javaFile.getName(), ".java");
    // prepare package name
    String packageName;
    {
        IFolder folder = (IFolder) javaFile.getParent();
        IPackageFragment packageFragmentJava = (IPackageFragment) JavaCore.create(folder);
        packageName = packageFragmentJava.getElementName();
    }
    // try to find ui.xml file in package with same name
    for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
        IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(packageName);
        if (packageFragment.exists()) {
            for (Object object : packageFragment.getNonJavaResources()) {
                if (object instanceof IFile) {
                    IFile uiFile = (IFile) object;
                    String uiFileName = uiFile.getName();
                    if (StringUtils.endsWithIgnoreCase(uiFileName, ".ui.xml")) {
                        String uiFormName = StringUtils.removeEndIgnoreCase(uiFileName, ".ui.xml");
                        if (uiFormName.equals(javaFormName)) {
                            return uiFile;
                        }
                    }
                }
            }
        }
    }
    // no ui.xml file
    return null;
}