Example usage for org.eclipse.jface.operation ModalContext checkCanceled

List of usage examples for org.eclipse.jface.operation ModalContext checkCanceled

Introduction

In this page you can find the example usage for org.eclipse.jface.operation ModalContext checkCanceled.

Prototype

public static void checkCanceled(IProgressMonitor monitor) throws InterruptedException 

Source Link

Document

Checks with the given progress monitor and throws InterruptedException if it has been canceled.

Usage

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);
        }

    }
}