Example usage for org.eclipse.jface.dialogs ProgressMonitorDialog getProgressMonitor

List of usage examples for org.eclipse.jface.dialogs ProgressMonitorDialog getProgressMonitor

Introduction

In this page you can find the example usage for org.eclipse.jface.dialogs ProgressMonitorDialog getProgressMonitor.

Prototype

public IProgressMonitor getProgressMonitor() 

Source Link

Document

Returns the progress monitor to use for operations run in this progress dialog.

Usage

From source file:org.eclipse.n4js.ui.dialog.ModuleSpecifierSelectionDialog.java

License:Open Source License

@Override
protected void createPressed() {
    InputDialog dialog = new InputDialog(getShell(), CREATE_A_NEW_FOLDER_TITLE, CREATE_A_NEW_FOLDER_MESSAGE, "",
            new ModuleFolderValidator());
    dialog.open();/*from  w w  w  .j a  v  a 2s .  c o m*/

    Object selection = treeViewer.getStructuredSelection().getFirstElement();

    // Infer parent folder from selection
    IContainer parent;
    if (selection instanceof IFile) {
        parent = ((IFile) selection).getParent();
    } else if (selection instanceof IContainer) {
        parent = (IContainer) selection;
    } else { // Use the source folder as default
        parent = this.sourceFolder;
    }

    String dialogValue = dialog.getValue();

    if (OSInfo.isWindows()) {
        dialogValue = convertToUnixPath(dialogValue);
    }

    if (Window.OK == dialog.getReturnCode()) {
        IPath folderPath = new Path(dialogValue);
        IContainer createdFolder = null;
        ProgressMonitorDialog progressMonitorDialog = new ProgressMonitorDialog(getShell());
        progressMonitorDialog.open();
        IProgressMonitor progressMonitor = progressMonitorDialog.getProgressMonitor();

        createdFolder = createFolderPath(folderPath, parent, null);

        progressMonitor.done();
        progressMonitorDialog.close();

        if (null != createdFolder) {
            treeViewer.setSelection(new StructuredSelection(createdFolder));
        }
    }

}

From source file:org.eclipse.papyrus.infra.services.resourceloading.util.LoadingUtils.java

License:Open Source License

/**
 * Load corresponding resources in model set for all its existing models.
 * // ww  w .  j  a v  a 2  s . c om
 * @param modelSet
 *        the model set
 * @param uriWithoutFileExtension
 *        path of resources to load without file extension
 */
public static void loadResourcesInModelSet(ModelSet modelSet, URI uriWithoutFileExtension) {
    // initiate progress dialog
    ProgressMonitorDialog dialog = new ProgressMonitorDialog(Display.getCurrent().getActiveShell());
    dialog.open();
    IProgressMonitor monitor = dialog.getProgressMonitor();

    IEditorPart editor = getEditor();
    if (editor instanceof CoreMultiDiagramEditor) {
        CoreMultiDiagramEditor core = (CoreMultiDiagramEditor) editor;
        try {
            DiSashModelMngr sashModelMngr = core.getServicesRegistry().getService(DiSashModelMngr.class);
            IPageMngr pageMngr = sashModelMngr.getIPageMngr();
            List<Object> allPages = pageMngr.allPages();
            // mark progress
            monitor.beginTask(Messages.LoadingUtils_RefreshPagesTask, allPages.size());
            // the uri is added after getting all the pages. If it is done before, the eobjects are resolved
            NotificationBuilder error = NotificationBuilder
                    .createAsyncPopup(Messages.LoadingUtils_ErrorTitle, String
                            .format(Messages.LoadingUtils_ErrorMessage, uriWithoutFileExtension.toString()))
                    .setType(Type.ERROR).setDelay(2000);
            for (Object o : allPages) {
                // refresh pages to display proxy diagrams
                if (o instanceof EObject) {
                    EObject eobject = (EObject) o;
                    if (eobject.eIsProxy()) {
                        InternalEObject internal = (InternalEObject) eobject;
                        URI uriProxy = internal.eProxyURI();
                        URI trimFragment = uriProxy.trimFragment();
                        if (uriWithoutFileExtension.equals(trimFragment.trimFileExtension())) {
                            try {
                                Resource r = modelSet.getResource(trimFragment, true);
                                if (r != null) {
                                    EObject newEObject = r.getEObject(uriProxy.fragment());
                                    if (pageMngr.isOpen(newEObject)) {
                                        pageMngr.closePage(newEObject);
                                        pageMngr.openPage(newEObject);
                                    }
                                } else {
                                    error.run();
                                }
                            } catch (Exception e) {
                                error.run();
                                Activator.logError(e);
                            }
                        }
                    }
                }
                // mark progress
                monitor.worked(1);
            }
            Set<String> extensions = getExtensions(modelSet);
            // mark progress
            monitor.beginTask(Messages.LoadingUtils_LoadModelsTask, extensions.size());
            for (String s : extensions) {
                try {
                    URI uriToLoad = uriWithoutFileExtension.appendFileExtension(s);
                    Resource r = modelSet.getResource(uriToLoad, true);
                    if (r == null) {
                        error.run();
                    }
                } catch (Exception re) {
                    error.run();
                    Activator.logError(re);
                }
                // mark progress
                monitor.worked(1);
            }
        } catch (ServiceException e) {
            Activator.logError(e);
        }
    }
    // mark progress
    monitor.done();
    dialog.close();
}

