List of usage examples for org.eclipse.jface.operation ModalContext checkCanceled
public static void checkCanceled(IProgressMonitor monitor) throws InterruptedException
InterruptedException
if it has been canceled. From source file:eu.numberfour.n4js.ui.export.nfar.NFARExportOperation.java
License:Open Source License
/** * @param hasCompiledFiles//w w w . java 2s. c om * TODO this has to be evaluated */ private void exportResource(URI exportedResource, boolean hasCompiledFiles) throws InterruptedException { Path path = new Path(exportedResource.toPlatformString(true)); IFile exportedFile = workspace.getRoot().getFile(path); if (!exportedFile.isAccessible()) { return; } URI localPath = exportedResource.deresolve(rootLocation); String nameInZip = localPath.toString(); monitor.subTask(nameInZip); try { exporter.writeFile(exportedFile.getContents(), exportedFile.getLocalTimeStamp(), nameInZip); // todo export compiled files } catch (IOException e) { addError(NLS.bind(DataTransferMessages.DataTransfer_errorExporting, nameInZip, e.getMessage()), e); } catch (CoreException e) { addError(NLS.bind(DataTransferMessages.DataTransfer_errorExporting, nameInZip, e.getMessage()), e); } monitor.worked(1); ModalContext.checkCanceled(monitor); }
From source file:ext.org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.java
License:Open Source License
/** * Exports the passed resource to the JAR file * * @param element the resource or JavaElement to export * @param progressMonitor the progress monitor * @throws InterruptedException thrown on cancel *///from w w w .j a v a 2 s . co m private void exportElement(Object element, IProgressMonitor progressMonitor) throws InterruptedException { int leadSegmentsToRemove = 1; IPackageFragmentRoot pkgRoot = null; boolean isInJavaProject = false; IResource resource = null; ITypeRoot typeRootElement = null; IJavaProject jProject = null; if (element instanceof IJavaElement) { isInJavaProject = true; IJavaElement je = (IJavaElement) element; if (!(je instanceof ITypeRoot)) { exportJavaElement(progressMonitor, je); return; } typeRootElement = (ITypeRoot) je; jProject = typeRootElement.getJavaProject(); pkgRoot = JavaModelUtil.getPackageFragmentRoot(je); resource = typeRootElement.getResource(); } else if (element instanceof IResource) { resource = (IResource) element; } else { return; } if (!resource.isAccessible()) { addWarning(Messages.format(JarPackagerMessages.JarFileExportOperation_resourceNotFound, BasicElementLabels.getPathLabel(resource.getFullPath(), false)), null); return; } if (resource.getType() == IResource.FILE) { if (!isInJavaProject) { // check if it's a Java resource try { isInJavaProject = resource.getProject().hasNature(JavaCore.NATURE_ID); } catch (CoreException ex) { addWarning( Messages.format(JarPackagerMessages.JarFileExportOperation_projectNatureNotDeterminable, BasicElementLabels.getPathLabel(resource.getFullPath(), false)), ex); return; } if (isInJavaProject) { IJavaElement je = JavaCore.create(resource); if (je instanceof ITypeRoot && je.exists()) { exportElement(je, progressMonitor); return; } jProject = JavaCore.create(resource.getProject()); try { IPackageFragment pkgFragment = jProject .findPackageFragment(resource.getFullPath().removeLastSegments(1)); if (pkgFragment != null) pkgRoot = JavaModelUtil.getPackageFragmentRoot(pkgFragment); else pkgRoot = findPackageFragmentRoot(jProject, resource.getFullPath().removeLastSegments(1)); } catch (JavaModelException ex) { addWarning(Messages.format( JarPackagerMessages.JarFileExportOperation_javaPackageNotDeterminable, BasicElementLabels.getPathLabel(resource.getFullPath(), false)), ex); return; } } } if (pkgRoot != null && jProject != null) { leadSegmentsToRemove = pkgRoot.getPath().segmentCount(); boolean isOnBuildPath; isOnBuildPath = jProject.isOnClasspath(resource); if (!isOnBuildPath || (mustUseSourceFolderHierarchy() && !pkgRoot.getElementName().equals(IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH))) leadSegmentsToRemove--; } IPath destinationPath = resource.getFullPath().removeFirstSegments(leadSegmentsToRemove); if (typeRootElement != null) { exportClassFiles(progressMonitor, typeRootElement, destinationPath); } exportResource(progressMonitor, pkgRoot, isInJavaProject, resource, destinationPath); progressMonitor.worked(1); ModalContext.checkCanceled(progressMonitor); } else exportContainer(progressMonitor, (IContainer) resource); }
From source file:ext.org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.java
License:Open Source License
private void exportExternalClassFolderElement(IJavaElement javaElement, IPath classFolderPath, IProgressMonitor progressMonitor) throws JavaModelException, InterruptedException { if (javaElement instanceof IClassFile) { IClassFile classFile = (IClassFile) javaElement; IPath path = classFile.getPath(); IPath destination = path.removeFirstSegments(classFolderPath.segmentCount()).setDevice(null); try {/*from w ww . j a v a 2 s . com*/ ((IJarBuilderExtension) fJarBuilder).writeFile(path.toFile(), destination); } catch (CoreException e) { handleCoreExceptionOnExport(e); } finally { progressMonitor.worked(1); ModalContext.checkCanceled(progressMonitor); } } else if (javaElement instanceof IPackageFragment) { IJavaElement[] children = ((IPackageFragment) javaElement).getChildren(); for (int i = 0; i < children.length; i++) { exportExternalClassFolderElement(children[i], classFolderPath, progressMonitor); } } }
From source file:ext.org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.java
License:Open Source License
private void exportResource(IProgressMonitor progressMonitor, IResource resource, int leadingSegmentsToRemove) throws InterruptedException { if (resource instanceof IContainer) { IContainer container = (IContainer) resource; IResource[] children;// w w w. j a va2 s . co m try { children = container.members(); } catch (CoreException e) { // this should never happen because an #isAccessible check is done before #members is invoked addWarning(Messages.format(JarPackagerMessages.JarFileExportOperation_errorDuringExport, BasicElementLabels.getPathLabel(container.getFullPath(), false)), e); return; } for (int i = 0; i < children.length; i++) exportResource(progressMonitor, children[i], leadingSegmentsToRemove); } else if (resource instanceof IFile) { try { IPath destinationPath = resource.getFullPath().removeFirstSegments(leadingSegmentsToRemove); progressMonitor.subTask(Messages.format(JarPackagerMessages.JarFileExportOperation_exporting, BasicElementLabels.getPathLabel(destinationPath, false))); fJarBuilder.writeFile((IFile) resource, destinationPath); } catch (CoreException ex) { handleCoreExceptionOnExport(ex); } finally { progressMonitor.worked(1); ModalContext.checkCanceled(progressMonitor); } } }
From source file:fr.inria.linuxtools.internal.tmf.ui.project.wizards.tracepkg.importexport.TracePackageExportOperation.java
License:Open Source License
/** * Run the operation. The status (result) of the operation can be obtained * with {@link #getStatus}/*from w ww . j a v a 2s. c o m*/ * * @param progressMonitor * the progress monitor to use to display progress and receive * requests for cancellation */ @Override public void run(IProgressMonitor progressMonitor) { try { int totalWork = getNbCheckedElements(fTraceExportElements) * 2; progressMonitor.beginTask(Messages.TracePackageExportOperation_GeneratingPackage, totalWork); fExportFolder = createExportFolder(progressMonitor); Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); Element createElement = doc.createElement(ITracePackageConstants.TMF_EXPORT_ELEMENT); Node tmfNode = doc.appendChild(createElement); for (TracePackageTraceElement tracePackageElement : fTraceExportElements) { if (!isFilesChecked(tracePackageElement)) { continue; } exportTrace(progressMonitor, tmfNode, tracePackageElement); } Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); //$NON-NLS-1$ //$NON-NLS-2$ DOMSource source = new DOMSource(doc); StringWriter buffer = new StringWriter(); StreamResult result = new StreamResult(buffer); transformer.transform(source, result); String content = buffer.getBuffer().toString(); ModalContext.checkCanceled(progressMonitor); exportManifest(content); setStatus(exportToArchive(progressMonitor, totalWork)); fExportFolder.delete(true, new SubProgressMonitor(progressMonitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK)); progressMonitor.done(); } catch (Exception e) { if (e instanceof InterruptedException) { setStatus(Status.CANCEL_STATUS); } else { setStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, fr.inria.linuxtools.internal.tmf.ui.project.wizards.tracepkg.Messages.TracePackage_ErrorOperation, e)); } } }
From source file:fr.inria.linuxtools.internal.tmf.ui.project.wizards.tracepkg.importexport.TracePackageExportOperation.java
License:Open Source License
private void exportTrace(IProgressMonitor monitor, Node tmfNode, TracePackageTraceElement tracePackageElement) throws InterruptedException, CoreException { TmfTraceElement traceElement = tracePackageElement.getTraceElement(); Element traceXmlElement = tmfNode.getOwnerDocument().createElement(ITracePackageConstants.TRACE_ELEMENT); traceXmlElement.setAttribute(ITracePackageConstants.TRACE_NAME_ATTRIB, traceElement.getResource().getName()); traceXmlElement.setAttribute(ITracePackageConstants.TRACE_TYPE_ATTRIB, traceElement.getTraceType()); Node traceNode = tmfNode.appendChild(traceXmlElement); for (TracePackageElement element : tracePackageElement.getChildren()) { ModalContext.checkCanceled(monitor); if (!element.isChecked()) { continue; }//from w ww .j av a 2 s . co m if (element instanceof TracePackageSupplFilesElement) { exportSupplementaryFiles(monitor, traceNode, traceElement, (TracePackageSupplFilesElement) element); } else if (element instanceof TracePackageBookmarkElement) { exportBookmarks(monitor, traceNode, (TracePackageBookmarkElement) element); } else if (element instanceof TracePackageFilesElement) { exportTraceFiles(monitor, traceNode, (TracePackageFilesElement) element); } monitor.worked(1); } }
From source file:fr.inria.linuxtools.internal.tmf.ui.project.wizards.tracepkg.importexport.TracePackageExportOperation.java
License:Open Source License
private void exportSupplementaryFiles(IProgressMonitor monitor, Node traceNode, TmfTraceElement traceElement, TracePackageSupplFilesElement element) throws InterruptedException, CoreException { Document doc = traceNode.getOwnerDocument(); if (element.getChildren().length > 0) { IPath projectPath = traceElement.getProject().getPath(); for (TracePackageElement child : element.getChildren()) { TracePackageSupplFileElement supplFile = (TracePackageSupplFileElement) child; ModalContext.checkCanceled(monitor); IResource res = supplFile.getResource(); // project/.tracing/A/B/statistics.ht -> .tracing/A/B/statistics.ht IPath relativeToExportFolder = res.getFullPath().makeRelativeTo(projectPath); // project/.traceExport/.tracing/A/B IFolder folder = fExportFolder.getFolder(relativeToExportFolder.removeLastSegments(1)); TraceUtils.createFolder(folder, new SubProgressMonitor(monitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK)); res.refreshLocal(0,/*from www .j a va2 s . c om*/ new SubProgressMonitor(monitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK)); createExportResource(folder, res); Element suppFileElement = doc.createElement(ITracePackageConstants.SUPPLEMENTARY_FILE_ELEMENT); suppFileElement.setAttribute(ITracePackageConstants.SUPPLEMENTARY_FILE_NAME_ATTRIB, relativeToExportFolder.toString()); traceNode.appendChild(suppFileElement); } IFolder suppFilesFolder = fExportFolder.getFolder(TmfCommonConstants.TRACE_SUPPLEMENTARY_FOLDER_NAME); fResources.add(suppFilesFolder); } }
From source file:fr.inria.linuxtools.internal.tmf.ui.project.wizards.tracepkg.importexport.TracePackageExportOperation.java
License:Open Source License
private static void exportBookmarks(IProgressMonitor monitor, Node traceNode, TracePackageBookmarkElement element) throws CoreException, InterruptedException { Document doc = traceNode.getOwnerDocument(); IFile bookmarksFile = ((TracePackageTraceElement) element.getParent()).getTraceElement().getBookmarksFile(); if (bookmarksFile != null && bookmarksFile.exists()) { IMarker[] findMarkers = bookmarksFile.findMarkers(IMarker.BOOKMARK, false, IResource.DEPTH_ZERO); if (findMarkers.length > 0) { Element bookmarksXmlElement = doc.createElement(ITracePackageConstants.BOOKMARKS_ELEMENT); Node bookmarksNode = traceNode.appendChild(bookmarksXmlElement); for (IMarker marker : findMarkers) { ModalContext.checkCanceled(monitor); Element singleBookmarkXmlElement = doc.createElement(ITracePackageConstants.BOOKMARK_ELEMENT); for (String key : marker.getAttributes().keySet()) { singleBookmarkXmlElement.setAttribute(key, marker.getAttribute(key).toString()); }//from w ww . ja va 2 s . co m bookmarksNode.appendChild(singleBookmarkXmlElement); } } } }
From source file:fr.inria.linuxtools.internal.tmf.ui.project.wizards.tracepkg.importexport.TracePackageExtractManifestOperation.java
License:Open Source License
/** * Run extract the manifest operation. The status (result) of the operation * can be obtained with {@link #getStatus} * * @param progressMonitor/*from w ww. jav a 2s . c o m*/ * the progress monitor to use to display progress and receive * requests for cancellation */ @Override public void run(IProgressMonitor progressMonitor) { TracePackageElement[] elements = null; try { progressMonitor.worked(1); ArchiveFile archiveFile = getSpecifiedArchiveFile(); progressMonitor.worked(1); if (archiveFile == null) { setStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TracePackageExtractManifestOperation_InvalidFormat)); return; } Enumeration<?> entries = archiveFile.entries(); boolean found = false; while (entries.hasMoreElements()) { ModalContext.checkCanceled(progressMonitor); ArchiveEntry entry = (ArchiveEntry) entries.nextElement(); IPath p = new Path(entry.getName()); //Remove project name p = p.removeFirstSegments(1); if (entry.getName().endsWith(ITracePackageConstants.MANIFEST_FILENAME)) { found = true; InputStream inputStream = archiveFile.getInputStream(entry); ManifestReader.validateManifest(inputStream); inputStream = archiveFile.getInputStream(entry); elements = ManifestReader.loadElementsFromManifest(inputStream); break; } progressMonitor.worked(1); } if (found) { setStatus(Status.OK_STATUS); } else { elements = generateElementsFromArchive(); if (elements.length > 0) { setStatus(Status.OK_STATUS); } else { setStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, MessageFormat.format( Messages.TracePackageExtractManifestOperation_ErrorManifestNotFound, ITracePackageConstants.MANIFEST_FILENAME))); } } setResultElements(elements); } catch (InterruptedException e) { setStatus(Status.CANCEL_STATUS); } catch (Exception e) { setStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TracePackageExtractManifestOperation_ErrorReadingManifest, e)); } }
From source file:fr.inria.linuxtools.internal.tmf.ui.project.wizards.tracepkg.importexport.TracePackageImportOperation.java
License:Open Source License
private void doRun(IProgressMonitor progressMonitor) { try {//from w ww. ja v a2 s.c o m setStatus(deleteExistingTraces(progressMonitor)); if (getStatus().getSeverity() != IStatus.OK) { return; } TracePackageFilesElement traceFilesElement = null; for (TracePackageElement packageElement : fImportTraceElements) { TracePackageTraceElement traceElement = (TracePackageTraceElement) packageElement; if (!isFilesChecked(packageElement)) { continue; } TracePackageElement[] children = traceElement.getChildren(); for (TracePackageElement element : children) { ModalContext.checkCanceled(progressMonitor); if (element instanceof TracePackageFilesElement) { traceFilesElement = (TracePackageFilesElement) element; setStatus(importTraceFiles(traceFilesElement, traceElement, progressMonitor)); } else if (element instanceof TracePackageSupplFilesElement) { TracePackageSupplFilesElement suppFilesElement = (TracePackageSupplFilesElement) element; setStatus(importSupplFiles(suppFilesElement, traceElement, progressMonitor)); } if (getStatus().getSeverity() != IStatus.OK) { return; } } } } catch (InterruptedException e) { setStatus(Status.CANCEL_STATUS); } }