Example usage for org.eclipse.jface.operation IRunnableWithProgress IRunnableWithProgress

List of usage examples for org.eclipse.jface.operation IRunnableWithProgress IRunnableWithProgress

Introduction

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

Prototype

IRunnableWithProgress

Source Link

Usage

From source file:com.collabnet.subversion.merge.wizards.MergeWizardUnblockRevisionsPage.java

License:Open Source License

private void refresh() {
    IRunnableWithProgress runnable = new IRunnableWithProgress() {
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
            try {
                monitor.setTaskName(Messages.MergeWizardUnblockRevisionsPage_retrievingRemoteResource);
                monitor.beginTask(Messages.MergeWizardUnblockRevisionsPage_retrievingRemoteResource, 2);
                monitor.worked(1);/*from   w ww .java  2  s.co m*/
                remoteResource = repositoryLocation.getRemoteFile(new SVNUrl(fromUrl));
                monitor.worked(1);
                monitor.done();
            } catch (Exception e) {
                Activator.handleError(e);
            }
        }
    };
    setPageComplete(false);
    setErrorMessage(null);
    fromUrl = standardPage.getFromUrl();
    ISVNMergeInfo mergeInfo = standardPage.getMergeInfo();
    if (mergeInfo == null) {
        entries = new ILogEntry[0];
        return;
    }
    revisionRanges = mergeInfo.getRevisionRange(fromUrl);
    remoteResource = null;
    try {
        getContainer().run(false, false, runnable);
        if (remoteResource == null) {
            setErrorMessage(Messages.MergeWizardUnblockRevisionsPage_errorRetrievingRemoteResource);
            entries = new ILogEntry[0];
        } else
            getLogEntries();
    } catch (Exception e) {
        setErrorMessage(e.getMessage());
        entries = new ILogEntry[0];
    }
    if (tableHistoryViewer.getInput() == null)
        tableHistoryViewer.setInput(fromUrl);
    else
        tableHistoryViewer.refresh();

    setPageComplete(canFinish());
}

From source file:com.collabnet.subversion.merge.wizards.MergeWizardUnblockRevisionsPage.java

License:Open Source License

private void getLogEntries() {
    entryArray = new ArrayList();
    IRunnableWithProgress runnable = new IRunnableWithProgress() {
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
            try {
                monitor.setTaskName(Messages.MergeWizardUnblockRevisionsPage_retrievingRevisionLogInfo);
                monitor.beginTask(Messages.MergeWizardUnblockRevisionsPage_retrievingRevisionLogInfo, 3);
                if (SVNUIPlugin.getPlugin().getPreferenceStore()
                        .getBoolean(ISVNUIConstants.PREF_SHOW_TAGS_IN_REMOTE))
                    tagManager = new AliasManager(remoteResource.getUrl());
                SVNRevision pegRevision = remoteResource.getRevision();
                monitor.worked(1);/*from  w  w w.  j  ava  2  s.c  o m*/
                for (int i = 0; i < revisionRanges.length; i++) {
                    rangeEntries = getLogEntries(pegRevision, revisionRanges[i].getFromRevision(),
                            revisionRanges[i].getToRevision(), true, 0, tagManager, true);
                    monitor.worked(1);
                    for (int j = 0; j < rangeEntries.length; j++) {
                        entryArray.add(rangeEntries[j]);
                    }
                }

                entries = new ILogEntry[entryArray.size()];
                entryArray.toArray(entries);
            } catch (Exception e) {
                setErrorMessage(e.getMessage());
                entries = new ILogEntry[0];
            }
            monitor.worked(1);
            monitor.done();
        }
    };
    try {
        getContainer().run(false, false, runnable);
    } catch (Exception e1) {
        Activator.handleError(e1);
    }
    setErrorMessage(standardPage.getErrorMessage());
}

From source file:com.contrastsecurity.ide.eclipse.ui.internal.preferences.ContrastPreferencesPage.java

License:Open Source License

