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

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

Introduction

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

Prototype

@Override
public boolean close() 

Source Link

Document

The ProgressMonitorDialog implementation of this method only closes the dialog if there are no currently running runnables.

Usage

From source file:org.eclipse.emf.emfstore.internal.client.ui.dialogs.admin.acimport.wizard.AcUserImportPageOne.java

License:Open Source License

/**
 * @param parent/*from ww  w.  j  a  v a2 s.  c om*/
 *            The parent Composite which gets filled here.
 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
 */
public void createControl(Composite parent) {
    // Set the specific help (performHelp() didn't work as expected).
    // See:
    // http://stackoverflow.com/questions/1012929/eclipse-contextual-help/1021718
    // http://dev.eclipse.org/newslists/news.eclipse.platform.ua/msg00359.html
    PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
            Activator.PLUGIN_ID + ".help_import_wizard_page_one"); //$NON-NLS-1$

    final Composite composite = new Composite(parent, SWT.NONE);

    composite.setLayout(new GridLayout(1, false));
    final Label label = new Label(composite, SWT.None);
    label.setText(Messages.AcUserImportPageOne_ChooseImportSource + "."); //$NON-NLS-1$

    final Button[] radios = new Button[list.size()];

    int i = 0;
    for (final ImportSource src : list) {
        radios[i] = new Button(composite, SWT.RADIO);
        radios[i].setText(src.getLabel());
        radios[i].setBounds(30, 5, 200, 30);
        radios[i].addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                // do this only if item gets checked, not unchecked!
                final boolean isCurrentrlySelected = ((Button) e.getSource()).getSelection();
                if (isCurrentrlySelected) {
                    final AcUserImportPageTwo nextPage = (AcUserImportPageTwo) getNextPage();
                    final AcUserImportWizard wizard = (AcUserImportWizard) getWizard();
                    wizard.getController().setImportSource(src);
                    if (src.init(getShell())) {
                        final ProgressMonitorDialog progressMonitorDialog = new ProgressMonitorDialog(
                                getShell());
                        progressMonitorDialog.open();
                        progressMonitorDialog.getProgressMonitor()
                                .beginTask(Messages.AcUserImportPageOne_Loading, IProgressMonitor.UNKNOWN);
                        nextPage.init(src);
                        progressMonitorDialog.close();
                        setPageComplete(true);
                        getContainer().showPage(getNextPage());
                    }
                }
            }
        });
        i++;
    }

    setControl(composite);
    setPageComplete(false);
}

From source file:org.eclipse.emf.emfstore.internal.client.ui.dialogs.admin.acimport.wizard.AcUserImportWizard.java

License:Open Source License

/**
 * @see org.eclipse.jface.wizard.Wizard#performFinish()
 * @return a boolean which indicates, if there are items selected or not.
 *//* w  w w  . j av a2s  .  c  o m*/
@Override
public boolean performFinish() {
    final ArrayList<ImportItemWrapper> wrappedOrgUnits = ((AcUserImportPageTwo) getPages()[1])
            .getCheckedItems();
    if (wrappedOrgUnits.size() > 0) {
        final ProgressMonitorDialog progressMonitorDialog = new ProgressMonitorDialog(getShell());
        progressMonitorDialog.open();
        progressMonitorDialog.getProgressMonitor().beginTask(Messages.AcUserImportWizard_ImportingUsers,
                IProgressMonitor.UNKNOWN);

        importController.importOrgUnits(wrappedOrgUnits);

        progressMonitorDialog.close();
        return true;
    }

    return false;
}

From source file:org.eclipse.gef4.cloudio.examples.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 ww w .  java  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.gef4.cloudio.examples.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 addMaskButton(Composite parent) {
            Group buttons = new Group(parent, SWT.SHADOW_IN);
            buttons.setLayout(new GridLayout(2, true));
            buttons.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
            Label l = new Label(buttons, SWT.NONE);
            l.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
            l.setText("Mask");
            Button file = new Button(buttons, SWT.FLAT);
            file.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
            file.setText("Open...");
            file.addListener(SWT.Selection, new Listener() {

                @Override/*from  ww  w . ja  v a  2  s. c  o  m*/
                public void handleEvent(Event event) {
                    FileDialog fd = new FileDialog(getShell(), SWT.OPEN);

                    fd.setText("Select a square b&w png image as mask...");
                    String sourceFile = fd.open();
                    if (sourceFile == null)
                        return;
                    try {
                        ImageLoader loader = new ImageLoader();
                        BufferedInputStream in = new BufferedInputStream(
                                new FileInputStream(new File(sourceFile)));
                        ImageData[] data = loader.load(in);
                        in.close();
                        viewer.getCloud().setBackgroundMask(data[0]);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }

            });
            return buttons;
        }

        protected void addGroups() {
            addMaskButton(this);
            super.addGroups();
        }

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

            Label l = new Label(buttons, SWT.NONE);
            l.setText("Scale");
            final Combo scale = new Combo(buttons, SWT.DROP_DOWN | SWT.READ_ONLY);
            scale.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
            scale.setItems(new String[] { "linear", "logarithmic" });
            scale.addSelectionListener(new SelectionListener() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    switch (scale.getSelectionIndex()) {
                    case 0:
                        labelProvider.setScale(TypeLabelProvider.Scaling.LINEAR);
                        break;
                    case 1:
                        labelProvider.setScale(TypeLabelProvider.Scaling.LOGARITHMIC);
                        break;
                    default:
                        break;
                    }
                }

                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
                }
            });
            scale.select(1);
            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);
            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);
}

