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.google.gdt.eclipse.designer.util.DefaultModuleProvider.java

License:Open Source License

/**
 * @return the module files to which belongs given {@link IResource}, may be <code>null</code> if
 *         no module found. Climbs up by {@link IPackageFragment}'s hierarchy, good for (Case
 *         33265), i.e. Maven-like source folder structure.
 *//*from  w w w.  ja v a 2 s.  co m*/
private static List<IFile> getModuleFiles_java(IResource resource) throws Exception {
    IProject project = resource.getProject();
    IJavaProject javaProject = JavaCore.create(project);
    // prepare package name
    String packageName;
    {
        // prepare folder
        IFolder folder;
        if (resource instanceof IFolder) {
            folder = (IFolder) resource;
        } else if (resource.getParent() instanceof IFolder) {
            folder = (IFolder) resource.getParent();
        } else {
            return ImmutableList.of();
        }
        // prepare package fragment
        IJavaElement javaElement = JavaCore.create(folder);
        if (javaElement instanceof IPackageFragment) {
            IPackageFragment pkgFragment = (IPackageFragment) javaElement;
            packageName = pkgFragment.getElementName();
        } else {
            return ImmutableList.of();
        }
    }
    // prepare source folders
    List<IPackageFragmentRoot> sourceFolders = Lists.newArrayList();
    for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
        if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
            sourceFolders.add(packageFragmentRoot);
        }
    }
    // search in this package and packages above
    for (; packageName.length() != 0; packageName = CodeUtils.getPackage(packageName)) {
        for (IPackageFragmentRoot packageFragmentRoot : sourceFolders) {
            IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(packageName);
            if (packageFragment.exists()) {
                IResource underlyingResource = packageFragment.getUnderlyingResource();
                if (underlyingResource instanceof IFolder) {
                    IFolder folder = (IFolder) underlyingResource;
                    List<IFile> moduleFiles = getModuleFiles(folder, false);
                    if (!moduleFiles.isEmpty()) {
                        return moduleFiles;
                    }
                }
            }
        }
    }
    // no modules
    return ImmutableList.of();
}

From source file:com.google.gdt.eclipse.designer.util.Utils.java

License:Open Source License

/**
 * Accepts some {@link IPackageFragment} in "source" package and returns root "source" package.
 *///from  www  . ja  v  a  2 s  . c o  m
public static IPackageFragment getRootSourcePackage(IPackageFragment pkg) throws Exception {
    IPackageFragmentRoot sourceRoot = (IPackageFragmentRoot) pkg.getParent();
    IPackageFragment clientRoot = pkg;
    while (isModuleSourcePackage(pkg)) {
        clientRoot = pkg;
        String pkgName = pkg.getElementName();
        String pkgParentName = CodeUtils.getPackage(pkgName);
        pkg = sourceRoot.getPackageFragment(pkgParentName);
    }
    return clientRoot;
}

From source file:com.google.gdt.eclipse.designer.wizards.model.common.AbstractCreateOperation.java

License:Open Source License

/**
 * Creates sub package with given name in target {@link IPackageFragment}.
 *//*from  w  ww  .ja  va2 s  .co  m*/
protected IPackageFragment getPackage(IPackageFragmentRoot root, String packageName) throws JavaModelException {
    IPackageFragment packageFragment = root.getPackageFragment(packageName);
    if (!packageFragment.exists()) {
        packageFragment = root.createPackageFragment(packageName, false, new NullProgressMonitor());
    }
    return packageFragment;
}

From source file:com.google.gdt.eclipse.designer.wizards.model.mvp.ViewComposite.java

License:Open Source License

private void packageButtonPressed() {
    IPackageFragmentRoot packageRoot = getRoot();
    if (packageRoot == null) {
        return;/*from   w w w.  ja  va 2 s . c o  m*/
    }
    List<IPackageFragment> packages = Lists.newArrayList();
    try {
        IJavaElement[] javaElements = packageRoot.getChildren();
        for (IJavaElement javaElement : javaElements) {
            if (javaElement instanceof IPackageFragment) {
                IPackageFragment packageFragment = (IPackageFragment) javaElement;
                if (Utils.isModuleSourcePackage(packageFragment)) {
                    packages.add(packageFragment);
                }
            }
        }
    } catch (Exception e) {
        DesignerPlugin.log(e);
    }
    ElementListSelectionDialog dialog = new ElementListSelectionDialog(getShell(),
            new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT));
    dialog.setIgnoreCase(false);
    dialog.setTitle("Package selection");
    dialog.setMessage("Select package for View:");
    dialog.setHelpAvailable(false);
    dialog.setElements(packages.toArray());
    {
        IPackageFragment packageFragment = packageRoot.getPackageFragment(packageField.getText());
        if (packageFragment != null && packageFragment.exists()) {
            dialog.setInitialSelections(new Object[] { packageFragment });
        }
    }
    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof IPackageFragment) {
            IPackageFragment packageFragment = (IPackageFragment) element;
            packageField.setTextWithoutUpdate(packageFragment.getElementName());
        }
    }
}