private void testConnection(Composite composite) {
    final String url = teamServerText.getText();
    URL u;/*from  w  w w  .  jav a 2s . c o m*/
    try {
        u = new URL(url);
    } catch (MalformedURLException e1) {
        MessageDialog.openError(getShell(), "Exception", "Invalid URL.");
        testConnectionLabel.setText("Connection failed!");
        return;
    }
    if (!u.getProtocol().startsWith("http")) {
        MessageDialog.openError(getShell(), "Exception", "Invalid protocol.");
        testConnectionLabel.setText("Connection failed!");
        return;
    }
    IRunnableWithProgress op = new IRunnableWithProgress() {
        public void run(IProgressMonitor monitor) {
            Display.getDefault().syncExec(new Runnable() {

                @Override
                public void run() {
                    ContrastSDK sdk = new ContrastSDK(usernameText.getText(), serviceKeyText.getText(),
                            apiKeyText.getText(), url);
                    try {
                        Organization organization = Util.getDefaultOrganization(sdk);
                        if (organization == null || organization.getOrgUuid() == null) {
                            testConnectionLabel
                                    .setText("Connection is correct, but no default organizations found.");
                        } else {
                            testConnectionLabel.setText("Connection confirmed!");
                        }
                    } catch (IOException e1) {
                        showErrorMessage(e1, getShell(), "Connection error",
                                "Could not connect to Contrast. Please verify that the URL is correct and try again.");
                    } catch (UnauthorizedException e1) {
                        showErrorMessage(e1, getShell(), "Access denied",
                                "Verify your credentials and make sure you have access to the selected organization.");
                    } catch (Exception e1) {
                        showErrorMessage(e1, getShell(), "Unknown error",
                                "Unknown exception. Please inform an admin about this.");
                    } finally {
                        composite.layout(true, true);
                        composite.redraw();
                    }
                }
            });

        }
    };
    IWorkbench wb = PlatformUI.getWorkbench();
    IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
    Shell shell = win != null ? win.getShell() : null;
    try {
        new ProgressMonitorDialog(shell).run(true, true, op);
    } catch (InvocationTargetException | InterruptedException e1) {
        ContrastUIActivator.log(e1);
    }
}

From source file:com.contrastsecurity.ide.eclipse.ui.internal.preferences.ContrastPreferencesPage.java

License:Open Source License