From source file:org.eclipse.papyrus.infra.services.resourceloading.util.LoadingUtils.java

License:Open Source License

/**
 * Unload corresponding resources from model set for all its existing models.
 * //from w w w.  java 2s .  c o m
 * @param modelSet
 *        the model set
 * @param uriWithoutFileExtension
 *        path of resources to unload without file extension
 * @param refreshDiagramsWithProxies
 *        true if we must refresh necessary diagrams, false to skip it.
 */
public static void unloadResourcesFromModelSet(ModelSet modelSet, URI uriWithoutFileExtension,
        boolean refreshDiagramsWithProxies) {
    // initiate progress dialog
    ProgressMonitorDialog dialog = new ProgressMonitorDialog(Display.getCurrent().getActiveShell());
    dialog.open();
    IProgressMonitor monitor = dialog.getProgressMonitor();

    IEditorPart editor = getEditor();
    if (editor instanceof CoreMultiDiagramEditor) {
        CoreMultiDiagramEditor core = (CoreMultiDiagramEditor) editor;
        try {
            DiSashModelMngr sashModelMngr = core.getServicesRegistry().getService(DiSashModelMngr.class);
            IPageMngr pageMngr = sashModelMngr.getIPageMngr();
            List<Object> allPages = pageMngr.allPages();
            List<URI> pagesURIToOpen = new ArrayList<URI>(allPages.size());
            List<URI> pagesURIToRefresh = new ArrayList<URI>(allPages.size());
            if (refreshDiagramsWithProxies) {
                // mark progress
                monitor.beginTask(Messages.LoadingUtils_RefreshPagesTask, allPages.size());
                for (Object o : allPages) {
                    // refresh pages to cancel display of proxified elements
                    if (o instanceof EObject) {
                        EObject eobject = (EObject) o;
                        if (!eobject.eIsProxy()) {
                            URI trimFragment = eobject.eResource().getURI();
                            String frag = eobject.eResource().getURIFragment(eobject);
                            if (uriWithoutFileExtension.equals(trimFragment.trimFileExtension())) {
                                // diagram was in unloaded resource. Refresh it.
                                if (pageMngr.isOpen(eobject)) {
                                    pageMngr.closePage(eobject);
                                    pagesURIToOpen.add(trimFragment.appendFragment(frag));
                                }
                            } else if (pageMngr.isOpen(eobject)) {
                                // diagram is still loaded but may display proxified elements
                                pagesURIToRefresh.add(trimFragment.appendFragment(frag));
                            }
                        }
                    }
                    // mark progress
                    monitor.worked(1);
                }
            }
            // mark progress
            monitor.beginTask(Messages.LoadingUtils_UnloadModelsTask, modelSet.getResources().size());
            // unload resource
            for (Resource res : new ArrayList<Resource>(modelSet.getResources())) {
                if (res.getURI().trimFileExtension().equals(uriWithoutFileExtension)) {
                    // unload this resource
                    modelSet.getResources().remove(res);
                    res.unload();
                    res.eAdapters().clear();
                }
                // mark progress
                monitor.worked(1);
            }
            //            // mark progress
            //            monitor.beginTask("Resolve", 1);
            //            EcoreUtil.resolveAll(modelSet);
            //            monitor.worked(1);

            if (refreshDiagramsWithProxies) {
                // mark progress
                monitor.beginTask(Messages.LoadingUtils_RefreshPagesTask, allPages.size());
                // reopen pages from proxies and refresh necessary pages
                for (Object page : allPages) {
                    if (page instanceof EObject) {
                        EObject eobject = (EObject) page;
                        if (eobject.eIsProxy()) {
                            // reopen page from proxy if needed
                            InternalEObject internal = (InternalEObject) eobject;
                            URI uriProxy = internal.eProxyURI();
                            if (pagesURIToOpen.contains(uriProxy)) {
                                pageMngr.openPage(eobject);
                            }
                        } else if (eobject instanceof Diagram) {
                            // refresh page's diagram if needed
                            Diagram diag = ((Diagram) eobject);
                            if (pageMngr.isOpen(diag)) {
                                Object part = core.getDiagramGraphicalViewer().getEditPartRegistry().get(diag);
                                if (part instanceof GraphicalEditPart) {
                                    // refresh nodes
                                    for (Object child : EditPartUtilities
                                            .getAllChildren((GraphicalEditPart) part)) {
                                        if (child instanceof EditPart) {
                                            ((EditPart) child).refresh();
                                        }
                                    }
                                    // refresh edges
                                    for (Object child : EditPartUtilities
                                            .getAllNestedConnectionEditParts((GraphicalEditPart) part)) {
                                        if (child instanceof EditPart) {
                                            ((EditPart) child).refresh();
                                        }
                                    }
                                }
                            }
                        }
                    }
                    // mark progress
                    monitor.worked(1);
                }
            }
        } catch (ServiceException e) {
            Activator.logError(e);
        }
    }
    // mark progress
    monitor.done();
    dialog.close();
}