From source file:com.google.gdt.eclipse.designer.wizards.model.mvp.ViewComposite.java

License:Open Source License

private void factoryButtonPressed() {
    final IPackageFragmentRoot packageRoot = getRoot();
    if (packageRoot == null) {
        return;//from ww  w .ja  v  a  2  s. c o  m
    }
    Shell shell = Display.getCurrent().getActiveShell();
    ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
    ITreeContentProvider contentProvider = new StandardJavaElementContentProvider();
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(shell, labelProvider, contentProvider);
    dialog.setTitle("ClientFactory interface selection");
    dialog.setMessage("Choose a ClientFactory interface:");
    dialog.setAllowMultiple(false);
    dialog.setHelpAvailable(false);
    //
    dialog.setValidator(new ISelectionStatusValidator() {
        public IStatus validate(Object[] selection) {
            if (selection.length == 1) {
                if (selection[0] instanceof ICompilationUnit) {
                    try {
                        if (validateFactoryCompilationUnit((ICompilationUnit) selection[0]) == null) {
                            return StatusUtils.OK_STATUS;
                        }
                    } catch (Exception e) {
                        DesignerPlugin.log(e);
                    }
                }
            }
            return StatusUtils.ERROR_STATUS;
        }
    });
    dialog.addFilter(new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            // check project
            if (element instanceof IJavaProject) {
                return element.equals(packageRoot.getJavaProject());
            }
            // check package fragment root
            if (element instanceof IPackageFragmentRoot) {
                return element.equals(packageRoot);
            }
            // check package fragment
            if (element instanceof IPackageFragment) {
                try {
                    IPackageFragment packageFragment = (IPackageFragment) element;
                    return packageFragment.getCompilationUnits().length > 0
                            && Utils.isModuleSourcePackage(packageFragment);
                } catch (Exception e) {
                    DesignerPlugin.log(e);
                    return false;
                }
            }
            // check *.java
            if (element instanceof ICompilationUnit) {
                return true;
            }
            return false;
        }
    });
    dialog.setInput(packageRoot);
    {
        String factoryClassName = factoryNameField.getText();
        if (!StringUtils.isEmpty(factoryClassName)) {
            IPackageFragment packageFragment = packageRoot
                    .getPackageFragment(CodeUtils.getPackage(factoryClassName));
            if (packageFragment.exists()) {
                ICompilationUnit compilationUnit = packageFragment
                        .getCompilationUnit(CodeUtils.getShortClass(factoryClassName) + ".java");
                if (compilationUnit.exists()) {
                    dialog.setInitialSelection(compilationUnit);
                }
            }
        }
    }
    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof ICompilationUnit) {
            ICompilationUnit unit = (ICompilationUnit) element;
            factoryNameField.setText(unit.findPrimaryType().getFullyQualifiedName());
        }
    }
}

From source file:com.google.gdt.eclipse.designer.wizards.model.mvp.ViewComposite.java

License:Open Source License