private void retrieveOrganizationName(Composite composite) {

    final String url = teamServerText.getText();
    URL u;/*from   www. ja v a  2 s. c  om*/
    try {
        u = new URL(url);
    } catch (MalformedURLException e1) {
        MessageDialog.openError(getShell(), "Exception", "Invalid URL.");
        testConnectionLabel.setText("Connection failed!");
        return;
    }
    if (!u.getProtocol().startsWith("http")) {
        MessageDialog.openError(getShell(), "Exception", "Invalid protocol.");
        testConnectionLabel.setText("Connection failed!");
        return;
    }

    IRunnableWithProgress op = new IRunnableWithProgress() {
        public void run(IProgressMonitor monitor) {
            Display.getDefault().syncExec(new Runnable() {

                @Override
                public void run() {

                    ExtendedContrastSDK sdk = ContrastCoreActivator.getContrastSDK(usernameText.getText(),
                            apiKeyText.getText(), serviceKeyText.getText(), url);

                    try {
                        Organizations organizations = sdk.getProfileOrganizations();
                        if (organizations.getOrganizations() != null
                                && !organizations.getOrganizations().isEmpty()) {

                            for (Organization organization : organizations.getOrganizations()) {

                                if (organization.getOrgUuid().equals(organizationUuidText.getText())) {

                                    // Check if organization is already saved
                                    if (ContrastCoreActivator
                                            .getOrganizationConfiguration(organization.getName()) == null) {
                                        ContrastCoreActivator.saveNewOrganization(organization.getName(),
                                                teamServerText.getText(), usernameText.getText(),
                                                serviceKeyText.getText(), apiKeyText.getText(),
                                                organizationUuidText.getText());

                                        teamServerText.setText("");
                                        usernameText.setText("");
                                        serviceKeyText.setText("");
                                        apiKeyText.setText("");
                                        organizationUuidText.setText("");

                                        String[] organizationsArray = (String[]) tableViewer.getInput();

                                        String[] newOrganizationsArray = Arrays.copyOf(organizationsArray,
                                                organizationsArray.length + 1);

                                        newOrganizationsArray[newOrganizationsArray.length - 1] = organization
                                                .getName();
                                        tableViewer.setInput(newOrganizationsArray);
                                        if (newOrganizationsArray.length == 1) {
                                            tableViewer.getTable().setSelection(0);
                                        }
                                    } else {
                                        testConnectionLabel.setText("Organization already exists");
                                    }
                                    break;
                                }
                            }
                        }
                    } catch (IOException e1) {
                        showErrorMessage(e1, getShell(), "Connection error",
                                "Could not connect to Contrast. Please verify that the URL is correct and try again.");
                    } catch (UnauthorizedException e1) {
                        showErrorMessage(e1, getShell(), "Access denied",
                                "Verify your credentials and make sure you have access to the selected organization.");
                    } catch (Exception e1) {
                        showErrorMessage(e1, getShell(), "Unknown error",
                                "Unknown exception. Please inform an admin about this.");
                    } finally {
                        composite.layout(true, true);
                        composite.redraw();
                    }
                }
            });

        }
    };
    IWorkbench wb = PlatformUI.getWorkbench();
    IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
    Shell shell = win != null ? win.getShell() : null;
    try {
        new ProgressMonitorDialog(shell).run(true, true, op);
    } catch (InvocationTargetException | InterruptedException e1) {
        ContrastUIActivator.log(e1);
    }
}

From source file:com.conwet.wirecloud.ide.wizards.WizardProjectsImportPage.java

License:Open Source License

/**
 * Update the list of projects based on path. Method declared public only
 * for test suite./*from   ww  w  . j a va  2  s .c o m*/
 *
 * @param path
 */