From source file:org.eclipse.scada.configuration.generator.ui.AbstractFileRunner.java

License:Open Source License

@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
    final List<IFile> files = SelectionHelper.list(getSelection(), IFile.class);

    final ProgressMonitorDialog dlg = new ProgressMonitorDialog(getShell());

    dlg.open();//from   w ww . ja v a 2  s  .co m

    try {
        ModalContext.run(new IRunnableWithProgress() {

            @Override
            public void run(final IProgressMonitor monitor)
                    throws InvocationTargetException, InterruptedException {

                try {
                    monitor.beginTask("Running generator", files.size());
                    for (final IFile file : files) {
                        final SubProgressMonitor sub = new SubProgressMonitor(monitor, 1);
                        try {
                            runFile(file, sub);
                        } catch (final Exception e) {
                            throw new InvocationTargetException(e);
                        } finally {
                            sub.done();
                        }
                    }
                } finally {
                    monitor.done();
                }
            }

        }, true, dlg.getProgressMonitor(), getShell().getDisplay());
    } catch (final Exception e) {
        e.printStackTrace();
        ErrorDialog.openError(getShell(), null, null, StatusHelper.convertStatus(Activator.PLUGIN_ID, e));
    } finally {
        dlg.close();
    }

    return null;
}

From source file:org.eclipse.ui.internal.browser.WebBrowserPreferencePage.java

License:Open Source License

/**
 * Create the preference options./*from   w  w w .j a  v  a 2s.  co m*/
 * 
 * @param parent
 *            org.eclipse.swt.widgets.Composite
 * @return org.eclipse.swt.widgets.Control
 */
