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

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

Introduction

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

Prototype

IJavaProject getJavaProject();

Source Link

Document

Returns the Java project this element is contained in, or null if this element is not contained in any Java project (for instance, the IJavaModel is not contained in any Java project).

Usage

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  w w w .  j a  v a  2 s .c om*/
    }
    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;/*from w ww.  j a v  a 2 s.  c o  m*/
    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.ui.JUnitWizard.java

License:Open Source License

@Override
protected void finishPage(IProgressMonitor monitor) throws InterruptedException, CoreException {
    IPackageFragmentRoot fragmentRoot = m_mainPage.getPackageFragmentRoot();
    if (fragmentRoot != null) {
        IJavaProject project = fragmentRoot.getJavaProject();
        if (project != null && project.findType("junit.framework.TestCase") == null) {
            try {
                ProjectUtils.addPluginLibraries(project, "org.junit");
            } catch (Throwable e) {
                DesignerPlugin.log(e);/*from w  w w  . j a  v a2s .  c  om*/
                throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0,
                        "Unable add JUnit jar to classpath " + project.getElementName(), e));
            }
        }
    }
    m_mainPage.createType(monitor);
}

From source file:com.google.gwt.eclipse.core.wizards.NewModuleWizard.java

License:Open Source License

@Override
protected InputStream getInitialContents() {
    List<String> contents = new ArrayList<String>();

    IPackageFragmentRoot root = newModuleWizardPage.getPackageFragmentRoot();
    IJavaProject javaProject = root.getJavaProject();

    contents.add("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    String gwtModuleDtd = NO_VERSION_FOUND_DTD;

    GWTRuntime runtime = GWTRuntime.findSdkFor(javaProject);
    if (runtime != null) {
        String versionNum = runtime.getVersion();

        if (!versionNum.endsWith(".999") && !versionNum.startsWith("0.0")) {
            gwtModuleDtd = "<!DOCTYPE module PUBLIC \"-//Google Inc.//DTD Google Web Toolkit " + versionNum
                    + "//EN\" \"http://google-web-toolkit.googlecode.com/svn/tags/" + versionNum
                    + "/distro-source/core/src/gwt-module.dtd\">";
        }/* w  w  w.jav a2 s. c o  m*/
    }

    contents.add(gwtModuleDtd);

    contents.add("<module>");

    List<IModule> moduleInherits = newModuleWizardPage.getModuleInherits();

    // TODO: Instead of hardcoding a tab character here, we should try and use
    // the WST editor preferences for indentation. We should respect the user's
    // preferences for spaces vs. tabs, and the number of spaces that make up an
    // indentation.
    for (IModule moduleInherit : moduleInherits) {
        contents.add("\t<inherits name=\"" + moduleInherit.getQualifiedName() + "\" />");
    }

    // Explicitly add the source path element
    contents.add("\t<source path=\"client\"/>");

    contents.add("</module>");

    String xml = Util.join(contents, System.getProperty("line.separator"));
    ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes());
    return stream;
}

From source file:com.gwtplatform.plugin.projectfile.ProjectClass.java

License:Apache License

public ProjectClass(IPackageFragmentRoot root, String fullyQualifiedName,
        SourceWriterFactory sourceWriterFactory) throws JavaModelException {
    this.root = root;
    int lastDotIndex = fullyQualifiedName.lastIndexOf('.');
    if (lastDotIndex <= 1) {
        packageName = "";
    } else {// w w w .  j  ava2  s  .c o  m
        packageName = fullyQualifiedName.substring(0, lastDotIndex);
    }
    elementName = fullyQualifiedName.substring(lastDotIndex + 1);
    this.sourceWriterFactory = sourceWriterFactory;
    type = root.getJavaProject().findType(fullyQualifiedName);
    originalUnit = createCompilationUnitIfNeeded();
    workingCopy = originalUnit.getWorkingCopy(new NullProgressMonitor());
    workingCopyType = workingCopy.getType(type.getElementName());
}

From source file:com.gwtplatform.plugin.projectfile.ProjectClass.java

License:Apache License

public ProjectClass(IPackageFragmentRoot root, String packageName, String elementName,
        SourceWriterFactory sourceWriterFactory) throws JavaModelException {
    this.root = root;
    this.packageName = packageName;
    this.elementName = elementName;
    this.sourceWriterFactory = sourceWriterFactory;
    type = root.getJavaProject().findType(packageName + "." + elementName);
    originalUnit = createCompilationUnitIfNeeded();
    workingCopy = originalUnit.getWorkingCopy(new NullProgressMonitor());
}

From source file:com.gwtplatform.plugin.sample.BasicSampleBuilder.java