public void updateProjectsList(final String path) {
    // on an empty path empty selectedProjects
    if (path == null || path.length() == 0) {
        setMessage(ImportProjectDescription);
        selectedProjects = new ProjectRecord[0];
        projectsList.refresh(true);
        projectsList.setCheckedElements(selectedProjects);
        setPageComplete(projectsList.getCheckedElements().length > 0);
        lastPath = path;
        return;
    }

    final File directory = new File(path);
    long modified = directory.lastModified();
    if (path.equals(lastPath) && lastModified == modified && lastCopyFiles == copyFiles) {
        // since the file/folder was not modified and the path did not
        // change, no refreshing is required
        return;
    }

    lastPath = path;
    lastModified = modified;
    lastCopyFiles = copyFiles;

    // We can't access the radio button from the inner class so get the
    // status beforehand
    final boolean dirSelected = this.projectFromDirectoryRadio.getSelection();
    try {
        getContainer().run(true, true, new IRunnableWithProgress() {

            /*
             * (non-Javadoc)
             *
             * @see
             * org.eclipse.jface.operation.IRunnableWithProgress#run(org
             * .eclipse.core.runtime.IProgressMonitor)
             */
            public void run(IProgressMonitor monitor) {

                monitor.beginTask(DataTransferMessages.WizardProjectsImportPage_SearchingMessage, 100);
                selectedProjects = new ProjectRecord[0];
                Collection<ProjectRecord> files = new ArrayList<ProjectRecord>();
                monitor.worked(10);
                if (!dirSelected && ArchiveFileManipulations.isTarFile(path)) {
                    TarFile sourceTarFile = getSpecifiedTarSourceFile(path);
                    if (sourceTarFile == null) {
                        return;
                    }

                    structureProvider = new TarLeveledStructureProvider(sourceTarFile);
                    Object child = structureProvider.getRoot();

                    if (!collectProjectFilesFromProvider(files, child, 0, monitor)) {
                        return;
                    }
                    monitor.worked(50);
                    monitor.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
                    selectedProjects = (ProjectRecord[]) files.toArray(new ProjectRecord[files.size()]);
                } else if (!dirSelected && ArchiveFileManipulations.isZipFile(path)) {
                    ZipFile sourceFile = getSpecifiedZipSourceFile(path);
                    if (sourceFile == null) {
                        return;
                    }
                    structureProvider = new ZipLeveledStructureProvider(sourceFile);
                    Object child = structureProvider.getRoot();

                    if (!collectProjectFilesFromProvider(files, child, 0, monitor)) {
                        return;
                    }
                    monitor.worked(50);
                    monitor.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
                    selectedProjects = (ProjectRecord[]) files.toArray(new ProjectRecord[files.size()]);
                } else if (dirSelected && directory.isDirectory()) {

                    if (!collectProjectFilesFromDirectory(files, directory, null, monitor)) {
                        return;
                    }
                    monitor.worked(50);
                    monitor.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
                    selectedProjects = (ProjectRecord[]) files.toArray(new ProjectRecord[files.size()]);
                } else {
                    monitor.worked(60);
                }
                monitor.done();
            }

        });
    } catch (InvocationTargetException e) {
        IDEWorkbenchPlugin.log(e.getMessage(), e);
    } catch (InterruptedException e) {
        // Nothing to do if the user interrupts.
    }

    projectsList.refresh(true);
    ProjectRecord[] projects = getProjectRecords();
    boolean displayWarning = false;
    for (int i = 0; i < projects.length; i++) {
        if (projects[i].hasConflicts) {
            displayWarning = true;
            projectsList.setGrayed(projects[i], true);
        } else {
            projectsList.setChecked(projects[i], true);
        }
    }

    if (displayWarning) {
        setMessage(ImportProjectWarning, WARNING);
    } else {
        setMessage(ImportProjectDescription);
    }
    setPageComplete(projectsList.getCheckedElements().length > 0);
    if (selectedProjects.length == 0) {
        setMessage(DataTransferMessages.WizardProjectsImportPage_noProjectsToImport, WARNING);
    }
}

From source file:com.coretek.testcase.projectView.projectwizard.page.WizardNewFolderMainPage.java

License:Open Source License

/**
 * Creates a new folder resource in the selected container and with the
 * selected name. Creates any missing resource containers along the path;
 * does nothing if the container resources already exist.
 * <p>//from  w  ww . ja  va  2  s .  com
 * In normal usage, this method is invoked after the user has pressed Finish
 * on the wizard; the enablement of the Finish button implies that all
 * controls on this page currently contain valid values.
 * </p>
 * <p>
 * Note that this page caches the new folder once it has been successfully
 * created; subsequent invocations of this method will answer the same
 * folder resource without attempting to create it again.
 * </p>
 * <p>
 * This method should be called within a workspace modify operation since it
 * creates resources.
 * </p>
 * 
 * @return the created folder resource, or <code>null</code> if the folder
 *         was not created
 */