From source file:org.eclipse.gef4.cloudio.internal.ui.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   w w  w . j  a  v a  2 s. 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.gef4.cloudio.internal.ui.view.TagCloudView.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 addMaskButton(Composite parent) {
            Group buttons = new Group(parent, SWT.SHADOW_IN);
            buttons.setLayout(new GridLayout(2, true));
            buttons.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
            Label l = new Label(buttons, SWT.NONE);
            l.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
            l.setText("Mask");
            Button file = new Button(buttons, SWT.FLAT);
            file.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
            file.setText("Open...");
            file.addListener(SWT.Selection, new Listener() {

                @Override/*from   w w w  .  j a  v a 2s.co  m*/
                public void handleEvent(Event event) {
                    FileDialog fd = new FileDialog(getShell(), SWT.OPEN);

                    fd.setText("Select a square b&w png image as mask...");
                    String sourceFile = fd.open();
                    if (sourceFile == null)
                        return;
                    try {
                        ImageLoader loader = new ImageLoader();
                        BufferedInputStream in = new BufferedInputStream(
                                new FileInputStream(new File(sourceFile)));
                        ImageData[] data = loader.load(in);
                        in.close();
                        viewer.getCloud().setBackgroundMask(data[0]);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }

            });
            return buttons;
        }

        protected void addGroups() {
            addMaskButton(this);
            super.addGroups();
        }

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

            Label l = new Label(buttons, SWT.NONE);
            l.setText("Scale");
            final Combo scale = new Combo(buttons, SWT.DROP_DOWN | SWT.READ_ONLY);
            scale.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
            scale.setItems(new String[] { "linear", "logarithmic" });
            scale.addSelectionListener(new SelectionListener() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    switch (scale.getSelectionIndex()) {
                    case 0:
                        labelProvider.setScale(TypeLabelProvider.Scaling.LINEAR);
                        break;
                    case 1:
                        labelProvider.setScale(TypeLabelProvider.Scaling.LOGARITHMIC);
                        break;
                    default:
                        break;
                    }
                }

                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
                }
            });
            scale.select(1);
            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);
            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);
}

From source file:org.eclipse.mdht.uml.term.ui.actions.ImportTerminologyAction.java

License:Open Source License

/**
 * @see IActionDelegate#run(IAction)// w  w w . j av  a2s .  com
 */
public void run(IAction action) {

    ProgressMonitorDialog progressDialog = new ProgressMonitorDialog(shell);

    ObjectPluginAction opa = (ObjectPluginAction) action;

    final TreeSelection selection = (TreeSelection) opa.getSelection();

    final String ActionTitle = "Import Terminology";

    final FileDialog fdlg = new FileDialog(shell, SWT.SINGLE);

    fdlg.setText("Select Terminology Source File");

    fdlg.setFilterNames(FILTER_NAMES);
    fdlg.setFilterExtensions(FILTER_EXTS);

    IRunnableWithProgress runnableWithProgress = new IRunnableWithProgress() {

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

            IWorkspaceRoot myWorkspaceRoot = ResourcesPlugin.getWorkspace().getRoot();

            File f = (File) selection.getFirstElement();

            String umlPath = myWorkspaceRoot.getLocation().toOSString() + f.getFullPath().toOSString();

            try {
                importTerminlogy(monitor, umlPath, fdlg);
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                myWorkspaceRoot.refreshLocal(IResource.DEPTH_INFINITE, null);
            } catch (CoreException e) {
            }

            if (monitor.isCanceled()) {
                monitor.done();
                return;
            }

            monitor.done();

        }

    };

    try {
        if (fdlg.open() != null) {
            progressDialog.run(false, true, runnableWithProgress);
            UMLModelMetricsDialog dlg = new UMLModelMetricsDialog(shell);
            dlg.create();
            dlg.open();
        }

    } catch (InvocationTargetException invocationTargetException) {
        MessageDialog.openError(shell, ActionTitle,
                "Error Processing Export " + invocationTargetException.getMessage());

    } catch (InterruptedException interruptedException) {
        MessageDialog.openError(shell, ActionTitle,
                "Error Processing Export " + interruptedException.getMessage());

    } finally {
        progressDialog.close();

    }
}

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   www.  ja  va 2  s  . co  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.
 * /* w  w w.j a  v a  2  s .  co m*/
 * @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.
 * // w  w w  . j  ava2s.  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();
}