License:Apache License

public BasicSampleBuilder(IPackageFragmentRoot root, IPackageFragment projectPackage,
        SourceWriterFactory sourceWriterFactory) throws JavaModelException {
    this.root = root;
    this.javaProject = root.getJavaProject();
    this.clientPackage = javaProject.findPackageFragment(projectPackage.getPath().append("client"));
    this.serverPackage = javaProject.findPackageFragment(projectPackage.getPath().append("server"));
    this.sharedPackage = javaProject.findPackageFragment(projectPackage.getPath().append("shared"));
    this.sourceWriterFactory = sourceWriterFactory;
}

From source file:com.gwtplatform.plugin.wizard.NewActionWizard.java

License:Apache License

private boolean isSpringHandlerModule(IPackageFragmentRoot root) throws JavaModelException {
    String handlerModuleString = page.getHandlerModule();
    IType handlerModuleType = root.getJavaProject().findType(handlerModuleString);
    ITypeHierarchy hierarchy = handlerModuleType.newSupertypeHierarchy(new NullProgressMonitor());
    IType[] superclasses = hierarchy.getAllClasses();
    for (IType superclass : superclasses) {
        if (superclass.getFullyQualifiedName('.').equals(GuiceHandlerModule.C_HANDLER_MODULE)) {
            return false;
        } else if (superclass.getFullyQualifiedName('.').equals(SpringHandlerModule.C_HANDLER_MODULE)) {
            return true;
        }/* w ww.j a v  a  2  s. co  m*/
    }
    return false;
}

From source file:com.gwtplatform.plugin.wizard.NewActionWizardPage.java

License:Apache License

private IStatus actionHandlerChanged() {
    StatusInfo status = new StatusInfo();

    if (actionHandlerPackage.getText().isEmpty()) {
        status.setError("You must select the ActionHandler's package");
        return status;
    }//  w ww. j  a va 2  s.c  o  m

    IPackageFragmentRoot root = getPackageFragmentRoot();
    IJavaProject project = root.getJavaProject();
    IPackageFragment pack = root.getPackageFragment(actionHandlerPackage.getText());

    if (!pack.getElementName().isEmpty()) {
        IStatus val = JavaConventionsUtil.validatePackageName(pack.getElementName(), project);
        if (val.getSeverity() == IStatus.ERROR) {
            status.setError(Messages.format(NewWizardMessages.NewTypeWizardPage_error_InvalidPackageName,
                    val.getMessage()));
            return status;
        } else if (val.getSeverity() == IStatus.WARNING) {
            status.setWarning(Messages.format(
                    NewWizardMessages.NewTypeWizardPage_warning_DiscouragedPackageName, val.getMessage()));
            // continue
        }
    } else {
        status.setWarning(NewWizardMessages.NewTypeWizardPage_warning_DefaultPackageDiscouraged);
    }

    if (!pack.getElementName().contains(".server")) {
        status.setError("ActionHandler's package must be in the server package");
        return status;
    }

    if (project != null) {
        if (project.exists() && !pack.getElementName().isEmpty()) {
            try {
                IPath rootPath = root.getPath();
                IPath outputPath = project.getOutputLocation();
                if (rootPath.isPrefixOf(outputPath) && !rootPath.equals(outputPath)) {
                    // if the bin folder is inside of our root, don't allow to name a
                    // package
                    // like the bin folder
                    IPath packagePath = rootPath.append(pack.getElementName().replace('.', '/'));
                    if (outputPath.isPrefixOf(packagePath)) {
                        status.setError(NewWizardMessages.NewTypeWizardPage_error_ClashOutputLocation);
                        return status;
                    }
                }
            } catch (JavaModelException e) {
                JavaPlugin.log(e);
                // let pass
            }
        }
    } else {
        status.setError("");
    }
    return status;
}

From source file:com.gwtplatform.plugin.wizard.NewPresenterWizard.java

License:Apache License