public IFolder createNewFolder() {
    if (newFolder != null) {
        return newFolder;
    }

    // create the new folder and cache it if successful
    final IPath containerPath = resourceGroup.getContainerFullPath();
    IPath newFolderPath = containerPath.append(resourceGroup.getResource());
    final IFolder newFolderHandle = createFolderHandle(newFolderPath);

    createLinkTarget();
    IRunnableWithProgress op = new IRunnableWithProgress() {
        public void run(IProgressMonitor monitor) {
            CreateFolderOperation op = new CreateFolderOperation(newFolderHandle, linkTargetPath,
                    IDEWorkbenchMessages.WizardNewFolderCreationPage_title);
            try {
                // see bug
                // https://bugs.eclipse.org/bugs/show_bug.cgi?id=219901
                // directly execute the operation so that the undo state is
                // not preserved. Making this undoable can result in
                // accidental
                // folder (and file) deletions.
                op.execute(monitor, WorkspaceUndoUtil.getUIInfoAdapter(getShell()));
            } catch (final ExecutionException e) {
                getContainer().getShell().getDisplay().syncExec(new Runnable() {
                    public void run() {
                        if (e.getCause() instanceof CoreException) {
                            ErrorDialog.openError(getContainer().getShell(), // Was
                                    // Utilities.getFocusShell()
                                    IDEWorkbenchMessages.WizardNewFolderCreationPage_errorTitle, null, // no
                                    // special
                                    // message
                                    ((CoreException) e.getCause()).getStatus());
                        } else {
                            IDEWorkbenchPlugin.log(getClass(), "createNewFolder()", e.getCause()); //$NON-NLS-1$
                            MessageDialog.openError(getContainer().getShell(),
                                    IDEWorkbenchMessages.WizardNewFolderCreationPage_internalErrorTitle,
                                    NLS.bind(IDEWorkbenchMessages.WizardNewFolder_internalError,
                                            e.getCause().getMessage()));
                        }
                    }
                });
            }
        }
    };

    try {
        getContainer().run(true, true, op);
    } catch (InterruptedException e) {
        return null;
    } catch (InvocationTargetException e) {
        // ExecutionExceptions are handled above, but unexpected runtime
        // exceptions and errors may still occur.
        IDEWorkbenchPlugin.log(getClass(), "createNewFolder()", e.getTargetException()); //$NON-NLS-1$
        MessageDialog.open(MessageDialog.ERROR, getContainer().getShell(),
                IDEWorkbenchMessages.WizardNewFolderCreationPage_internalErrorTitle,
                NLS.bind(IDEWorkbenchMessages.WizardNewFolder_internalError,
                        e.getTargetException().getMessage()),
                SWT.SHEET);
        return null;
    }

    newFolder = newFolderHandle;

    return newFolder;
}

From source file:com.dadabeatnik.codemap.ui.wizards.NewCodeMapWizard.java

License:Open Source License

/**
 * This method is called when 'Finish' button is pressed in
 * the wizard. We will create an operation and run it
 * using wizard as execution context.//from w w w . j  a  v  a 2  s .c o m
 */
@Override
public boolean performFinish() {
    final String containerName = page.getContainerName();
    final String fileName = page.getFileName();
    IRunnableWithProgress op = new IRunnableWithProgress() {

        public void run(IProgressMonitor monitor) throws InvocationTargetException {
            try {
                doFinish(containerName, fileName, monitor);
            } catch (CoreException e) {
                throw new InvocationTargetException(e);
            } finally {
                monitor.done();
            }
        }
    };
    try {
        getContainer().run(true, false, op);
    } catch (InterruptedException e) {
        return false;
    } catch (InvocationTargetException e) {
        Throwable realException = e.getTargetException();
        MessageDialog.openError(getShell(), "Error", realException.getMessage());
        return false;
    }
    return true;
}

From source file:com.drgarbage.ast.ASTPanel.java

License:Apache License

/**
 * Creates content for the tree viewer./* w  ww .  j  a v  a2 s .  c o  m*/
 * @param compilationUnit the compilation unit object (may be <code>null</code>).
 * @param classFile the class file object (may be <code>null</code>).
 * 
 * @throws InvocationTargetException
 * @throws InterruptedException
 */