protected Control createContents(Composite parent) {
    initializeDialogUnits(parent);
    PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, ContextIds.PREF_BROWSER);

    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(4);
    layout.verticalSpacing = convertVerticalDLUsToPixels(3);
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    composite.setLayout(layout);
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
    composite.setLayoutData(data);

    Label label = new Label(composite, SWT.WRAP);
    label.setText(Messages.preferenceWebBrowserDescription);
    data = new GridData(SWT.FILL, SWT.NONE, false, false);
    data.horizontalSpan = 2;
    data.widthHint = 275;
    label.setLayoutData(data);

    internal = new Button(composite, SWT.RADIO);
    internal.setText(Messages.prefInternalBrowser);
    data = new GridData(SWT.FILL, SWT.NONE, true, false);
    data.horizontalSpan = 2;
    internal.setLayoutData(data);

    if (!WebBrowserUtil.canUseInternalWebBrowser())
        internal.setEnabled(false);

    external = new Button(composite, SWT.RADIO);
    external.setText(Messages.prefExternalBrowser);
    data = new GridData(SWT.FILL, SWT.NONE, true, false);
    data.horizontalSpan = 2;
    external.setLayoutData(data);

    label = new Label(composite, SWT.NONE);
    label.setText(Messages.browserList);
    data = new GridData(SWT.FILL, SWT.CENTER, true, false);
    data.horizontalSpan = 2;
    label.setLayoutData(data);

    table = new Table(composite,
            SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE | SWT.FULL_SELECTION);
    data = new GridData(SWT.FILL, SWT.FILL, true, true);
    table.setLayoutData(data);
    table.setHeaderVisible(false);
    table.setLinesVisible(false);

    TableLayout tableLayout = new TableLayout();
    new TableColumn(table, SWT.NONE);
    tableLayout.addColumnData(new ColumnWeightData(100));
    table.setLayout(tableLayout);

    tableViewer = new CheckboxTableViewer(table);
    tableViewer.setContentProvider(new BrowserContentProvider());
    tableViewer.setLabelProvider(new BrowserTableLabelProvider());
    tableViewer.setInput("root"); //$NON-NLS-1$

    // uncheck any other elements that might be checked and leave only the
    // element checked to remain checked since one can only chose one
    // brower at a time to be current.
    tableViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent e) {
            checkNewDefaultBrowser(e.getElement());
            checkedBrowser = (IBrowserDescriptor) e.getElement();

            // if no other browsers are checked, don't allow the single one
            // currently checked to become unchecked, and lose a current
            // browser. That is, don't permit unchecking if no other item
            // is checked which is supposed to be the case.
            Object[] obj = tableViewer.getCheckedElements();
            if (obj.length == 0)
                tableViewer.setChecked(e.getElement(), true);
        }
    });

    // set a default, checked browser based on the current browser. If there
    // is not a current browser, but the first item exists, use that instead.
    // This will work currently until workbench shutdown, because current
    // browser is not yet persisted.
    checkedBrowser = BrowserManager.getInstance().getCurrentWebBrowser();
    if (checkedBrowser != null)
        tableViewer.setChecked(checkedBrowser, true);
    else {
        Object obj = tableViewer.getElementAt(0);
        if (obj != null)
            tableViewer.setChecked(obj, true);
    }

    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection sele = ((IStructuredSelection) tableViewer.getSelection());
            boolean sel = sele.getFirstElement() != null
                    && !(sele.getFirstElement() instanceof SystemBrowserDescriptor);
            remove.setEnabled(sel);
            edit.setEnabled(sel);
        }
    });

    tableViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection sel = ((IStructuredSelection) tableViewer.getSelection());
            Object firstElem = sel.getFirstElement();
            if (firstElem != null && !(firstElem instanceof SystemBrowserDescriptor)) {
                IBrowserDescriptor browser2 = (IBrowserDescriptor) sel.getFirstElement();
                IBrowserDescriptorWorkingCopy wc = browser2.getWorkingCopy();
                BrowserDescriptorDialog dialog = new BrowserDescriptorDialog(getShell(), wc);
                if (dialog.open() != Window.CANCEL) {
                    try {
                        tableViewer.refresh(wc.save());
                    } catch (Exception ex) {
                        // ignore
                    }
                }
            }
        }
    });

    table.addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent e) {
            if (e.character == SWT.DEL) {
                IStructuredSelection sel = ((IStructuredSelection) tableViewer.getSelection());
                if (sel.getFirstElement() != null) {
                    IBrowserDescriptor browser2 = (IBrowserDescriptor) sel.getFirstElement();
                    try {
                        browser2.delete();
                        tableViewer.remove(browser2);

                        // need here to ensure that if the item deleted was
                        // checked, ie. was
                        // the current browser, that the new current browser
                        // will be the first in the
                        // list, typically, the internal browser, which
                        // cannot be
                        // deleted, and be current
                        BrowserManager manager = BrowserManager.getInstance();
                        if (browser2 == checkedBrowser) {
                            if (manager.browsers.size() > 0) {
                                checkedBrowser = manager.browsers.get(0);
                                tableViewer.setChecked(checkedBrowser, true);
                            }
                        }
                    } catch (Exception ex) {
                        // ignore
                    }
                }
            }
        }

        public void keyReleased(KeyEvent e) {
            // ignore
        }
    });

    Composite buttonComp = new Composite(composite, SWT.NONE);
    layout = new GridLayout();
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = convertVerticalDLUsToPixels(3);
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    layout.numColumns = 1;
    buttonComp.setLayout(layout);
    data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
    buttonComp.setLayoutData(data);

    final Button add = SWTUtil.createButton(buttonComp, Messages.add);
    add.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            BrowserDescriptorDialog dialog = new BrowserDescriptorDialog(getShell());
            if (dialog.open() == Window.CANCEL)
                return;
            tableViewer.refresh();
            if (checkedBrowser != null)
                tableViewer.setChecked(checkedBrowser, true);
        }
    });

    edit = SWTUtil.createButton(buttonComp, Messages.edit);
    edit.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection sel = ((IStructuredSelection) tableViewer.getSelection());
            IBrowserDescriptor browser2 = (IBrowserDescriptor) sel.getFirstElement();
            IBrowserDescriptorWorkingCopy wc = browser2.getWorkingCopy();
            BrowserDescriptorDialog dialog = new BrowserDescriptorDialog(getShell(), wc);
            if (dialog.open() != Window.CANCEL) {
                try {
                    tableViewer.refresh(wc.save());
                } catch (Exception ex) {
                    // ignore
                }
            }
        }
    });

    remove = SWTUtil.createButton(buttonComp, Messages.remove);
    remove.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection sel = ((IStructuredSelection) tableViewer.getSelection());
            IBrowserDescriptor browser2 = (IBrowserDescriptor) sel.getFirstElement();
            try {
                browser2.delete();
                tableViewer.remove(browser2);

                // need here to ensure that if the item deleted was checked,
                // ie. was
                // the current browser, that the new current browser will be
                // the first in the
                // list, typically, the internal browser, which cannot be
                // deleted, and be current
                BrowserManager manager = BrowserManager.getInstance();
                if (browser2 == checkedBrowser) {
                    if (manager.browsers.size() > 0) {
                        checkedBrowser = manager.browsers.get(0);
                        tableViewer.setChecked(checkedBrowser, true);
                    }
                }
            } catch (Exception ex) {
                // ignore
            }
        }
    });

    search = SWTUtil.createButton(buttonComp, Messages.search);
    data = (GridData) search.getLayoutData();
    data.verticalIndent = 9;
    search.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            final List<IBrowserDescriptorWorkingCopy> foundBrowsers = new ArrayList<IBrowserDescriptorWorkingCopy>();
            final List<String> existingPaths = WebBrowserUtil.getExternalBrowserPaths();

            // select a target directory for the search
            DirectoryDialog dialog = new DirectoryDialog(getShell());
            dialog.setMessage(Messages.selectDirectory);
            dialog.setText(Messages.directoryDialogTitle);

            String path = dialog.open();
            if (path == null)
                return;

            final File rootDir = new File(path);
            ProgressMonitorDialog pm = new ProgressMonitorDialog(getShell());

            IRunnableWithProgress r = new IRunnableWithProgress() {
                public void run(IProgressMonitor monitor) {
                    monitor.beginTask(Messages.searchingTaskName, IProgressMonitor.UNKNOWN);
                    search(rootDir, existingPaths, foundBrowsers, new HashSet<String>(), monitor);
                    monitor.done();
                }
            };

            try {
                pm.run(true, true, r);
            } catch (InvocationTargetException ex) {
                Trace.trace(Trace.SEVERE, "Invocation Exception occured running monitor: " //$NON-NLS-1$
                        + ex);
            } catch (InterruptedException ex) {
                Trace.trace(Trace.SEVERE, "Interrupted exception occured running monitor: " //$NON-NLS-1$
                        + ex);
                return;
            }

            if (pm.getProgressMonitor().isCanceled())
                return;

            List<IBrowserDescriptorWorkingCopy> browsersToCreate = foundBrowsers;

            if (browsersToCreate.isEmpty()) { // no browsers found
                WebBrowserUtil.openMessage(Messages.searchingNoneFound);
                return;
            }

            Iterator<IBrowserDescriptorWorkingCopy> iterator = browsersToCreate.iterator();
            while (iterator.hasNext()) {
                IBrowserDescriptorWorkingCopy browser2 = iterator.next();
                browser2.save();
            }
            tableViewer.refresh();

            if (checkedBrowser != null)
                tableViewer.setChecked(checkedBrowser, true);
        }
    });

    tableViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent e) {
            checkNewDefaultBrowser(e.getElement());
            checkedBrowser = (IBrowserDescriptor) e.getElement();
        }
    });

    /*external.addSelectionListener(new SelectionListener() {
       public void widgetSelected(SelectionEvent e) {
    boolean sel = !tableViewer.getSelection().isEmpty();
    edit.setEnabled(sel);
    remove.setEnabled(sel);
       }
            
       public void widgetDefaultSelected(SelectionEvent e) {
    // ignore
       }
    });*/
    internal.setSelection(WebBrowserPreference.getBrowserChoice() == WebBrowserPreference.INTERNAL);
    external.setSelection(WebBrowserPreference.getBrowserChoice() == WebBrowserPreference.EXTERNAL);

    //boolean sel = !tableViewer.getSelection().isEmpty();
    IStructuredSelection sele = ((IStructuredSelection) tableViewer.getSelection());
    boolean sel = sele.getFirstElement() != null
            && !(sele.getFirstElement() instanceof SystemBrowserDescriptor);
    edit.setEnabled(sel);
    remove.setEnabled(sel);

    Dialog.applyDialogFont(composite);

    return composite;
}

