/** Synchronize on the tern project load, tern script pats with JSDT "Include Path". */ @Override public void handleEvent(IIDETernProject ternProject, LifecycleEventType eventType) { if (eventType != LifecycleEventType.onLoadAfter) { return; } // the given tern project is loading... IProject project = ternProject.getProject(); if (JavaProject.hasJavaNature(project)) { // The project is a JSDT project. IJavaScriptProject jsProject = JavaScriptCore.create(project); // Synchronize tern script paths with JSDT "Include Path" synchTernScriptPaths(jsProject, ternProject); } }
private CPListElement[] openProjectDialog(CPListElement elem) { try { ArrayList selectable = new ArrayList(); selectable.addAll(Arrays.asList(fCurrJProject.getJavaScriptModel().getJavaScriptProjects())); selectable.remove(fCurrJProject); List elements = fProjectsList.getElements(); for (int i = 0; i < elements.size(); i++) { CPListElement curr = (CPListElement) elements.get(0); IJavaScriptProject proj = (IJavaScriptProject) JavaScriptCore.create(curr.getResource()); selectable.remove(proj); } Object[] selectArr = selectable.toArray(); new JavaScriptElementComparator().sort(null, selectArr); ListSelectionDialog dialog = new ListSelectionDialog( getShell(), Arrays.asList(selectArr), new ArrayContentProvider(), new JavaUILabelProvider(), NewWizardMessages.ProjectsWorkbookPage_chooseProjects_message); dialog.setTitle(NewWizardMessages.ProjectsWorkbookPage_chooseProjects_title); dialog.setHelpAvailable(false); if (dialog.open() == Window.OK) { Object[] result = dialog.getResult(); CPListElement[] cpElements = new CPListElement[result.length]; for (int i = 0; i < result.length; i++) { IJavaScriptProject curr = (IJavaScriptProject) result[i]; cpElements[i] = new CPListElement( fCurrJProject, IIncludePathEntry.CPE_PROJECT, curr.getPath(), curr.getResource()); } return cpElements; } } catch (JavaScriptModelException e) { return null; } return null; }
/** * Returns the parent for the element. * * <p>Note: This method will return a working copy if the parent is a working copy. The super * class implementation returns the original element instead. */ protected Object internalGetParent(Object element) { if (element instanceof IJavaScriptProject) { return ((IJavaScriptProject) element).getJavaScriptModel(); } // try to map resources to the containing package fragment if (element instanceof IResource) { IResource parent = ((IResource) element).getParent(); Object jParent = JavaScriptCore.create(parent); if (jParent != null) return jParent; return parent; } // for package fragments that are contained in a project package fragment // we have to skip the package fragment root as the parent. if (element instanceof IPackageFragment) { IPackageFragmentRoot parent = (IPackageFragmentRoot) ((IPackageFragment) element).getParent(); return skipProjectPackageFragmentRoot(parent); } if (element instanceof IJavaScriptElement) return ((IJavaScriptElement) element).getParent(); return null; }
public JavaBrowsingContentProvider(boolean provideMembers, JavaBrowsingPart browsingPart) { super(provideMembers); fBrowsingPart = browsingPart; fViewer = fBrowsingPart.getViewer(); JavaScriptCore.addElementChangedListener(this); }
/* (non-Javadoc) * Method declared on IContentProvider. */ public void dispose() { super.dispose(); JavaScriptCore.removeElementChangedListener(this); }
/* (non-Javadoc) * @see org.eclipse.ui.texteditor.IMarkerUpdater#updateMarker(org.eclipse.core.resources.IMarker, org.eclipse.jface.text.IDocument, org.eclipse.jface.text.Position) */ public boolean updateMarker(IMarker marker, IDocument document, Position position) { if (position.isDeleted()) { return false; } IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); IBreakpoint breakpoint = manager.getBreakpoint(marker); if (breakpoint == null) { return false; } IFile file = (IFile) marker.getResource(); if (JavaScriptCore.isJavaScriptLikeFileName(file.getName())) { IJavaScriptUnit unit = JavaScriptCore.createCompilationUnitFrom(file); if (unit == null) { return false; } JavaScriptUnit jsunit = JavaScriptPlugin.getDefault().getASTProvider().getAST(unit, ASTProvider.WAIT_YES, null); try { BreakpointLocationFinder finder = new BreakpointLocationFinder( jsunit, document.getLineOfOffset(position.getOffset()) + 1, true); jsunit.accept(finder); if (finder.getLocation() == BreakpointLocationFinder.UNKNOWN) { return false; } int line = finder.getLineNumber(); if (MarkerUtilities.getLineNumber(marker) == line) { // if there exists a breakpoint on the line remove this one if (isLineBreakpoint(marker)) { ensureRanges(document, marker, line); return lineBreakpointExists( marker.getResource(), ((IJavaScriptLineBreakpoint) breakpoint).getScriptPath(), line, marker, true) == null; } return true; } if (isLineBreakpoint(marker) & line == -1) { return false; } if (lineBreakpointExists( marker.getResource(), ((IJavaScriptLineBreakpoint) breakpoint).getScriptPath(), line, marker, false) != null) { return false; } MarkerUtilities.setLineNumber(marker, line); if (isLineBreakpoint(marker)) { ensureRanges(document, marker, line); } return true; } catch (BadLocationException ble) { JavaScriptDebugUIPlugin.log(ble); } catch (CoreException e) { JavaScriptDebugUIPlugin.log(e); } } return true; }
/* (non-Javadoc) * @see org.eclipse.wst.jsdt.internal.ui.wizards.NewElementWizard#getCreatedElement() */ public IJavaScriptElement getCreatedElement() { return JavaScriptCore.create(fFirstPage.getProjectHandle()); }
/* package */ static UserLibrary createFromString(Reader reader) throws IOException { Element cpElement; try { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); cpElement = parser.parse(new InputSource(reader)).getDocumentElement(); } catch (SAXException e) { throw new IOException(Messages.file_badFormat); } catch (ParserConfigurationException e) { throw new IOException(Messages.file_badFormat); } finally { reader.close(); } if (!cpElement.getNodeName().equalsIgnoreCase(TAG_USERLIBRARY)) { throw new IOException(Messages.file_badFormat); } // String version= cpElement.getAttribute(TAG_VERSION); // in case we update the format: add code to read older versions boolean isSystem = Boolean.valueOf(cpElement.getAttribute(TAG_SYSTEMLIBRARY)).booleanValue(); NodeList list = cpElement.getChildNodes(); int length = list.getLength(); ArrayList res = new ArrayList(length); for (int i = 0; i < length; ++i) { Node node = list.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; if (element.getNodeName().equals(TAG_ARCHIVE)) { String path = element.getAttribute(TAG_PATH); IPath sourceAttach = element.hasAttribute(TAG_SOURCEATTACHMENT) ? new Path(element.getAttribute(TAG_SOURCEATTACHMENT)) : null; IPath sourceAttachRoot = element.hasAttribute(TAG_SOURCEATTACHMENTROOT) ? new Path(element.getAttribute(TAG_SOURCEATTACHMENTROOT)) : null; NodeList children = element.getElementsByTagName("*"); // $NON-NLS-1$ boolean[] foundChildren = new boolean[children.getLength()]; NodeList attributeList = ClasspathEntry.getChildAttributes( ClasspathEntry.TAG_ATTRIBUTES, children, foundChildren); IIncludePathAttribute[] extraAttributes = ClasspathEntry.decodeExtraAttributes(attributeList); attributeList = ClasspathEntry.getChildAttributes( ClasspathEntry.TAG_ACCESS_RULES, children, foundChildren); IAccessRule[] accessRules = ClasspathEntry.decodeAccessRules(attributeList); IIncludePathEntry entry = JavaScriptCore.newLibraryEntry( new Path(path), sourceAttach, sourceAttachRoot, accessRules, extraAttributes, false /*not exported*/); res.add(entry); } } } IIncludePathEntry[] entries = (IIncludePathEntry[]) res.toArray(new IIncludePathEntry[res.size()]); return new UserLibrary(entries, isSystem); }
public void shutdown() { JavaScriptCore.removeElementChangedListener(this); TernCorePlugin.removeTernProjectLifeCycleListener(this); }
public void startup() { JavaScriptCore.addElementChangedListener(this, ElementChangedEvent.POST_CHANGE); TernCorePlugin.addTernProjectLifeCycleListener(this); }