List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot K_SOURCE
int K_SOURCE
To view the source code for org.eclipse.jdt.core IPackageFragmentRoot K_SOURCE.
Click Source Link
From source file:org.eclipse.che.plugin.java.server.JavaNavigation.java
License:Open Source License
private List<PackageFragmentRoot> toPackageRoots(IJavaProject javaProject, boolean includePackages) throws JavaModelException { IPackageFragmentRoot[] packageFragmentRoots = javaProject.getPackageFragmentRoots(); List<PackageFragmentRoot> result = new ArrayList<>(); for (IPackageFragmentRoot packageFragmentRoot : packageFragmentRoots) { if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) { PackageFragmentRoot root = DtoFactory.newDto(PackageFragmentRoot.class); root.setPath(packageFragmentRoot.getPath().toOSString()); root.setProjectPath(packageFragmentRoot.getJavaProject().getPath().toOSString()); if (includePackages) { root.setPackageFragments(toPackageFragments(packageFragmentRoot)); }/* w ww . j a v a 2 s. c o m*/ result.add(root); } } return result; }
From source file:org.eclipse.e4.internal.tools.wizards.classes.AbstractNewClassPage.java
License:Open Source License
private IPackageFragmentRoot choosePackageRoot() { IJavaElement initElement = clazz.getFragmentRoot(); Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class }; TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) { @Override/*from w w w .ja v a 2 s .c o m*/ public boolean isSelectedValid(Object element) { try { if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; IPath path = jproject.getProject().getFullPath(); return (jproject.findPackageFragmentRoot(path) != null); } else if (element instanceof IPackageFragmentRoot) { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } return true; } catch (JavaModelException e) { JavaPlugin.log(e.getStatus()); // just log, no UI in validation } return false; } }; acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class }; ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { @Override public boolean select(Viewer viewer, Object parent, Object element) { if (element instanceof IPackageFragmentRoot) { try { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } catch (JavaModelException e) { JavaPlugin.log(e.getStatus()); // just log, no UI in validation return false; } } return super.select(viewer, parent, element); } }; StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider); dialog.setValidator(validator); dialog.setComparator(new JavaElementComparator()); dialog.setTitle(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_title); dialog.setMessage(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_description); dialog.addFilter(filter); dialog.setInput(JavaCore.create(fWorkspaceRoot)); dialog.setInitialSelection(initElement); dialog.setHelpAvailable(false); if (dialog.open() == Window.OK) { Object element = dialog.getFirstResult(); if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; return jproject.getPackageFragmentRoot(jproject.getProject()); } else if (element instanceof IPackageFragmentRoot) { return (IPackageFragmentRoot) element; } return null; } return null; }
From source file:org.eclipse.e4.internal.tools.wizards.project.E4NewProjectWizard.java
License:Open Source License
/** * create products extension detail/*from ww w . j a v a 2 s . c o m*/ * * @param project */ @SuppressWarnings("restriction") public void createApplicationResources(IProject project, IProgressMonitor monitor) { Map<String, String> map = fApplicationPage.getData(); isMinimalist = !map.get(NewApplicationWizardPage.richSample).equalsIgnoreCase("TRUE"); if (map == null || map.get(NewApplicationWizardPage.PRODUCT_NAME) == null) return; // If the project has invalid characters, the plug-in name would replace // them with underscores, product name does the same String pluginName = fPluginData.getId(); // If there's no Activator created we create default package if (!fPluginData.doGenerateClass()) { String packageName = fPluginData.getId(); IPath path = new Path(packageName.replace('.', '/')); if (fPluginData.getSourceFolderName().trim().length() > 0) path = new Path(fPluginData.getSourceFolderName()).append(path); try { CoreUtility.createFolder(project.getFolder(path)); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } } IJavaProject javaProject = JavaCore.create(project); IPackageFragment fragment = null; try { for (IPackageFragment element : javaProject.getPackageFragments()) { if (element.getKind() == IPackageFragmentRoot.K_SOURCE) { fragment = element; } } } catch (JavaModelException e1) { e1.printStackTrace(); } createApplicationModel(project, pluginName, fragment); String cssPath = map.get(NewApplicationWizardPage.APPLICATION_CSS_PROPERTY); if (cssPath != null && cssPath.trim().length() > 0) { IFile file = project.getFile(cssPath); try { prepareFolder(file.getParent(), monitor); URL corePath = ResourceLocator.getProjectTemplateFiles("css/default.css"); file.create(corePath.openStream(), true, monitor); } catch (Exception e) { PDEPlugin.logException(e); } } String template_id = "common"; Set<String> binaryExtentions = new HashSet<String>(); binaryExtentions.add(".gif"); binaryExtentions.add(".png"); Map<String, String> keys = new HashMap<String, String>(); keys.put("projectName", pluginName); keys.put("productFileName", map.get(NewApplicationWizardPage.PRODUCT_NAME)); String elementName = fragment.getElementName(); keys.put("packageName", (elementName.equals("") ? "" : elementName + ".") + "handlers"); keys.put("packageName2", (elementName.equals("") ? "" : elementName + ".") + "parts"); keys.put("programArgs", "true".equalsIgnoreCase(map.get(NewApplicationWizardPage.CLEAR_PERSISTED_STATE)) ? "-clearPersistedState" : ""); try { URL corePath = ResourceLocator.getProjectTemplateFiles(template_id); IRunnableWithProgress op = new TemplateOperation(corePath, project, keys, binaryExtentions, isMinimalist); getContainer().run(false, true, op); } catch (Exception e) { PDEPlugin.logException(e); } if (!isMinimalist) { try { URL corePath = ResourceLocator.getProjectTemplateFiles("src"); IRunnableWithProgress op = new TemplateOperation(corePath, (IContainer) fragment.getResource(), keys, binaryExtentions, isMinimalist); getContainer().run(false, true, op); } catch (Exception e) { PDEPlugin.logException(e); } } }
From source file:org.eclipse.e4.tools.ui.designer.utils.ClassLoaderHelper.java
License:Open Source License
private static URL findResourceURL(IJavaProject javaProject, Set<IJavaProject> visited, boolean isFirstProject, String name) {// www.ja v a 2 s . co m if (visited.contains(javaProject)) return null; visited.add(javaProject); try { IPath outPath = javaProject.getProject().getLocation().removeLastSegments(1) .append(javaProject.getOutputLocation()); outPath = outPath.addTrailingSeparator(); { URL url = toURL(outPath.append(name)); if (url != null) { return url; } } for (IPackageFragmentRoot fragment : javaProject.getPackageFragmentRoots()) { if (fragment.getKind() == IPackageFragmentRoot.K_SOURCE) { URL url = toURL(fragment.getResource().getLocation().append(name)); if (url != null) { return url; } } } // urls.add(out); IClasspathEntry[] entries = javaProject.getResolvedClasspath(true); for (IClasspathEntry entry : entries) { switch (entry.getEntryKind()) { case IClasspathEntry.CPE_LIBRARY: { // TODO IClasspathEntry resolveEntry = JavaCore.getResolvedClasspathEntry(entry); File file = resolveEntry.getPath().toFile(); IPath path = resolveEntry.getPath(); if (!file.exists()) { String projectName = path.segment(0); IProject project = javaProject.getProject().getWorkspace().getRoot() .getProject(projectName); path = project.getLocation().append(path.removeFirstSegments(1)); } String spec = "jar:file:" + path.toString() + "!/" + name; try { URL url2 = new URL(spec); url2.getContent(); return url2; } catch (Exception e) { } } break; case IClasspathEntry.CPE_CONTAINER: break; case IClasspathEntry.CPE_VARIABLE: { { // TODO URL url = toURL(outPath.append(name)); if (url != null) { return url; } } } break; case IClasspathEntry.CPE_PROJECT: { if (isFirstProject || entry.isExported()) { URL url = findResourceURL(getJavaProject(entry), visited, false, name); if (url != null) { return url; } } break; } } } } catch (JavaModelException e) { e.printStackTrace(); } return null; }
From source file:org.eclipse.e4.tools.ui.designer.wizards.E4NewProjectWizard.java
License:Open Source License
/** * create products extension detail// w w w . ja v a 2 s . c o m * * @param project */ @SuppressWarnings("restriction") public void createApplicationResources(IProject project, IProgressMonitor monitor) { Map<String, String> map = fApplicationPage.getData(); if (map == null || map.get(NewApplicationWizardPage.PRODUCT_NAME) == null) return; String projectName = map.get(NewApplicationWizardPage.PRODUCT_NAME); String xmiPath = map.get(NewApplicationWizardPage.APPLICATION_XMI_PROPERTY); IJavaProject javaProject = JavaCore.create(project); IPackageFragment fragment = null; try { for (IPackageFragment element : javaProject.getPackageFragments()) { if (element.getKind() == IPackageFragmentRoot.K_SOURCE) { fragment = element; } } } catch (JavaModelException e1) { e1.printStackTrace(); } if (xmiPath != null && xmiPath.trim().length() > 0) { // Create a resource set // ResourceSet resourceSet = new ResourceSetImpl(); // Get the URI of the model file. // URI fileURI = URI.createPlatformResourceURI(project.getName() + "/" + xmiPath, true); // Create a resource for this file. // Resource resource = resourceSet.createResource(fileURI); MApplication application = MApplicationFactory.INSTANCE.createApplication(); application.setElementId("org.eclipse.e4.ide.application"); MBindingContext rootContext = MCommandsFactory.INSTANCE.createBindingContext(); rootContext.setElementId("org.eclipse.ui.contexts.dialogAndWindow"); rootContext.setName("In Dialog and Windows"); MBindingContext childContext = MCommandsFactory.INSTANCE.createBindingContext(); childContext.setElementId("org.eclipse.ui.contexts.window"); childContext.setName("In Windows"); rootContext.getChildren().add(childContext); childContext = MCommandsFactory.INSTANCE.createBindingContext(); childContext.setElementId("org.eclipse.ui.contexts.dialog"); childContext.setName("In Dialogs"); rootContext.getChildren().add(childContext); application.getRootContext().add(rootContext); application.getBindingContexts().add(rootContext); resource.getContents().add((EObject) application); // Create Quit command MCommand quitCommand = createCommand("quitCommand", "QuitHandler", "Ctrl+Q", projectName, fragment, application); MCommand openCommand = createCommand("openCommand", "OpenHandler", "Ctrl+O", projectName, fragment, application); MCommand saveCommand = createCommand("saveCommand", "SaveHandler", "Ctrl+S", projectName, fragment, application); MCommand aboutCommand = createCommand("aboutCommand", "AboutHandler", "Ctrl+A", projectName, fragment, application); MTrimmedWindow mainWindow = MBasicFactory.INSTANCE.createTrimmedWindow(); application.getChildren().add(mainWindow); { mainWindow.setLabel(projectName); mainWindow.setWidth(500); mainWindow.setHeight(400); // Menu { MMenu menu = MMenuFactory.INSTANCE.createMenu(); mainWindow.setMainMenu(menu); menu.setElementId("menu:org.eclipse.ui.main.menu"); MMenu fileMenuItem = MMenuFactory.INSTANCE.createMenu(); menu.getChildren().add(fileMenuItem); fileMenuItem.setLabel("File"); { MHandledMenuItem menuItemOpen = MMenuFactory.INSTANCE.createHandledMenuItem(); fileMenuItem.getChildren().add(menuItemOpen); menuItemOpen.setLabel("Open"); menuItemOpen.setIconURI("platform:/plugin/" + project.getName() + "/icons/sample.gif"); menuItemOpen.setCommand(openCommand); MHandledMenuItem menuItemSave = MMenuFactory.INSTANCE.createHandledMenuItem(); fileMenuItem.getChildren().add(menuItemSave); menuItemSave.setLabel("Save"); menuItemSave.setIconURI("platform:/plugin/" + project.getName() + "/icons/save_edit.gif"); menuItemSave.setCommand(saveCommand); MHandledMenuItem menuItemQuit = MMenuFactory.INSTANCE.createHandledMenuItem(); fileMenuItem.getChildren().add(menuItemQuit); menuItemQuit.setLabel("Quit"); menuItemQuit.setCommand(quitCommand); } MMenu helpMenuItem = MMenuFactory.INSTANCE.createMenu(); menu.getChildren().add(helpMenuItem); helpMenuItem.setLabel("Help"); { MHandledMenuItem menuItemAbout = MMenuFactory.INSTANCE.createHandledMenuItem(); helpMenuItem.getChildren().add(menuItemAbout); menuItemAbout.setLabel("About"); menuItemAbout.setCommand(aboutCommand); } } // PerspectiveStack { MPerspectiveStack perspectiveStack = MAdvancedFactory.INSTANCE.createPerspectiveStack(); mainWindow.getChildren().add(perspectiveStack); MPerspective perspective = MAdvancedFactory.INSTANCE.createPerspective(); perspectiveStack.getChildren().add(perspective); { // Part Container MPartSashContainer partSashContainer = MBasicFactory.INSTANCE.createPartSashContainer(); perspective.getChildren().add(partSashContainer); MPartStack partStack = MBasicFactory.INSTANCE.createPartStack(); partSashContainer.getChildren().add(partStack); // // MPart part = MApplicationFactory.eINSTANCE.createPart(); // partStack.getChildren().add(part); // part.setLabel("Main"); } // WindowTrim { MTrimBar trimBar = MBasicFactory.INSTANCE.createTrimBar(); mainWindow.getTrimBars().add(trimBar); MToolBar toolBar = MMenuFactory.INSTANCE.createToolBar(); toolBar.setElementId("toolbar:org.eclipse.ui.main.toolbar"); trimBar.getChildren().add(toolBar); MHandledToolItem toolItemOpen = MMenuFactory.INSTANCE.createHandledToolItem(); toolBar.getChildren().add(toolItemOpen); toolItemOpen.setIconURI("platform:/plugin/" + project.getName() + "/icons/sample.gif"); toolItemOpen.setCommand(openCommand); MHandledToolItem toolItemSave = MMenuFactory.INSTANCE.createHandledToolItem(); toolBar.getChildren().add(toolItemSave); toolItemSave.setIconURI("platform:/plugin/" + project.getName() + "/icons/save_edit.gif"); toolItemSave.setCommand(saveCommand); } } } Map<Object, Object> options = new HashMap<Object, Object>(); options.put(XMLResource.OPTION_ENCODING, "UTF-8"); try { resource.save(options); } catch (IOException e) { PDEPlugin.logException(e); } } String cssPath = map.get(NewApplicationWizardPage.APPLICATION_CSS_PROPERTY); if (cssPath != null && cssPath.trim().length() > 0) { IFile file = project.getFile(cssPath); try { prepareFolder(file.getParent(), monitor); URL corePath = ResourceLocator.getProjectTemplateFiles("css/default.css"); file.create(corePath.openStream(), true, monitor); } catch (Exception e) { PDEPlugin.logException(e); } } // IFolder folder = project.getFolder("icons"); // try { // folder.create(true, true, monitor); // Bundle bundle = Platform // .getBundle("org.eclipse.e4.tools.ui.designer"); // // for (String fileName : new String[] { "sample.gif", "save_edit.gif" // }) { // URL sampleUrl = bundle.getEntry("resources/icons/" + fileName); // sampleUrl = FileLocator.resolve(sampleUrl); // InputStream inputStream = sampleUrl.openStream(); // IFile file = folder.getFile(fileName); // file.create(inputStream, true, monitor); // } // } catch (Exception e) { // PDEPlugin.logException(e); // } String template_id = "common"; Set<String> binaryExtentions = new HashSet<String>(); binaryExtentions.add(".gif"); binaryExtentions.add(".png"); Map<String, String> keys = new HashMap<String, String>(); keys.put("projectName", projectName); keys.put("packageName", fragment.getElementName() + ".handlers"); try { URL corePath = ResourceLocator.getProjectTemplateFiles(template_id); IRunnableWithProgress op = new TemplateOperation(corePath, project, keys, binaryExtentions); getContainer().run(false, true, op); } catch (Exception e) { PDEPlugin.logException(e); } try { URL corePath = ResourceLocator.getProjectTemplateFiles("src"); IRunnableWithProgress op = new TemplateOperation(corePath, (IContainer) fragment.getResource(), keys, binaryExtentions); getContainer().run(false, true, op); } catch (Exception e) { PDEPlugin.logException(e); } }
From source file:org.eclipse.e4.xwt.tools.ui.designer.dialogs.AccessorConfigurationDialog.java
License:Open Source License
/** * Uses the standard container selection dialog to choose the new value for the container field. *///from w w w . j a v a 2 s. c o m private IPackageFragmentRoot chooseSourceContainer(IPackageFragmentRoot root) { Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class }; TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) { public boolean isSelectedValid(Object element) { try { if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; IPath path = jproject.getProject().getFullPath(); return (jproject.findPackageFragmentRoot(path) != null); } else if (element instanceof IPackageFragmentRoot) { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } return true; } catch (JavaModelException e) { JavaPlugin.log(e.getStatus()); // just log, no ui in validation } return false; } }; acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class }; ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { public boolean select(Viewer viewer, Object parent, Object element) { if (element instanceof IPackageFragmentRoot) { try { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } catch (JavaModelException e) { JavaPlugin.log(e.getStatus()); // just log, no ui in validation return false; } } return super.select(viewer, parent, element); } }; StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider); dialog.setValidator(validator); dialog.setComparator(new JavaElementComparator()); dialog.setTitle("Source Folder Selection"); dialog.setMessage("Choose a source folder:"); dialog.addFilter(filter); dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot())); if (dialog.open() == Window.OK) { Object element = dialog.getFirstResult(); if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; return jproject.getPackageFragmentRoot(jproject.getProject()); } else if (element instanceof IPackageFragmentRoot) { return (IPackageFragmentRoot) element; } return null; } return root; }
From source file:org.eclipse.e4.xwt.tools.ui.designer.loader.XWTVisualLoader.java
License:Open Source License
public synchronized Control loadWithOptions(URL url, Map<String, Object> options) throws Exception { IWorkspace workspace = ResourcesPlugin.getWorkspace(); IWorkspaceRoot root = workspace.getRoot(); String fileStr = url.getFile(); if (fileStr.indexOf(PathHelper.WHITE_SPACE_ASCII) != -1) { fileStr = fileStr.replace(PathHelper.WHITE_SPACE_ASCII, " "); }// w w w . ja v a 2s . co m IFile file = root.getFileForLocation(new Path(fileStr)); if (file != null) { try { // the url given an binary file of project, we need find the source file of it and the load and open. IProject project = file.getProject(); String fullPath = file.getFullPath().toString(); IJavaProject javaProject = JavaCore.create(project); String outputPath = javaProject.getOutputLocation().toString(); if (fullPath != null && outputPath != null && fullPath.startsWith(outputPath)) { String fileSourcePath = fullPath.substring(outputPath.length()); IPackageFragmentRoot[] allPackageFragmentRoots = javaProject.getAllPackageFragmentRoots(); for (IPackageFragmentRoot pRoot : allPackageFragmentRoots) { if (pRoot.getKind() == IPackageFragmentRoot.K_SOURCE) { IFolder resource = (IFolder) pRoot.getResource(); IFile sourceFile = resource.getFile(new Path(fileSourcePath)); if (sourceFile != null && sourceFile.exists()) { file = sourceFile; break; } } } } } catch (Exception e) { } } if (file != null) { IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorPart activeEditor = activePage.getActiveEditor(); try { XWTDesigner designer = (XWTDesigner) activePage.openEditor(new FileEditorInput(file), XWTDesigner.EDITOR_ID, false); XamlDocument xamlDocument = (XamlDocument) designer.getDocumentRoot(); XWTModelBuilder builder = null; if (xamlDocument == null) { builder = new XWTModelBuilder(); builder.doLoad(designer, null); xamlDocument = builder.getDiagram(); } Control control = (Control) new XWTProxy(file).load(xamlDocument.getRootElement(), options); if (builder != null) { builder.dispose(); } return control; } finally { activePage.activate(activeEditor); } } return null; }
From source file:org.eclipse.e4.xwt.tools.ui.designer.wizards.ExternalizeStringsWizard.java
License:Open Source License
private void getDefaultAccessorContents() { IFile inputFile = designer.getFile(); IContainer container = inputFile.getParent(); IJavaElement javaElement = JavaCore.create(container); IPackageFragmentRoot defaultRoot = null; if (javaElement != null && javaElement.exists()) { IJavaProject javaProject = JavaCore.create(inputFile.getProject()); try {// w w w. j a va2 s .com IPackageFragmentRoot fragmentRoot[] = javaProject.getAllPackageFragmentRoots(); for (int i = 0; i < fragmentRoot.length; i++) { if (fragmentRoot[i].getKind() == IPackageFragmentRoot.K_SOURCE) { defaultRoot = fragmentRoot[i]; for (IJavaElement element : defaultRoot.getChildren()) { if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { javaElement = element; } } break; } } } catch (JavaModelException e) { e.printStackTrace(); } } if (javaElement == null || !(javaElement instanceof IPackageFragment)) { String projectName = inputFile.getProject().getName(); externalizeStringsWizardPage.setErrorMessage("The project " + projectName + " has not source folder."); return; } externalizeStringsWizardPage.setDefaultRoot(defaultRoot); externalizeStringsWizardPage.setDefaultFolder(defaultRoot.getResource().getFullPath().toString()); externalizeStringsWizardPage.setDefaultPackage(javaElement.getElementName()); }
From source file:org.eclipse.emf.importer.java.builder.JavaEcoreBuilder.java
License:Open Source License
protected IPath analyzeProject(IProject project) throws Exception { // Walk the project looking for .java files to analyze. ////from w w w .ja v a 2 s . co m IJavaProject javaProject = JavaCore.create(project); IPackageFragmentRoot[] packageFragmentRoots = javaProject.getPackageFragmentRoots(); Set<IResource> visited = new HashSet<IResource>(); for (int i = 0; i < packageFragmentRoots.length; ++i) { if (packageFragmentRoots[i].getKind() == IPackageFragmentRoot.K_SOURCE) { traverse((IContainer) packageFragmentRoots[i].getUnderlyingResource(), visited); } } for (Map.Entry<EGenericType, EGenericType> entry : ecoreEGenericTypeToJavaEGenericTypeMap.entrySet()) { EGenericType ecoreEGenericType = entry.getKey(); EGenericType javaEGenericType = entry.getValue(); EModelElement eModelElement = null; for (EObject eObject = ecoreEGenericType.eContainer(); eObject != null; eObject = eObject .eContainer()) { if (eObject instanceof EModelElement) { eModelElement = (EModelElement) eObject; break; } } RequiredClassifierType requiredClassifierType = ecoreEGenericType.eContainer() instanceof EClass || ecoreEGenericType.eContainer() instanceof EReference ? RequiredClassifierType.CLASS : eAttributes.contains(ecoreEGenericType.eContainer()) ? RequiredClassifierType.DATA_TYPE : RequiredClassifierType.NONE; resolve(eModelElement, ecoreEGenericType, requiredClassifierType); if (javaEGenericType != null) { resolve(eModelElement, javaEGenericType, requiredClassifierType); } if (javaEGenericType != null) { resolve(eModelElement, ecoreEGenericType, javaEGenericType); } } for (Map.Entry<EGenericType, EGenericType> entry : ecoreEGenericTypeToJavaEGenericTypeMap.entrySet()) { EGenericType ecoreEGenericType = entry.getKey(); EGenericType javaEGenericType = entry.getValue(); EModelElement eModelElement = null; for (EObject eObject = ecoreEGenericType.eContainer(); eObject != null; eObject = eObject .eContainer()) { if (eObject instanceof EModelElement) { eModelElement = (EModelElement) eObject; break; } } if (javaEGenericType == null) { resolve(eModelElement, ecoreEGenericType, javaEGenericType); } used(ecoreEGenericType); } for (EStructuralFeature eStructuralFeature : eStructuralFeatures) { EGenericType eGenericType = eStructuralFeature.getEGenericType(); EClassifier eClassifier = eGenericType.getERawType(); // If we have resolved to an EClass but we have an EAttribute, we can change it to be an EReference. // if (eClassifier instanceof EClass && eStructuralFeature instanceof EAttribute) { EAttribute eAttribute = (EAttribute) eStructuralFeature; EClass container = eAttribute.getEContainingClass(); EReference eReference = EcoreFactory.eINSTANCE.createEReference(); eReference.setChangeable(eAttribute.isChangeable()); eReference.setVolatile(eAttribute.isVolatile()); eReference.setTransient(eAttribute.isTransient()); eReference.setDerived(eAttribute.isDerived()); eReference.setUnsettable(eAttribute.isUnsettable()); eReference.setLowerBound(eAttribute.getLowerBound()); eReference.setUpperBound(eAttribute.getUpperBound()); eReference.setName(eStructuralFeature.getName()); eReference.setEGenericType(eGenericType); eReference.getEAnnotations().addAll(eStructuralFeature.getEAnnotations()); container.getEStructuralFeatures() .add(container.getEStructuralFeatures().indexOf(eStructuralFeature), eReference); container.getEStructuralFeatures().remove(eStructuralFeature); eStructuralFeature = eReference; } else if (eClassifier instanceof EDataType && eStructuralFeature instanceof EReference) { EReference eReference = (EReference) eStructuralFeature; EClass container = eReference.getEContainingClass(); EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute(); eAttribute.setChangeable(eReference.isChangeable()); eAttribute.setVolatile(eReference.isVolatile()); eAttribute.setTransient(eReference.isTransient()); eAttribute.setDerived(eReference.isDerived()); eAttribute.setUnsettable(eReference.isUnsettable()); eAttribute.setLowerBound(eReference.getLowerBound()); eAttribute.setUpperBound(eReference.getUpperBound()); eAttribute.setName(eStructuralFeature.getName()); eAttribute.setEGenericType(eGenericType); eAttribute.getEAnnotations().addAll(eStructuralFeature.getEAnnotations()); container.getEStructuralFeatures().remove(eStructuralFeature); eStructuralFeature = eAttribute; eReferenceToOppositeNameMap.remove(eReference); } if (eClassifier.getEPackage() == null) { error(CodeGenEcorePlugin.INSTANCE.getString("_UI_TheTypeDoesNotResolveCorrectly_message", new Object[] { eClassifier.getInstanceTypeName() })); eGenericType = EcoreFactory.eINSTANCE.createEGenericType(); eGenericType.setEClassifier(eClassifier instanceof EClass ? EcorePackage.Literals.EOBJECT : EcorePackage.Literals.EJAVA_OBJECT); } } // Now we need to hook up opposites by finding the named feature in the type. // for (Map.Entry<EReference, String> entry : eReferenceToOppositeNameMap.entrySet()) { EReference eReference = entry.getKey(); String oppositeName = entry.getValue(); EClass eClass = (EClass) eReference.getEType(); // TODO handle class cast exception better. EReference eOpposite = (EReference) eClass.getEStructuralFeature(oppositeName); if (eOpposite == null) { error(CodeGenEcorePlugin.INSTANCE.getString("_UI_TheAttributeIsNotAMemberOf_message", new Object[] { oppositeName, eClass.getName() })); } else if (eOpposite.getEOpposite() != eReference && eOpposite.getEOpposite() != null) { error(CodeGenEcorePlugin.INSTANCE.getString("_UI_TheOppositeAlreadyHasOpposite_message", new Object[] { oppositeName, eOpposite.getEOpposite().getName(), eOpposite.getEOpposite().getEContainingClass().getName() })); } else { eReference.setEOpposite(eOpposite); eOpposite.setEOpposite(eReference); used(eOpposite); // Containers are transient by default unless explicitly annotated otherwise. // if (eOpposite.isContainment() && !transientEReferenceWithOpposite.contains(eReference)) { eReference.setTransient(true); } } } // Now we need to hook up keys by finding the named feature in the type. // for (Map.Entry<EReference, List<String>> entry : eReferenceToKeyNamesMap.entrySet()) { EReference eReference = entry.getKey(); EClass eClass = (EClass) eReference.getEType(); for (String keyName : entry.getValue()) { EStructuralFeature eKey = eClass.getEStructuralFeature(keyName); if (eKey == null) { error(CodeGenEcorePlugin.INSTANCE.getString("_UI_TheAttributeIsNotAMemberOf_message", new Object[] { keyName, eClass.getName() })); } else if (!(eKey instanceof EAttribute)) { // TODO Ignore for now. } else { eReference.getEKeys().add((EAttribute) eKey); used(eKey); } } } // Clean up the temporary container annotations for holding map entry classes until they are for sure needed. // for (EPackage ePackage : packageNameToEPackageMap.values()) { EAnnotation eAnnotation = ePackage.getEAnnotation(MAP_ENTRY_CLASS_CONTAINER_ANNOTATION_SOURCE); if (eAnnotation != null) { EcoreUtil.remove(eAnnotation); } } // Now we should sort. // for (Map.Entry<EPackage, Map<Object, Integer>> entry : ePackageToOrderingMap.entrySet()) { EPackage ePackage = entry.getKey(); Map<Object, Integer> nameToIDMap = entry.getValue(); sort(ePackage.getEClassifiers(), nameToIDMap); for (EClassifier eClassifier : ePackage.getEClassifiers()) { if (eClassifier instanceof EClass) { EClass eClass = (EClass) eClassifier; sort(eClass.getEStructuralFeatures(), nameToIDMap); } } } // Find the fragment root so that we can generate to the right location (by default). // IPath targetFragmentRoot = project.getFullPath(); for (int i = 0; i < packageFragmentRoots.length; ++i) { if (packageFragmentRoots[i].getKind() == IPackageFragmentRoot.K_SOURCE) { IPath path = packageFragmentRoots[i].getUnderlyingResource().getFullPath(); if (targetFragmentRoot.isPrefixOf(path)) { targetFragmentRoot = path; break; } } } facadeHelper.reset(); return targetFragmentRoot; }
From source file:org.eclipse.fx.ide.css.validation.CssDslJavaValidator.java
License:Open Source License
@SuppressWarnings("restriction") @Check/*w ww.j a v a 2 s.c om*/ public void checkDeclaration(css_declaration dec) { // System.err.println("CHECK DECL " + dec); css_property property = dec.getProperty(); // Only validate files who are: // * in a plug-in project // - when css is part of build.properties bin.includes // - when css is part of the source-folder IFile file = Utils.getFile(dec.eResource()); //TODO We should add a service possibility to contribute these lookups boolean validate = false; try { if (file.getProject().hasNature("org.eclipse.pde.PluginNature")) { //$NON-NLS-1$ // validate = true; IFile properties = PDEProject.getBuildProperties(file.getProject()); Properties p = new Properties(); try (InputStream in = properties.getContents()) { p.load(in); String includes = p.getProperty("bin.includes"); //$NON-NLS-1$ if (includes != null) { IPath path = file.getProjectRelativePath(); for (String s : includes.split(",")) { //$NON-NLS-1$ if (path.toString().startsWith(s.trim())) { validate = true; break; } } } } catch (IOException e) { e.printStackTrace(); } } if (!validate && file.getProject().hasNature("org.eclipse.jdt.core.javanature")) { //$NON-NLS-1$ IJavaProject jp = JavaCore.create(file.getProject()); for (IPackageFragmentRoot r : jp.getPackageFragmentRoots()) { if (r.getKind() == IPackageFragmentRoot.K_SOURCE) { if (file.getProjectRelativePath().toString() .startsWith(r.getPath().removeFirstSegments(1).toString())) { validate = true; break; } } } } } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (!validate) { return; } if (dec.eContainer() instanceof font_face) { if ("font-family".equals(property.getName())) { if (dec.getValueTokens().stream().filter(this::filterWS).count() != 1) { error("Font family has to define a name", dec, CssDslPackage.Literals.CSS_DECLARATION__VALUE_TOKENS); } else { if (!(dec.getValueTokens().stream().filter(this::filterWS).findFirst() .get() instanceof IdentifierTok)) { CssTok tok = dec.getValueTokens().stream().filter(this::filterWS).findFirst().get(); error("Invalid font family name", dec, CssDslPackage.Literals.CSS_DECLARATION__VALUE_TOKENS, dec.getValueTokens().indexOf(tok)); } } } else if ("src".equals(property.getName())) { if (dec.getValueTokens().stream().filter(this::filterWS).count() == 0) { error("At least one URL is required", dec, CssDslPackage.Literals.CSS_DECLARATION__VALUE_TOKENS); } else { dec.getValueTokens().stream().filter(this::filterWS).filter(this::filterSymbol) .filter((t) -> !(t instanceof UrlTok)).forEach((t) -> { error("Only url-values are allowed", dec, CssDslPackage.Literals.CSS_DECLARATION__VALUE_TOKENS, dec.getValueTokens().indexOf(t)); }); } } else if ("font-stretch".equals(property.getName())) { } else if ("font-style".equals(property.getName())) { } else if ("font-weight".equals(property.getName())) { } else if ("unicode-range".equals(property.getName())) { } else { warning("Unknown property: \"" + property.getName() + "\"", property, CssDslPackage.Literals.CSS_PROPERTY__NAME); } return; } List<Proposal> properties = ext.getPropertyProposalsForSelector(file, dec, null); //extension.getAllProperties(uri); boolean known = false; for (Proposal p : properties) { if (p.getProposal().equals(property.getName())) { known = true; break; } } if (!known) { ICompositeNode node = NodeModelUtils.getNode(dec.getProperty()); boolean suppress = node.getText().contains("@SuppressWarning"); if (!suppress && !PREDEFINED_VAR_PROPS.contains(property.getName()) && !property.getName().startsWith("-var")) { //$NON-NLS-1$ warning("Unknown property: \"" + property.getName() + "\"", property, CssDslPackage.Literals.CSS_PROPERTY__NAME); } } else { ruleset rs = (ruleset) dec.eContainer(); List<selector> selectors = rs.getSelectors(); // Set<CssProperty> selectorProps = new HashSet<>(); // for (selector selector : selectors) { // selectorProps.addAll(extension.getPropertiesForSelector(uri, selector)); // } List<Proposal> selectorProps = ext.getPropertyProposalsForSelector(Utils.getFile(dec.eResource()), dec, selectors); if (selectorProps.size() > 0) { boolean supported = false; for (Proposal p : selectorProps) { if (p.getProposal().equals(property.getName())) { supported = true; break; } } if (!supported) { ICompositeNode node = NodeModelUtils.getNode(dec.getProperty()); boolean suppress = node.getText().contains("@SuppressWarning"); //$NON-NLS-1$ if (!PREDEFINED_VAR_PROPS.contains(property.getName()) && !property.getName().startsWith("-var")) { warning("\"" + property.getName() + "\" is not supported by the given selectors", CssDslPackage.Literals.CSS_DECLARATION__PROPERTY); } } } // List<ValidationResult> result = extension.validateProperty(uri, null, property.getName(), tokens); // System.err.println(result); // // System.err.println("validation of " + property.getName()); // if (!result.isEmpty()) { // for (ValidationResult r : result) { // if (r.status == ValidationStatus.ERROR) { // if (r.object != null) { // if (r.object instanceof FuncTok) { // FuncTok f = (FuncTok) r.object; // error(r.message, f, CssDslPackage.Literals.FUNC_TOK__NAME, -1); // } // else { // error(r.message, r.object, null, 0); // } // } // else { // error(r.message, dec, CssDslPackage.Literals.CSS_DECLARATION__VALUE_TOKENS, r.index); // } // } // } // } } }