From source file:org.eclipse.ui.internal.dialogs.WorkbenchEditorsDialog.java

License:Open Source License

/**
 * Saves the specified editors/*from  ww  w.jav a 2 s. c o m*/
 */
private void saveItems(TableItem items[]) {
    if (items.length == 0) {
        return;
    }
    ProgressMonitorDialog pmd = new ProgressMonitorJobsDialog(getShell());
    pmd.open();
    for (int i = 0; i < items.length; i++) {
        Adapter editor = (Adapter) items[i].getData();
        editor.save(pmd.getProgressMonitor());
        updateItem(items[i], editor);
    }
    pmd.close();
    updateItems();
}

From source file:org.eclipse.ui.tests.concurrency.TestBug269121.java

License:Open Source License

public void testBug() throws InterruptedException, InvocationTargetException {
    Job job = new UIJob("UI job") {
        @Override// w w  w .  ja v  a2  s. c o  m
        public IStatus runInUIThread(IProgressMonitor monitor) {
            return Status.OK_STATUS;
        };
    };
    job.setRule(ResourcesPlugin.getWorkspace().getRoot());
    final int[] status = new int[] { -1 };
    WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
        @Override
        protected void execute(IProgressMonitor monitor) {
            status[0] = TestBarrier.STATUS_DONE;
        }
    };
    final ProgressMonitorDialog dialog = new ProgressMonitorDialog(new Shell());
    Job statusJob = new Job("Checking for deadlock") {
        @Override
        protected IStatus run(IProgressMonitor monitor) {
            try {
                TestBarrier.waitForStatus(status, TestBarrier.STATUS_DONE);
                return Status.OK_STATUS;
            } catch (AssertionFailedError e) {
                // syncExecs are processed by
                // UILockListener.aboutToWait(Thread) without running the
                // event loop so we can cancel the dialog to stop the test
                dialog.getShell().getDisplay().syncExec(new Runnable() {
                    @Override
                    public void run() {
                        dialog.getProgressMonitor().setCanceled(true);
                    }
                });
                return Status.CANCEL_STATUS;
            }
        }
    };
    job.schedule();
    statusJob.schedule();
    try {
        dialog.run(false, true, operation);
    } catch (InterruptedException e) {
        // expected if operation was cancelled
    }
    statusJob.join();
    // run the event loop until the UI job is finished
    while (job.getResult() == null) {
        Display.getCurrent().readAndDispatch();
    }
    job.join();
    assertTrue("Deadlock occurred", statusJob.getResult().isOK());
}

