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:org.eclipse.tracecompass.internal.tmf.ui.project.operations.SelectTracesOperation.java
License:Open Source License
@Override public void run(IProgressMonitor progressMonitor) { TmfExperimentElement experimentElement = fExperimentElement; if (experimentElement == null) { return;/*from w w w .j av a 2s. c om*/ } // Check if operation was cancelled. boolean changed = false; Map<String, TmfTraceElement> previousTraces = new HashMap<>(); if (fPreviousTraces != null) { previousTraces = fPreviousTraces; } List<TmfTraceElement> elements = fTraceElements; if (elements == null) { if ((fParentTraceFolder != null) && (fResources != null)) { elements = fParentTraceFolder.getTraceElements(fResources); } else { return; } } Set<String> keys = previousTraces.keySet(); SubMonitor subMonitor = SubMonitor.convert(progressMonitor, elements.size() + keys.size()); // Add the selected traces to the experiment try { for (TmfTraceElement trace : elements) { ModalContext.checkCanceled(progressMonitor); String name = trace.getElementPath(); if (keys.contains(name)) { subMonitor.setTaskName( Messages.SelectTracesWizardPage_TraceRemovalTask + " " + trace.getElementPath()); //$NON-NLS-1$ keys.remove(name); } else { subMonitor.setTaskName( Messages.SelectTracesWizardPage_TraceSelectionTask + " " + trace.getElementPath()); //$NON-NLS-1$ experimentElement.addTrace(trace, false); changed = true; } subMonitor.worked(1); } // Remove traces that were unchecked (thus left in fPreviousTraces) for (Map.Entry<String, TmfTraceElement> entry : previousTraces.entrySet()) { ModalContext.checkCanceled(progressMonitor); TmfTraceElement trace = entry.getValue(); subMonitor.setTaskName( Messages.SelectTracesWizardPage_TraceRemovalTask + " " + trace.getElementPath()); //$NON-NLS-1$ try { experimentElement.removeTrace(trace); } catch (CoreException e) { Activator.getDefault().logError( Messages.SelectTracesWizardPage_SelectionError + " " + experimentElement.getName(), e); //$NON-NLS-1$ } changed = true; subMonitor.worked(1); } if (changed) { Display.getDefault().syncExec(new Runnable() { @Override public void run() { experimentElement.closeEditors(); } }); experimentElement.deleteSupplementaryResources(); } setStatus(Status.OK_STATUS); } catch (InterruptedException e) { setStatus(Status.CANCEL_STATUS); } catch (Exception e) { Activator.getDefault().logError(Messages.SelectTracesWizardPage_SelectionError, e); setStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.SelectTracesWizardPage_SelectionError, e)); } }
From source file:org.eclipse.tracecompass.internal.tmf.ui.project.wizards.importtrace.TraceValidateAndImportOperation.java
License:Open Source License
@Override public void run(IProgressMonitor progressMonitor) { try {/*from w w w. jav a2s . c o m*/ final List<TraceFileSystemElement> selectedFileSystemElements = fSelectedFileSystemElements; // List fileSystemElements will be filled using the // passThroughFilter SubMonitor subMonitor = SubMonitor.convert(progressMonitor, 1); // Check if operation was cancelled. ModalContext.checkCanceled(subMonitor); // Temporary directory to contain any extracted files IFolder destTempFolder = fTraceFolderElement.getProject().getResource() .getFolder(TRACE_IMPORT_TEMP_FOLDER); if (destTempFolder.exists()) { SubMonitor monitor = subMonitor.newChild(1); destTempFolder.delete(true, monitor); } SubMonitor monitor = subMonitor.newChild(1); destTempFolder.create(IResource.HIDDEN, true, monitor); subMonitor = SubMonitor.convert(progressMonitor, 2); String baseSourceLocation = null; if (fImportFromArchive) { // When importing from archive, we first extract the // *selected* files to a temporary folder then create new // TraceFileSystemElements SubMonitor archiveMonitor = SubMonitor.convert(subMonitor.newChild(1), 2); // Extract selected files from source archive to temporary // folder extractArchiveContent(selectedFileSystemElements.iterator(), destTempFolder, archiveMonitor.newChild(1)); if (!selectedFileSystemElements.isEmpty()) { // Even if the files were extracted to temporary folder, they // have to look like they originate from the source archive baseSourceLocation = getRootElement(selectedFileSystemElements.get(0)).getSourceLocation(); // Extract additional archives contained in the extracted files // (archives in archives) List<TraceFileSystemElement> tempFolderFileSystemElements = createElementsForFolder( destTempFolder); extractAllArchiveFiles(tempFolderFileSystemElements, destTempFolder, destTempFolder.getLocation(), archiveMonitor.newChild(1)); } } else { SubMonitor directoryMonitor = SubMonitor.convert(subMonitor.newChild(1), 2); // Import selected files, excluding archives (done in a later step) importFileSystemElements(directoryMonitor.newChild(1), selectedFileSystemElements); // Extract archives in selected files (if any) to temporary folder extractAllArchiveFiles(selectedFileSystemElements, destTempFolder, fBaseSourceContainerPath, directoryMonitor.newChild(1)); // Even if the files were extracted to temporary folder, they // have to look like they originate from the source folder baseSourceLocation = URIUtil .toUnencodedString(fBaseSourceContainerPath.toFile().getCanonicalFile().toURI()); } /* * Import extracted files that are now in the temporary folder, if any */ // We need to update the source container path because the // "preserve folder structure" option would create the // wrong trace folders otherwise. fBaseSourceContainerPath = destTempFolder.getLocation(); List<TraceFileSystemElement> tempFolderFileSystemElements = createElementsForFolder(destTempFolder); if (!tempFolderFileSystemElements.isEmpty()) { calculateSourceLocations(tempFolderFileSystemElements, baseSourceLocation); // Never import extracted files as links, they would link to the // temporary directory that will be deleted fImportOptionFlags = fImportOptionFlags & ~ImportTraceWizardPage.OPTION_CREATE_LINKS_IN_WORKSPACE; SubMonitor importTempMonitor = subMonitor.newChild(1); importFileSystemElements(importTempMonitor, tempFolderFileSystemElements); } if (destTempFolder.exists()) { destTempFolder.delete(true, progressMonitor); } setStatus(Status.OK_STATUS); } catch (InterruptedException e) { setStatus(Status.CANCEL_STATUS); } catch (Exception e) { String errorMessage = Messages.ImportTraceWizard_ImportProblem + ": " + //$NON-NLS-1$ (fCurrentPath != null ? fCurrentPath : ""); //$NON-NLS-1$ Activator.getDefault().logError(errorMessage, e); setStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, errorMessage, e)); } }
From source file:org.eclipse.tracecompass.internal.tmf.ui.project.wizards.importtrace.TraceValidateAndImportOperation.java
License:Open Source License
/** * Import a collection of file system elements into the workspace. *///w w w . j a va 2 s. c om private void importFileSystemElements(IProgressMonitor monitor, List<TraceFileSystemElement> fileSystemElements) throws InterruptedException, TmfTraceImportException, CoreException, InvocationTargetException { SubMonitor subMonitor = SubMonitor.convert(monitor, fileSystemElements.size()); ListIterator<TraceFileSystemElement> fileSystemElementsIter = fileSystemElements.listIterator(); // Map to remember already imported directory traces final Map<String, TraceFileSystemElement> directoryTraces = new HashMap<>(); while (fileSystemElementsIter.hasNext()) { ModalContext.checkCanceled(monitor); fCurrentPath = null; TraceFileSystemElement element = fileSystemElementsIter.next(); IFileSystemObject fileSystemObject = element.getFileSystemObject(); String resourcePath = element.getFileSystemObject().getAbsolutePath(); element.setDestinationContainerPath(computeDestinationContainerPath(new Path(resourcePath))); fCurrentPath = resourcePath; SubMonitor sub = subMonitor.newChild(1); if (element.isDirectory()) { if (!directoryTraces.containsKey(resourcePath) && isDirectoryTrace(element)) { directoryTraces.put(resourcePath, element); validateAndImportTrace(element, sub); } } else { TraceFileSystemElement parentElement = (TraceFileSystemElement) element.getParent(); String parentPath = parentElement.getFileSystemObject().getAbsolutePath(); parentElement.setDestinationContainerPath(computeDestinationContainerPath(new Path(parentPath))); fCurrentPath = parentPath; if (!directoryTraces.containsKey(parentPath)) { if (isDirectoryTrace(parentElement)) { directoryTraces.put(parentPath, parentElement); validateAndImportTrace(parentElement, sub); } else { boolean validateFile = true; TraceFileSystemElement grandParentElement = (TraceFileSystemElement) parentElement .getParent(); // Special case for LTTng trace that may contain index // directory and files if (grandParentElement != null) { String grandParentPath = grandParentElement.getFileSystemObject().getAbsolutePath(); grandParentElement.setDestinationContainerPath( computeDestinationContainerPath(new Path(parentPath))); fCurrentPath = grandParentPath; if (directoryTraces.containsKey(grandParentPath)) { validateFile = false; } else if (isDirectoryTrace(grandParentElement)) { directoryTraces.put(grandParentPath, grandParentElement); validateAndImportTrace(grandParentElement, sub); validateFile = false; } } if (validateFile && (fileSystemObject.exists())) { validateAndImportTrace(element, sub); } } } } } }
From source file:org.eclipse.tracecompass.internal.tmf.ui.project.wizards.importtrace.TraceValidateAndImportOperation.java
License:Open Source License
/** * Extract all file system elements (File) to destination folder (typically * workspace/TraceProject/.traceImport)//w w w . j a va2 s . c o m */ private void extractAllArchiveFiles(List<TraceFileSystemElement> fileSystemElements, IFolder destFolder, IPath baseSourceContainerPath, IProgressMonitor progressMonitor) throws InterruptedException, CoreException, InvocationTargetException { SubMonitor subMonitor = SubMonitor.convert(progressMonitor, fileSystemElements.size()); ListIterator<TraceFileSystemElement> fileSystemElementsIter = fileSystemElements.listIterator(); while (fileSystemElementsIter.hasNext()) { ModalContext.checkCanceled(subMonitor); SubMonitor elementProgress = subMonitor.newChild(1); TraceFileSystemElement element = fileSystemElementsIter.next(); File archiveFile = (File) element.getFileSystemObject().getRawFileSystemObject(); boolean isArchiveFileElement = element.getFileSystemObject() instanceof FileFileSystemObject && ArchiveUtil.isArchiveFile(archiveFile); if (isArchiveFileElement) { elementProgress = SubMonitor.convert(elementProgress, 4); IPath makeAbsolute = baseSourceContainerPath.makeAbsolute(); IPath relativeToSourceContainer = new Path(element.getFileSystemObject().getAbsolutePath()) .makeRelativeTo(makeAbsolute); IFolder folder = safeCreateExtractedFolder(destFolder, relativeToSourceContainer, elementProgress.newChild(1)); extractArchiveToFolder(archiveFile, folder, elementProgress.newChild(1)); // Delete original archive, we don't want to import this, just // the extracted content IFile fileRes = destFolder.getFile(relativeToSourceContainer); fileRes.delete(true, elementProgress.newChild(1)); IPath newPath = destFolder.getFullPath().append(relativeToSourceContainer); // Rename extracted folder (.extract) to original archive name folder.move(newPath, true, elementProgress.newChild(1)); folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(newPath); // Create the new import provider and root element based on // the newly extracted temporary folder FileSystemObjectImportStructureProvider importStructureProvider = new FileSystemObjectImportStructureProvider( FileSystemStructureProvider.INSTANCE, null); IFileSystemObject rootElement = importStructureProvider .getIFileSystemObject(new File(folder.getLocation().toOSString())); TraceFileSystemElement newElement = TraceFileSystemElement.createRootTraceFileElement(rootElement, importStructureProvider); List<TraceFileSystemElement> extractedChildren = new ArrayList<>(); newElement.getAllChildren(extractedChildren); extractAllArchiveFiles(extractedChildren, folder, folder.getLocation(), progressMonitor); } } }
From source file:org.eclipse.tracecompass.internal.tmf.ui.project.wizards.importtrace.TraceValidateAndImportOperation.java
License:Open Source License
/** * Extract all file system elements (Tar, Zip elements) to destination * folder (typically workspace/TraceProject/.traceImport or a subfolder of * it)//from w w w . ja v a 2 s. c o m */ private void extractArchiveContent(Iterator<TraceFileSystemElement> fileSystemElementsIter, IFolder tempFolder, IProgressMonitor progressMonitor) throws InterruptedException, InvocationTargetException { List<TraceFileSystemElement> subList = new ArrayList<>(); // Collect all the elements while (fileSystemElementsIter.hasNext()) { ModalContext.checkCanceled(progressMonitor); TraceFileSystemElement element = fileSystemElementsIter.next(); if (element.isDirectory()) { Object[] array = element.getFiles().getChildren(); for (int i = 0; i < array.length; i++) { subList.add((TraceFileSystemElement) array[i]); } } subList.add(element); } if (subList.isEmpty()) { return; } TraceFileSystemElement root = getRootElement(subList.get(0)); ImportProvider fileSystemStructureProvider = new ImportProvider(); IOverwriteQuery myQueryImpl = new IOverwriteQuery() { @Override public String queryOverwrite(String file) { return IOverwriteQuery.NO_ALL; } }; progressMonitor.setTaskName(Messages.ImportTraceWizard_ExtractImportOperationTaskName); IPath containerPath = tempFolder.getFullPath(); ImportOperation operation = new ImportOperation(containerPath, root, fileSystemStructureProvider, myQueryImpl, subList); operation.setContext(fShell); operation.setCreateContainerStructure(true); operation.setOverwriteResources(false); operation.setVirtualFolders(false); operation.run(SubMonitor.convert(progressMonitor).newChild(subList.size())); }
From source file:org.eclipse.tracecompass.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 w w. ja va 2 s.com*/ * * @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 (InterruptedException e) { setStatus(Status.CANCEL_STATUS); } catch (Exception e) { setStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, org.eclipse.tracecompass.internal.tmf.ui.project.wizards.tracepkg.Messages.TracePackage_ErrorOperation, e)); } }
From source file:org.eclipse.tracecompass.tmf.ui.project.operations.internal.NewExperimentOperation.java
License:Open Source License
@Override public void run(IProgressMonitor monitor) { final IFolder experimentFolder = createExperiment(fExperimentName); try {/*from ww w .ja v a2 s.c om*/ monitor.beginTask("", 1000); //$NON-NLS-1$ ModalContext.checkCanceled(monitor); experimentFolder.create(false, true, monitor); /* * Experiments can be set to the default experiment type. No * need to force user to select an experiment type */ IConfigurationElement ce = TmfTraceType.getTraceAttributes(TmfTraceType.DEFAULT_EXPERIMENT_TYPE); if (ce != null) { experimentFolder.setPersistentProperty(TmfCommonConstants.TRACETYPE, ce.getAttribute(TmfTraceType.ID_ATTR)); } fExperimentFolder = experimentFolder; setStatus(Status.OK_STATUS); } catch (InterruptedException e) { setStatus(Status.CANCEL_STATUS); } catch (InvalidRegistryObjectException | CoreException e) { String msg = NLS.bind(Messages.NewExperimentOperation_CreationError, fExperimentName); Activator.instance().logError(msg, e); setStatus(new Status(IStatus.ERROR, Activator.instance().getPluginId(), msg, e)); } }
From source file:org.eclipse.tracecompass.tmf.ui.project.operations.internal.SelectTracesOperation.java
License:Open Source License
@Override public void run(IProgressMonitor progressMonitor) { TmfExperimentElement experimentElement = fExperimentElement; if (experimentElement == null) { return;//from ww w. j a v a 2s . c o m } // Check if operation was cancelled. boolean changed = false; Map<String, TmfTraceElement> previousTraces = new HashMap<>(); if (fPreviousTraces != null) { previousTraces = fPreviousTraces; } List<TmfTraceElement> elements = fTraceElements; if (elements == null) { if ((fParentTraceFolder != null) && (fResources != null)) { elements = fParentTraceFolder.getTraceElements(fResources); } else { return; } } Set<String> keys = previousTraces.keySet(); SubMonitor subMonitor = SubMonitor.convert(progressMonitor, elements.size() + keys.size()); // Add the selected traces to the experiment try { for (TmfTraceElement trace : elements) { ModalContext.checkCanceled(progressMonitor); String name = trace.getElementPath(); if (keys.contains(name)) { subMonitor.setTaskName( Messages.SelectTracesWizardPage_TraceRemovalTask + " " + trace.getElementPath()); //$NON-NLS-1$ keys.remove(name); } else { subMonitor.setTaskName( Messages.SelectTracesWizardPage_TraceSelectionTask + " " + trace.getElementPath()); //$NON-NLS-1$ experimentElement.addTrace(trace, false); changed = true; } subMonitor.worked(1); } // Remove traces that were unchecked (thus left in fPreviousTraces) for (Map.Entry<String, TmfTraceElement> entry : previousTraces.entrySet()) { ModalContext.checkCanceled(progressMonitor); TmfTraceElement trace = entry.getValue(); subMonitor.setTaskName( Messages.SelectTracesWizardPage_TraceRemovalTask + " " + trace.getElementPath()); //$NON-NLS-1$ try { experimentElement.removeTrace(trace); } catch (CoreException e) { Activator.instance().logError( Messages.SelectTracesWizardPage_SelectionError + " " + experimentElement.getName(), e); //$NON-NLS-1$ } changed = true; subMonitor.worked(1); } if (changed) { Display.getDefault().syncExec(new Runnable() { @Override public void run() { experimentElement.closeEditors(); } }); experimentElement.deleteSupplementaryResources(); } setStatus(Status.OK_STATUS); } catch (InterruptedException e) { setStatus(Status.CANCEL_STATUS); } catch (Exception e) { Activator.instance().logError(Messages.SelectTracesWizardPage_SelectionError, e); setStatus(new Status(IStatus.ERROR, Activator.instance().getPluginId(), Messages.SelectTracesWizardPage_SelectionError, e)); } }
From source file:org.eclipse.triquetrum.workflow.editor.wizard.MomlExportOperation.java
License:Open Source License
/** * Export the passed file to the specified location * * @param file//ww w .java 2 s .com * org.eclipse.core.resources.IFile * @param location * org.eclipse.core.runtime.IPath */ protected void exportFile(IFile file, IPath location) throws InterruptedException { IPath fullPath = location.append(file.getName()).removeFileExtension().addFileExtension("moml"); monitor.subTask(file.getFullPath().toString()); String properPathString = fullPath.toOSString(); File targetFile = new File(properPathString); if (targetFile.exists()) { if (!targetFile.canWrite()) { errorTable.add(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0, NLS.bind("Cannot overwrite file: {0}", targetFile.getAbsolutePath()), null)); monitor.worked(1); return; } if (overwriteState == OVERWRITE_NONE) { return; } if (overwriteState != OVERWRITE_ALL) { String overwriteAnswer = overwriteCallback.queryOverwrite(properPathString); if (overwriteAnswer.equals(IOverwriteQuery.CANCEL)) { throw new InterruptedException(); } if (overwriteAnswer.equals(IOverwriteQuery.NO)) { monitor.worked(1); return; } if (overwriteAnswer.equals(IOverwriteQuery.NO_ALL)) { monitor.worked(1); overwriteState = OVERWRITE_NONE; return; } if (overwriteAnswer.equals(IOverwriteQuery.ALL)) { overwriteState = OVERWRITE_ALL; } } } try { // 1. obtain Diagram for the file Diagram diagram = GraphitiUiInternal.getEmfService().getDiagramFromFile(file, new ResourceSetImpl()); // 2. find root CompositeActor CompositeActor toplevel = (CompositeActor) Graphiti.getLinkService() .getBusinessObjectForLinkedPictogramElement(diagram); // 3. push location info of diagram model elements to the Ptolemy II model elements pushLocations(diagram, toplevel); // 4. exportMOML to the destination file FileUtils.writeStringToFile(new File(fullPath.toOSString()), toplevel.getWrappedObject().exportMoML()); } catch (IOException e) { errorTable.add(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0, NLS.bind("Error exporting {0}: {1}", fullPath, e.getMessage()), e)); } monitor.worked(1); ModalContext.checkCanceled(monitor); }
From source file:org.eclipse.ui.internal.wizards.datatransfer.ArchiveFileExportOperation.java
License:Open Source License
/** * Export the passed resource to the destination .zip * * @param exportResource org.eclipse.core.resources.IResource * @param leadupDepth the number of resource levels to be included in * the path including the resourse itself. */// www.j a va 2 s . c om protected void exportResource(IResource exportResource, int leadupDepth) throws InterruptedException { if (!exportResource.isAccessible()) { return; } if (exportResource.getType() == IResource.FILE) { String destinationName = createDestinationName(leadupDepth, exportResource); monitor.subTask(destinationName); try { exporter.write((IFile) exportResource, destinationName); } catch (IOException e) { addError(NLS.bind(DataTransferMessages.DataTransfer_errorExporting, exportResource.getFullPath().makeRelative(), e.getMessage()), e); } catch (CoreException e) { addError(NLS.bind(DataTransferMessages.DataTransfer_errorExporting, exportResource.getFullPath().makeRelative(), e.getMessage()), e); } monitor.worked(1); ModalContext.checkCanceled(monitor); } else { IResource[] children = null; try { children = ((IContainer) exportResource).members(); } catch (CoreException e) { // this should never happen because an #isAccessible check is done before #members is invoked addError(NLS.bind(DataTransferMessages.DataTransfer_errorExporting, exportResource.getFullPath()), e); } if (children.length == 0) { // create an entry for empty containers, see bug 278402 String destinationName = createDestinationName(leadupDepth, exportResource); try { exporter.write((IContainer) exportResource, destinationName + IPath.SEPARATOR); } catch (IOException e) { addError(NLS.bind(DataTransferMessages.DataTransfer_errorExporting, exportResource.getFullPath().makeRelative(), e.getMessage()), e); } } for (int i = 0; i < children.length; i++) { exportResource(children[i], leadupDepth + 1); } } }