List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot getPackageFragment
IPackageFragment getPackageFragment(String packageName);
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; } }