protected boolean finish(IProgressMonitor desiredMonitor) {
    IProgressMonitor monitor = desiredMonitor;
    if (desiredMonitor == null) {
        monitor = new NullProgressMonitor();
    }//from  www .j  a  v  a 2 s  . c  o  m

    Presenter presenter = null;
    Tokens tokens = null;
    View view = null;
    Ui ui = null;
    Ginjector ginjector = null;
    PresenterModule presenterModule = null;
    PlaceAnnotation newPlaceAnnotation = null;

    IField tokenField = null;
    try {
        monitor.beginTask("Presenter creation", 3);

        IPackageFragmentRoot root = page.getPackageFragmentRoot();

        // Presenter
        monitor.subTask("Presenter");
        presenter = new Presenter(root, page.getPackageText(), page.getTypeName(), sourceWriterFactory,
                page.isWidget());
        if (page.isPopup()) {
            presenter.createPopupViewInterface();
        } else {
            presenter.createViewInterface();
        }
        if (page.isPlace()) {
            tokens = new Tokens(root, page.getTokenClass(), sourceWriterFactory);
            tokenField = tokens.createTokenField(page.getTokenName());
            tokens.createTokenGetter(page.getTokenName());

            if (page.getGatekeeper().isEmpty()) {
                presenter.createProxyPlaceInterface(page.isProxyStandard(), tokens.getType(),
                        page.getTokenName());
            } else {
                IType gatekeeper = page.getJavaProject().findType(page.getGatekeeper());

                presenter.createProxyPlaceInterface(page.isProxyStandard(), tokens.getType(),
                        page.getTokenName(), gatekeeper);
            }
        } else if (!page.isWidget()) {
            presenter.createProxyInterface(page.isProxyStandard());
        }

        presenter.createConstructor();

        if (!page.isWidget()) {
            IType revealEvent = page.getJavaProject().findType(page.getRevealEvent());
            if (revealEvent.getElementName().equals("RevealContentEvent")) {
                IType parent = page.getJavaProject().findType(page.getParent());

                presenter.createRevealInParentMethod(revealEvent, parent, page.getContentSlot());
            } else {
                presenter.createRevealInParentMethod(revealEvent);
            }
        }

        String[] methods = page.getMethodStubs();
        for (String method : methods) {
            presenter.createMethodStub(method);
        }
        monitor.worked(1);

        // View
        monitor.subTask("View");
        view = new View(root, page.getViewPackageText(), page.getViewTypeName(), sourceWriterFactory,
                presenter.getType(), page.isPopup());
        if (page.useUiBinder()) {
            view.createBinderInterface();
            view.createWidgetField();
        }
        view.createConstructor(page.useUiBinder());
        view.createAsWidgetMethod(page.useUiBinder());

        // Ui
        if (page.useUiBinder()) {
            monitor.subTask("UiBinder");
            ui = new Ui(root, page.getViewPackageText(), page.getViewTypeName());
            ui.createFile(page.isPopup());
        }

        // Ginjector
        if (!page.isWidget()) {
            monitor.subTask("Provider in Ginjector");
            ginjector = new Ginjector(root, page.getGinjector(), sourceWriterFactory);
            ginjector.createProvider(presenter.getType());
        }
        monitor.worked(1);

        // PresenterModule
        monitor.subTask("Bind in PresenterModule");
        presenterModule = new PresenterModule(root, page.getPresenterModule(), sourceWriterFactory);
        if (page.isWidget()) {
            if (page.isSingleton()) {
                presenterModule.createSingletonPresenterWidgetBinder(presenter.getType(), view.getType());
            } else {
                presenterModule.createPresenterWidgetBinder(presenter.getType(), view.getType());
            }
        } else {
            presenterModule.createPresenterBinder(presenter.getType(), view.getType());
        }
        if (!page.getAnnotation().isEmpty()) {
            IType annotation = root.getJavaProject().findType(page.getAnnotation());
            if (annotation == null) {
                // Annotation type doesn't exist, create it!
                newPlaceAnnotation = new PlaceAnnotation(root, page.getAnnotation(), sourceWriterFactory);
                annotation = newPlaceAnnotation.getType();
            }
            presenterModule.createConstantBinder(annotation, tokens.getType(), tokenField);
        }
        monitor.worked(1);

        if (presenter != null) {
            presenter.commit();
        }
        if (tokens != null) {
            tokens.commit();
        }
        if (view != null) {
            view.commit();
        }
        if (ginjector != null) {
            ginjector.commit();
        }
        if (presenterModule != null) {
            presenterModule.commit();
        }
        if (newPlaceAnnotation != null) {
            newPlaceAnnotation.commit();
        }
    } catch (Exception e) {
        try {
            if (presenter != null) {
                presenter.discard(true);
            }
            if (tokens != null) {
                tokens.discard(false);
            }
            if (view != null) {
                view.discard(true);
            }
            if (ui != null) {
                ui.getFile().delete(true, null);
            }
            if (ginjector != null) {
                ginjector.discard(false);
            }
            if (presenterModule != null) {
                presenterModule.discard(false);
            }
        } catch (Exception e1) {
            e1.printStackTrace();
        }

        IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID,
                "An unexpected error has happened. Close the wizard and retry.", e);

        ErrorDialog.openError(getShell(), null, null, status);

        return false;
    }
    monitor.done();
    return true;
}