From source file:org.eclipse.wst.server.ui.internal.RuntimePreferencePage.java

License:Open Source License

/**
 * Create the preference options./*from ww  w  .  j  av a  2  s  . co m*/
 *
 * @param parent org.eclipse.swt.widgets.Composite
 * @return org.eclipse.swt.widgets.Control
 */
protected Control createContents(Composite parent) {
    initializeDialogUnits(parent);
    PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, ContextIds.PREF_GENERAL);

    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(4);
    layout.verticalSpacing = convertVerticalDLUsToPixels(3);
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    layout.numColumns = 2;
    composite.setLayout(layout);
    GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
    composite.setLayoutData(data);

    Label label = new Label(composite, SWT.WRAP);
    data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    data.horizontalSpan = 2;
    label.setLayoutData(data);
    label.setText(Messages.preferenceRuntimesDescription);

    label = new Label(composite, SWT.WRAP);
    data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    data.horizontalSpan = 2;
    data.verticalIndent = 5;
    label.setLayoutData(data);
    label.setText(Messages.preferenceRuntimesTable);

    runtimeComp = new RuntimeComposite(composite, SWT.NONE, new RuntimeComposite.RuntimeSelectionListener() {
        public void runtimeSelected(IRuntime runtime) {
            if (runtime == null) {
                edit.setEnabled(false);
                remove.setEnabled(false);
                pathLabel.setText("");
            } else {
                IStatus status = runtime.validate(new NullProgressMonitor());
                if (status != null && status.getSeverity() == IStatus.ERROR) {
                    Color c = pathLabel.getDisplay().getSystemColor(SWT.COLOR_RED);
                    pathLabel.setForeground(c);
                    pathLabel.setText(status.getMessage());
                } else if (runtime.getLocation() != null) {
                    pathLabel.setForeground(edit.getForeground());
                    pathLabel.setText(runtime.getLocation() + "");
                } else
                    pathLabel.setText("");

                if (runtime.isReadOnly()) {
                    edit.setEnabled(false);
                    remove.setEnabled(false);
                } else {
                    if (runtime.getRuntimeType() != null)
                        edit.setEnabled(ServerUIPlugin.hasWizardFragment(runtime.getRuntimeType().getId()));
                    else
                        edit.setEnabled(false);
                    remove.setEnabled(true);
                }
            }
        }
    });
    runtimeComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL));

    Composite buttonComp = new Composite(composite, SWT.NONE);
    layout = new GridLayout();
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = convertVerticalDLUsToPixels(3);
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    layout.numColumns = 1;
    buttonComp.setLayout(layout);
    data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
    buttonComp.setLayoutData(data);

    Button add = SWTUtil.createButton(buttonComp, Messages.add);
    final RuntimeComposite runtimeComp2 = runtimeComp;
    add.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            if (showWizard(null) == Window.CANCEL)
                return;
            runtimeComp2.refresh();
        }
    });

    edit = SWTUtil.createButton(buttonComp, Messages.edit);
    edit.setEnabled(false);
    edit.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            IRuntime runtime = runtimeComp2.getSelectedRuntime();
            if (runtime != null) {
                IRuntimeWorkingCopy runtimeWorkingCopy = runtime.createWorkingCopy();
                if (showWizard(runtimeWorkingCopy) != Window.CANCEL) {
                    try {
                        runtimeComp2.refresh(runtime);
                    } catch (Exception ex) {
                        // ignore
                    }
                }
            }
        }
    });

    remove = SWTUtil.createButton(buttonComp, Messages.remove);
    remove.setEnabled(false);
    remove.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            IRuntime runtime = runtimeComp.getSelectedRuntime();
            if (removeRuntime(runtime))
                runtimeComp2.remove(runtime);
        }
    });

    Button search = SWTUtil.createButton(buttonComp, Messages.search);
    data = (GridData) search.getLayoutData();
    data.verticalIndent = 9;
    search.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            try {
                // select a target directory for the search
                DirectoryDialog directoryDialog = new DirectoryDialog(getShell());
                directoryDialog.setMessage(Messages.dialogRuntimeSearchMessage);
                directoryDialog.setText(Messages.dialogRuntimeSearchTitle);

                String pathStr = directoryDialog.open();
                if (pathStr == null)
                    return;

                final IPath path = new Path(pathStr);

                final ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
                dialog.setBlockOnOpen(false);
                dialog.setCancelable(true);
                dialog.open();
                final IProgressMonitor monitor = dialog.getProgressMonitor();
                final IRuntimeLocator[] locators = ServerPlugin.getRuntimeLocators();
                monitor.beginTask(Messages.dialogRuntimeSearchProgress, 100 * locators.length + 10);
                final List<IRuntimeWorkingCopy> list = new ArrayList<IRuntimeWorkingCopy>();

                final IRuntimeLocator.IRuntimeSearchListener listener = new IRuntimeLocator.IRuntimeSearchListener() {
                    public void runtimeFound(final IRuntimeWorkingCopy runtime) {
                        dialog.getShell().getDisplay().syncExec(new Runnable() {
                            public void run() {
                                monitor.subTask(runtime.getName());
                            }
                        });
                        list.add(runtime);
                    }
                };

                IRunnableWithProgress runnable = new IRunnableWithProgress() {
                    public void run(IProgressMonitor monitor2) {
                        int size = locators.length;
                        for (int i = 0; i < size; i++) {
                            if (!monitor2.isCanceled())
                                try {
                                    locators[i].searchForRuntimes(path, listener, monitor2);
                                } catch (CoreException ce) {
                                    if (Trace.WARNING) {
                                        Trace.trace(Trace.STRING_WARNING,
                                                "Error locating runtimes: " + locators[i].getId(), ce);
                                    }
                                }
                        }
                        if (Trace.INFO) {
                            Trace.trace(Trace.STRING_INFO, "Done search");
                        }
                    }
                };
                dialog.run(true, true, runnable);

                if (Trace.FINER) {
                    Trace.trace(Trace.STRING_FINER, "Found runtimes: " + list.size());
                }

                if (!monitor.isCanceled()) {
                    if (list.isEmpty()) {
                        EclipseUtil.openError(getShell(), Messages.infoNoRuntimesFound);
                        return;
                    }
                    monitor.worked(5);
                    if (Trace.FINER) {
                        Trace.trace(Trace.STRING_FINER, "Removing duplicates");
                    }
                    List<IRuntime> good = new ArrayList<IRuntime>();
                    Iterator iterator2 = list.iterator();
                    while (iterator2.hasNext()) {
                        boolean dup = false;
                        IRuntime wc = (IRuntime) iterator2.next();

                        IRuntime[] runtimes = ServerCore.getRuntimes();
                        if (runtimes != null) {
                            int size = runtimes.length;
                            for (int i = 0; i < size; i++) {
                                if (runtimes[i].getLocation() != null
                                        && runtimes[i].getLocation().equals(wc.getLocation()))
                                    dup = true;
                            }
                        }
                        if (!dup)
                            good.add(wc);
                    }
                    monitor.worked(5);

                    if (Trace.FINER) {
                        Trace.trace(Trace.STRING_FINER, "Adding runtimes: " + good.size());
                    }
                    Iterator iterator = good.iterator();
                    while (iterator.hasNext()) {
                        IRuntimeWorkingCopy wc = (IRuntimeWorkingCopy) iterator.next();
                        wc.save(false, monitor);
                    }
                    monitor.done();
                }
                dialog.close();
            } catch (Exception ex) {
                if (Trace.SEVERE) {
                    Trace.trace(Trace.STRING_SEVERE, "Error finding runtimes", ex);
                }
            }
            runtimeComp2.refresh();
        }
    });

    Button columnsButton = SWTUtil.createButton(buttonComp, Messages.actionColumns);
    data = (GridData) columnsButton.getLayoutData();
    final RuntimePreferencePage thisClass = this;
    columnsButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            ConfigureColumns.forTable(runtimeComp.getTable(), thisClass);
        }
    });

    pathLabel = new Label(parent, SWT.NONE);
    pathLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Dialog.applyDialogFont(composite);

    return composite;
}