@Override
protected String validate() {
    // reset values state
    viewPackageFragment = null;//www.  j a va2s.  com
    placePackageFragment = null;
    activityPackageFragment = null;
    descriptionText.setText("");
    // process names fields
    validateNames();
    // validate values ...
    IPackageFragmentRoot packageRoot = null;
    // validate source folder
    {
        if (sourceField.getText().length() == 0) {
            return "Source folder name can not be empty.";
        }
        packageRoot = sourceField.getRoot();
        if (packageRoot == null) {
            return "Source folder is invalid.";
        } else {
            // validate project
            if (!Utils.supportMvp(packageRoot.getJavaProject())) {
                return "Current project nor support MVP framework (need gwt-2.1 or higher).";
            }
        }
    }
    // validate package name
    String packageName;
    IPackageFragment basePkg;
    {
        packageName = packageField.getText();
        if (packageName.length() == 0) {
            return "Package can not be empty.";
        }
        // check that package name is valid
        IStatus status = JavaConventions.validatePackageName(packageName, null, null);
        if (status.getSeverity() == IStatus.ERROR) {
            return status.getMessage();
        }
        // check for client package
        basePkg = packageRoot.getPackageFragment(packageName);
        try {
            if (!Utils.isModuleSourcePackage(basePkg)) {
                return "GWT widgets can be used only in client package of some GWT module.";
            }
        } catch (Exception e) {
            return "Exception: " + e.getMessage();
        }
    }
    // try get special packages for Places & Activities
    IPackageFragment viewPkg = basePkg;
    IPackageFragment placePkg = basePkg;
    IPackageFragment activityPkg = basePkg;
    {
        try {
            IPackageFragment rootSourcePackage = Utils.getRootSourcePackage(basePkg);
            List<String> packageNameTemplates = generatePackageNameTemplates(packageName,
                    rootSourcePackage.getElementName());
            // select 'place' package
            {
                IPackageFragment existsPackageFragment = selectExistsPackage(packageRoot, packageNameTemplates,
                        "place", "places");
                if (existsPackageFragment != null) {
                    placePkg = existsPackageFragment;
                }
            }
            // select 'activity' package
            {
                IPackageFragment existsPackageFragment = selectExistsPackage(packageRoot, packageNameTemplates,
                        "activity", "activities");
                if (existsPackageFragment != null) {
                    activityPkg = existsPackageFragment;
                }
            }
        } catch (Exception e) {
            DesignerPlugin.log(e);
        }
    }
    // validate view name
    {
        String validateMessage = validateNewCompilationUnit(viewPkg, viewField.getText(), "View name");
        if (validateMessage != null) {
            if (viewPkg != basePkg) {
                validateMessage = validateNewCompilationUnit(basePkg, viewField.getText(), "View name");
                if (validateMessage != null) {
                    return validateMessage;
                } else {
                    viewPackageFragment = basePkg;
                }
            } else {
                return validateMessage;
            }
        } else {
            viewPackageFragment = viewPkg;
        }
    }
    // validate place name
    if (placeNameField.isEnabled()) {
        String validateMessage = validateNewCompilationUnit(placePkg, placeNameField.getText(), "Place name");
        if (validateMessage != null) {
            if (placePkg != basePkg) {
                validateMessage = validateNewCompilationUnit(basePkg, placeNameField.getText(), "Place name");
                if (validateMessage != null) {
                    return validateMessage;
                } else {
                    placePackageFragment = basePkg;
                }
            } else {
                return validateMessage;
            }
        } else {
            placePackageFragment = placePkg;
        }
    }
    // validate activity name
    if (activityNameField.isEnabled()) {
        String validateMessage = validateNewCompilationUnit(activityPkg, activityNameField.getText(),
                "Activity name");
        if (validateMessage != null) {
            if (activityPkg != basePkg) {
                validateMessage = validateNewCompilationUnit(basePkg, activityNameField.getText(),
                        "Activity name");
                if (validateMessage != null) {
                    return validateMessage;
                } else {
                    activityPackageFragment = basePkg;
                }
            } else {
                return validateMessage;
            }
        } else {
            activityPackageFragment = activityPkg;
        }
    }
    // validate factory
    if (factoryNameField.isEnabled()) {
        String factoryFullName = factoryNameField.getText();
        if (factoryFullName.length() == 0) {
            return "ClientFactory name can not be empty.";
        }
        String factoryPackageName = CodeUtils.getPackage(factoryFullName);
        String factoryClassName = CodeUtils.getShortClass(factoryFullName);
        IPackageFragment packageFragment = packageRoot.getPackageFragment(factoryPackageName);
        ICompilationUnit compilationUnit = packageFragment.getCompilationUnit(factoryClassName + ".java");
        if (!compilationUnit.exists()) {
            return "ClientFactory unit " + factoryFullName + " does not exists.";
        }
        try {
            String validateMessage = validateFactoryCompilationUnit(compilationUnit);
            if (validateMessage != null) {
                return validateMessage;
            }
        } catch (Exception e) {
            DesignerPlugin.log(e);
        }
    }
    // description
    {
        StringBuffer message = new StringBuffer();
        message.append("Generating View class " + getViewPackageName() + "." + getViewName());
        if (placeNameField.isEnabled()) {
            message.append("\nGenerating Place class " + getPlacePackageName() + "." + getPlaceName());
        }
        if (activityNameField.isEnabled()) {
            message.append("\nGenerating Activity class " + getActivityPackageName() + "." + getActivityName());
        }
        if (factoryField.getSelection() && factoryField.isEnabled()) {
            message.append("\nModifying ClientFactory class " + getClientFactoryPackageName() + "."
                    + getClientFactoryName());
        }
        descriptionText.setText(message.toString());
    }
    return null;
}

From source file:com.google.gdt.eclipse.designer.wizards.model.mvp.ViewComposite.java

License:Open Source License

private static IPackageFragment selectExistsPackage(IPackageFragmentRoot root,
        List<String> packageNameTemplates, String... keyNames) {
    for (String packageNameTemplate : packageNameTemplates) {
        for (String keyName : keyNames) {
            String placePackageName = StringUtils.replace(packageNameTemplate, "%keyName%", keyName);
            IPackageFragment packageFragment = root.getPackageFragment(placePackageName);
            if (packageFragment.exists()) {
                return packageFragment;
            }/* w  ww.j a  va2  s  .c o m*/
        }
    }
    return null;
}