private void createContent(final ICompilationUnit compilationUnit, final IClassFile classFile)
        throws InvocationTargetException, InterruptedException {
    clearContent();
    ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
    dialog.run(true, true, new IRunnableWithProgress() {
        public void run(final IProgressMonitor monitor) throws InvocationTargetException {

            parser.setKind(ASTParser.K_COMPILATION_UNIT);
            if (monitor.isCanceled())
                return;

            if (compilationUnit != null) {
                parser.setSource(compilationUnit);
                if (monitor.isCanceled())
                    return;
            } else {
                parser.setSource(classFile);
                if (monitor.isCanceled())
                    return;
            }

            final CompilationUnit node = (CompilationUnit) parser.createAST(monitor);
            if (monitor.isCanceled())
                return;
            getDisplay().syncExec(new Runnable() {
                public void run() {
                    TreeModel t = new TreeModel();
                    ASTVisitorImpl visitor = new ASTVisitorImpl(t, monitor);
                    node.accept(visitor);
                    treeViewer.setInput(t);
                }
            });
        }
    });
}

From source file:com.drgarbage.bytecode.jdi.dialogs.JDIExportFromJvmDialog.java

License:Apache License

/**
 * Creates dialog specific controls. //from  w  ww  .j  a v  a 2s  .c o m
 */