From source file:org.eclipse.zest.examples.cloudio.application.actions.LoadFileAction.java

License:Open Source License

@Override
public void run(IAction action) {
    FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);

    dialog.setText("Select text file...");
    String sourceFile = dialog.open();
    if (sourceFile == null)
        return;/*from www  .j a v  a 2s  .co m*/
    ProgressMonitorDialog pd = new ProgressMonitorDialog(getShell());
    try {
        List<Type> types = TypeCollector.getData(new File(sourceFile), "UTF-8");
        pd.setBlockOnOpen(false);
        pd.open();
        pd.getProgressMonitor().beginTask("Generating cloud...", 200);
        TagCloudViewer viewer = getViewer();
        viewer.setInput(types, pd.getProgressMonitor());
        viewer.getCloud().layoutCloud(pd.getProgressMonitor(), false);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        pd.close();
    }
}

From source file:org.eclipse.zest.examples.cloudio.application.ui.TagCloudViewPart.java

License:Open Source License

private void createSideTab(SashForm form) {
    Composite parent = new Composite(form, SWT.NONE);
    parent.setLayout(new GridLayout());
    parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    options = new CloudOptionsComposite(parent, SWT.NONE, viewer) {

        protected Group addLayoutButtons(Composite parent) {
            Group buttons = super.addLayoutButtons(parent);

            Label l = new Label(buttons, SWT.NONE);
            l.setText("X Axis Variation");
            final Combo xAxis = new Combo(buttons, SWT.DROP_DOWN | SWT.READ_ONLY);
            xAxis.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
            xAxis.setItems(new String[] { "0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "100" });
            xAxis.select(2);//from   w  w  w .  jav  a2  s.  com
            xAxis.addSelectionListener(new SelectionListener() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    String item = xAxis.getItem(xAxis.getSelectionIndex());
                    layouter.setOption(DefaultLayouter.X_AXIS_VARIATION, Integer.parseInt(item));

                }

                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
                }
            });

            l = new Label(buttons, SWT.NONE);
            l.setText("Y Axis Variation");
            final Combo yAxis = new Combo(buttons, SWT.DROP_DOWN | SWT.READ_ONLY);
            yAxis.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
            yAxis.setItems(new String[] { "0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "100" });
            yAxis.select(1);
            yAxis.addSelectionListener(new SelectionListener() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    String item = yAxis.getItem(yAxis.getSelectionIndex());
                    layouter.setOption(DefaultLayouter.Y_AXIS_VARIATION, Integer.parseInt(item));
                }

                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
                }
            });

            Button run = new Button(buttons, SWT.NONE);
            run.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
            run.setText("Re-Position");
            run.addSelectionListener(new SelectionListener() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    final ProgressMonitorDialog dialog = new ProgressMonitorDialog(
                            viewer.getControl().getShell());
                    dialog.setBlockOnOpen(false);
                    dialog.open();
                    dialog.getProgressMonitor().beginTask("Layouting tag cloud...", 100);
                    viewer.reset(dialog.getProgressMonitor(), false);
                    dialog.close();
                }

                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
                }
            });
            Button layout = new Button(buttons, SWT.NONE);
            layout.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
            layout.setText("Re-Layout");
            layout.addSelectionListener(new SelectionListener() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    ProgressMonitorDialog dialog = new ProgressMonitorDialog(viewer.getControl().getShell());
                    dialog.setBlockOnOpen(false);
                    dialog.open();
                    dialog.getProgressMonitor().beginTask("Layouting tag cloud...", 200);
                    viewer.setInput(viewer.getInput(), dialog.getProgressMonitor());
                    viewer.reset(dialog.getProgressMonitor(), false);
                    dialog.close();
                }

                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
                }
            });
            return buttons;
        };

    };
    GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
    options.setLayoutData(gd);
}