From source file:com.google.gdt.eclipse.designer.wizards.model.mvp.ViewComposite.java

License:Open Source License

public static String getClientFactoryClassName(IPackageFragmentRoot packageRoot, String packageName)
        throws Exception {
    if (StringUtils.isEmpty(packageName)) {
        return null;
    }/*from  w w w. ja v  a 2 s .  co  m*/
    IPackageFragment packageFragment = packageRoot.getPackageFragment(packageName);
    if (packageFragment.exists()) {
        String factoryClassName = getClientFactoryName(packageFragment);
        if (!StringUtils.isEmpty(factoryClassName)) {
            IPackageFragment factoryPackageFragment = packageRoot
                    .getPackageFragment(CodeUtils.getPackage(factoryClassName));
            if (factoryPackageFragment.exists()) {
                ICompilationUnit compilationUnit = factoryPackageFragment
                        .getCompilationUnit(CodeUtils.getShortClass(factoryClassName) + ".java");
                if (compilationUnit.exists() && validateFactoryCompilationUnit(compilationUnit) == null) {
                    return factoryClassName;
                }
            }
        }
    }
    return getClientFactoryClassName(packageRoot, CodeUtils.getPackage(packageName));
}

From source file:com.google.gdt.eclipse.designer.wizards.ui.JUnitWizardPage.java

License:Open Source License

private IPackageFragment handleTestPackage(IJavaElement element, IPackageFragmentRoot testSourceFragmentRoot)
        throws Exception {
    IPackageFragment testPackage = null;
    IPackageFragment elementPackage = (IPackageFragment) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
    if (elementPackage != null) {
        testPackage = testSourceFragmentRoot.getPackageFragment(elementPackage.getElementName());
        if (testPackage == null || !testPackage.exists()) {
            testPackage = testSourceFragmentRoot.createPackageFragment(elementPackage.getElementName(), true,
                    null);//  w ww .j  ava  2 s . c  om
        }
    }
    //
    setPackageFragment(testPackage, true);
    return elementPackage;
}

From source file:com.google.gwt.eclipse.core.speedtracer.ViewSourceServlet.java

License:Open Source License

private IEditorPart openEditorForFileInJar(String jarPathString, String classpathRelativeFilePathString,
        String preferredProjectName) {
    IPackageFragmentRoot jarPackageFragmentRoot;
    try {/*from   ww  w  .  j a  v  a 2s  . c o m*/
        jarPackageFragmentRoot = getPackageFragmentRoot(jarPathString, preferredProjectName);
    } catch (IOException e) {
        GWTPluginLog.logError(e);
        return null;
    }

    if (jarPackageFragmentRoot == null || !jarPackageFragmentRoot.exists()) {
        GWTPluginLog.logError("Could not view source because the file at \"" + jarPathString
                + "\" may not be a valid JAR, or may not contain java elements");
        return null;
    }

    IPath classpathRelativeFilePath = new Path(classpathRelativeFilePathString);
    IPath packagePath = classpathRelativeFilePath.removeLastSegments(1);
    String packageName = JavaUtilities.getPackageNameFromPath(packagePath);

    IPackageFragment packageFragment = jarPackageFragmentRoot.getPackageFragment(packageName);
    if (!packageFragment.exists()) {
        GWTPluginLog.logError("Could not view source because the package " + packageName + " inside "
                + jarPathString + " could not be found");
        return null;
    }

    String fileName = classpathRelativeFilePath.lastSegment();
    String classFileName;
    if (ResourceUtils.endsWith(fileName, ".java")) {
        classFileName = fileName.substring(0, fileName.length() - ".java".length()) + ".class";
    } else if (ResourceUtils.endsWith(fileName, ".class")) {
        classFileName = fileName;
    } else {
        GWTPluginLog.logError(
                "Could not view source because cannot handle file type of " + fileName + " inside a JAR");
        return null;
    }

    try {
        final IPackageFragment pf = packageFragment;
        final String finalClassFileName = classFileName;
        final IEditorPart[] part = new IEditorPart[1];
        Display.getDefault().syncExec(new Runnable() {
            public void run() {
                try {
                    part[0] = EditorUtility.openInEditor(pf.getClassFile(finalClassFileName), true);
                } catch (Throwable e) {
                    GWTPluginLog.logError(e, "Could not open java editor");
                }
            }
        });
        return part[0];
    } catch (Throwable e) {
        GWTPluginLog.logError(e, "Could not get files from the package " + packageFragment);
        return null;
    }
}