protected void createControls() {

    /* hint text */
    hintLabel = new Label(shell, SWT.NONE);
    hintLabel.setText(BytecodeVisualizerMessages.JDI_Export_Dialog_hint_text);

    /* Filtered list */
    PatternFilter pf = new PatternFilter();
    pf.setPattern("");
    FilteredCheckboxList ft = new FilteredCheckboxList(shell, SWT.BORDER | SWT.MULTI, pf);
    ft.setLayoutData(new GridData(GridData.FILL_BOTH));

    /* initialize the viewer before filling the list */
    viewer = (CheckboxTreeViewer) ft.getViewer();
    viewer.setContentProvider(new TreeContentProvider());
    viewer.setLabelProvider(new LabelProvider());

    /* create message label */
    Composite c = new Composite(hintLabel.getParent(), SWT.NONE);
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 2;
    c.setLayout(gridLayout);

    messageIcon = new Label(c, SWT.NONE);
    messageLabel = new Label(c, SWT.NONE);

    /* fill the viewer */
    fillList(ft);

    Composite selectComposite = new Composite(shell, SWT.NONE);
    selectComposite.setLayout(new GridLayout(2, false));
    selectComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    selectAll = new Button(selectComposite, SWT.PUSH);
    selectAll.setText(BytecodeVisualizerMessages.JDI_Export_Dialog_Select_All);
    selectAll.addListener(SWT.Selection, new Listener() {

        /* (non-Javadoc)
         * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
         */
        @SuppressWarnings("deprecation")
        public void handleEvent(Event event) {
            viewer.setAllChecked(true);
        }
    });

    deselectAll = new Button(selectComposite, SWT.PUSH);
    deselectAll.setText(BytecodeVisualizerMessages.JDI_Export_Dialog_Deselect_All);
    deselectAll.addListener(SWT.Selection, new Listener() {

        /* (non-Javadoc)
         * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
         */
        @SuppressWarnings("deprecation")
        public void handleEvent(Event event) {
            viewer.setAllChecked(false);
        }
    });

    /* buttons */
    Composite dirPromptComposite = new Composite(shell, SWT.BORDER);
    dirPromptComposite.setLayout(new GridLayout(2, false));
    dirPromptComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    final Text pathText = new Text(dirPromptComposite, SWT.SINGLE | SWT.BORDER);
    GridData gd = new GridData();
    gd.widthHint = folderPromptWidth;
    pathText.setLayoutData(gd);
    pathText.setEditable(false);
    pathText.setText(BytecodeVisualizerMessages.JDI_Export_Dialog_Define_Class_Folder);

    chooseDirBtn = new Button(dirPromptComposite, SWT.PUSH);
    chooseDirBtn.setText(BytecodeVisualizerMessages.JDI_Export_Dialog_browse_btn_label);
    chooseDirBtn.setToolTipText(BytecodeVisualizerMessages.JDI_Export_Dialog_tooltip_browse_folder);
    chooseDirBtn.addListener(SWT.Selection, new Listener() {

        /* (non-Javadoc)
         * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
         */
        public void handleEvent(Event event) {

            Object o = DebugUITools.getDebugContext();
            if (o instanceof JDIDebugElement) {
                JDIDebugElement jdiDebugElement = (JDIDebugElement) o;
                ILaunchConfiguration config = jdiDebugElement.getLaunch().getLaunchConfiguration();

                IJavaProject javaProject = null;
                try {
                    javaProject = JavaRuntime.getJavaProject(config);
                } catch (CoreException e) {
                    BytecodeVisualizerPlugin.getDefault().getLog()
                            .log(BytecodeVisualizerPlugin.createErrorStatus(e.getMessage(), e));
                }

                ProjectBuildPathDialog selectFolderDlg = new ProjectBuildPathDialog(shell, javaProject);
                selectFolderDlg.open();
                IFolder f = selectFolderDlg.getSelectedFolder();
                if (f != null) {
                    exportFolder = f;
                    pathText.setText(exportFolder.getFullPath().toOSString());
                }

            }
        }
    });

    Composite footerBtnComposite = new Composite(shell, SWT.RIGHT_TO_LEFT);
    footerBtnComposite.setLayout(new GridLayout(2, false));

    copyToPathBtn = new Button(footerBtnComposite, SWT.NONE);
    copyToPathBtn.setText(BytecodeVisualizerMessages.JDI_Export_Dialog_copy_to_btn_text);
    copyToPathBtn.setEnabled(false);
    copyToPathBtn.addSelectionListener(new SelectionListener() {

        /* (non-Javadoc)
         * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {

            final Object[] selection = viewer.getCheckedElements();

            ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
            try {
                dialog.run(false, true, new IRunnableWithProgress() {
                    public void run(final IProgressMonitor monitor) throws InvocationTargetException {
                        monitor.beginTask(BytecodeVisualizerMessages.JDI_Export_Dialog_Export_Selected_Classes,
                                selection.length + 1);

                        for (Object o : selection) {
                            String className = o.toString();
                            String[] nameArray = className.split(Pattern.quote("."));

                            IPath path = exportFolder.getFullPath();
                            try {
                                for (int i = 0; i < nameArray.length - 1; i++) {
                                    path = path.append(nameArray[i]);
                                    createFolder(path, null);
                                }

                                path = path.append(nameArray[nameArray.length - 1]).addFileExtension("class");

                                monitor.subTask(className);
                                byte[] content = getClassFileContent(className);

                                createFile(path, content, null);
                                monitor.worked(1);

                            } catch (CoreException e1) {
                                BytecodeVisualizerPlugin.getDefault().getLog()
                                        .log(BytecodeVisualizerPlugin.createErrorStatus(e1.getMessage(), e1));
                            }
                        }

                        monitor.subTask("Saving Sourcelookup ...");

                        JDIDebugElement jdiDebugElement = null;
                        Object o1 = DebugUITools.getDebugContext();
                        if (o1 instanceof JDIDebugElement) {
                            jdiDebugElement = (JDIDebugElement) o1;

                            /* add to source lookup */
                            ISourceLocator sourceLocator = jdiDebugElement.getLaunch().getSourceLocator();

                            if (sourceLocator instanceof ISourceLookupDirector) {

                                boolean folderExists = false;

                                /* get source lookup entries */
                                ISourceLookupDirector sourceLookupDirector = (ISourceLookupDirector) sourceLocator;
                                ISourceContainer[] sourceContainers = sourceLookupDirector
                                        .getSourceContainers();
                                List<ISourceContainer> listContainers = new ArrayList<ISourceContainer>(
                                        sourceContainers.length);
                                for (ISourceContainer isc : sourceContainers) {

                                    /* check if source exists already in the source lookup */
                                    if (isc instanceof FolderSourceContainer) {
                                        FolderSourceContainer fsc = (FolderSourceContainer) isc;
                                        IContainer ic = fsc.getContainer();
                                        if (ic instanceof IFolder) {
                                            IFolder iFolder = (IFolder) ic;
                                            if (iFolder.equals(exportFolder)) {
                                                folderExists = true;
                                                break;
                                            }
                                        }
                                    }

                                    listContainers.add(isc);
                                }

                                if (!folderExists) {
                                    /* add the new source to the source lookup */
                                    ISourceContainer exportFolderContainer = new FolderSourceContainer(
                                            exportFolder, false);
                                    listContainers.add(exportFolderContainer);
                                    sourceLookupDirector.setSourceContainers(listContainers
                                            .toArray(new ISourceContainer[listContainers.size()]));

                                    /* save the source lookup configuration */
                                    try {
                                        ILaunchConfigurationWorkingCopy workingCopy = sourceLookupDirector
                                                .getLaunchConfiguration().getWorkingCopy();
                                        workingCopy.setAttribute(
                                                ILaunchConfiguration.ATTR_SOURCE_LOCATOR_MEMENTO,
                                                sourceLookupDirector.getMemento());
                                        workingCopy.setAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID,
                                                sourceLookupDirector.getId());
                                        workingCopy.doSave();
                                    } catch (CoreException e1) {
                                        BytecodeVisualizerPlugin.getDefault().getLog()
                                                .log(BytecodeVisualizerPlugin.createErrorStatus(e1.getMessage(),
                                                        e1));
                                    }
                                }
                            }

                            /* display source */
                            IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
                                    .getActivePage();
                            SourceLookupManager.getDefault().displaySource(jdiDebugElement, page, true);

                            monitor.worked(1);
                        }

                        monitor.done();
                    }
                });
            } catch (InvocationTargetException e1) {
                BytecodeVisualizerPlugin.log(e1);
            } catch (InterruptedException e2) {
                BytecodeVisualizerPlugin.log(e2);
            }

            shell.close();
        }

        /* (non-Javadoc)
         * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });

    closeBtn = new Button(footerBtnComposite, SWT.NONE);
    closeBtn.setText(BytecodeVisualizerMessages.JDI_Export_Dialog_close_text);
    closeBtn.addSelectionListener(new SelectionListener() {

        /* (non-Javadoc)
         * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {
            shell.close();
        }

        /* (non-Javadoc)
         * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });

    /* enable copy button if the export has been set */
    pathText.addModifyListener(new ModifyListener() {

        /* (non-Javadoc)
        * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
        */
        public void modifyText(ModifyEvent e) {
            /* Default text: <Define a folder to class export> */
            if (!pathText.getText().startsWith("<")) {
                copyToPathBtn.setEnabled(true);
            }
        }
    });
}

From source file:com.ebmwebsourcing.petals.common.extensions.internal.wizards.JavaToWSDLWizard.java

License:Open Source License

@Override
public boolean performFinish() {

    // Get the fields here (invalid thread access otherwise)
    final String wsdlName = this.wsdlPage.getFileName();
    final IResource folder = ResourcesPlugin.getWorkspace().getRoot()
            .findMember(this.wsdlPage.getContainerFullPath());

    final String className = this.mainPage.getClassName();
    final IJavaProject jp = this.mainPage.getJavaProject();

    IRunnableWithProgress op = new IRunnableWithProgress() {
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {

            try {
                monitor.beginTask("WSDL generation in progress...", 6);
                monitor.worked(2);/*from  w  ww .j a  va 2s  .  c  om*/
                WsdlExtUtils.generateWsdlFile(wsdlName, className, folder.getLocation().toOSString(), jp);
                monitor.worked(3);

            } catch (Exception e) {
                throw new InvocationTargetException(e);

            } finally {
                monitor.done();
            }
        }
    };

    try {
        getContainer().run(true, false, op);

        IResource wsdlFile = ((IContainer) folder).getFile(new Path(this.wsdlPage.getFileName()));
        wsdlFile.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
        ResourceUtils.selectResourceInJavaView(true, wsdlFile);

    } catch (Exception e) {
        PetalsCommonWsdlExtPlugin.log(e, IStatus.ERROR);
    }

    return true;
}