diff options
| author | pguilet | 2017-09-26 15:19:26 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2017-09-27 07:28:59 +0000 |
| commit | b92f4799c7b2419652470fe643eb3a9e460a412b (patch) | |
| tree | 695c94783833e1f2b47ae441e7be30178cad5cef | |
| parent | 9c1e2880e80908300e25829dbb87f79dc3eef2e9 (diff) | |
| download | org.eclipse.sirius-b92f4799c7b2419652470fe643eb3a9e460a412b.tar.gz org.eclipse.sirius-b92f4799c7b2419652470fe643eb3a9e460a412b.tar.xz org.eclipse.sirius-b92f4799c7b2419652470fe643eb3a9e460a412b.zip | |
[522620] Fix SWTException when using RepresentationSelectionWizardPage
Fix exception thrown when RepresentationSelectionWizardPage schedule a
RefreshLabelImageJob that is executed after the wizard is disposed.
Bug: 522620
Change-Id: I241cc4cece9c2ac71f408f65d09aaac15d854ea8
Signed-off-by: pguilet <pierre.guilet@obeo.fr>
3 files changed, 25 insertions, 4 deletions
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java index fa81ec91ac..c9284cf03f 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java @@ -75,7 +75,7 @@ public class RefreshLabelImageJob extends UIJob { */ @Override public IStatus runInUIThread(IProgressMonitor monitor) { - if (commonViewer != null) { + if (commonViewer != null && commonViewer.getTree() != null && !commonViewer.getTree().isDisposed()) { if (elementsToRefresh == null || elementsToRefresh.isEmpty()) { commonViewer.refresh(); } else { diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/graphicalcomponents/GraphicalRepresentationHandler.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/graphicalcomponents/GraphicalRepresentationHandler.java index 868be129a4..ca6e921fd9 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/graphicalcomponents/GraphicalRepresentationHandler.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/graphicalcomponents/GraphicalRepresentationHandler.java @@ -1026,7 +1026,10 @@ public class GraphicalRepresentationHandler implements SessionManagerListener { * Dispose all listeners. */ public void dispose() { - siriusCommonContentProvider.dispose(); + if (siriusCommonContentProvider != null) { + siriusCommonContentProvider.dispose(); + siriusCommonContentProvider = null; + } SessionManager.INSTANCE.removeSessionsListener(this); if (session != null && session.getTransactionalEditingDomain() != null) { session.getTransactionalEditingDomain().removeResourceSetListener(refreshViewerOnChangeResourceSetListener); diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/wizards/pages/RepresentationSelectionWizardPage.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/wizards/pages/RepresentationSelectionWizardPage.java index e5c1136245..d980af68e1 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/wizards/pages/RepresentationSelectionWizardPage.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/wizards/pages/RepresentationSelectionWizardPage.java @@ -88,6 +88,11 @@ public class RepresentationSelectionWizardPage extends WizardPage { private EObject semanticElement; /** + * The component allowing to select representation descriptors. + */ + private GraphicalRepresentationHandler graphicalRepresentationHandler; + + /** * Create a new <code>RepresentationSelectionWizardPage</code>. * * @param root @@ -226,6 +231,19 @@ public class RepresentationSelectionWizardPage extends WizardPage { this.semanticSelectionWizard = selectionWizard; } + /* + * (non-Javadoc) + * @see org.eclipse.jface.dialogs.DialogPage#dispose() + */ + @Override + public void dispose() { + if (graphicalRepresentationHandler != null) { + graphicalRepresentationHandler.dispose(); + graphicalRepresentationHandler = null; + } + super.dispose(); + } + @Override public void createControl(final Composite parent) { initializeDialogUnits(parent); @@ -235,8 +253,8 @@ public class RepresentationSelectionWizardPage extends WizardPage { pageComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); SessionContentProvider theContentProvider = new SessionContentProvider(semanticElement); GraphicalRepresentationHandlerBuilder graphicalRepresentationHandlerBuilder = new GraphicalRepresentationHandler.GraphicalRepresentationHandlerBuilder(session); - GraphicalRepresentationHandler graphicalRepresentationHandler = graphicalRepresentationHandlerBuilder.customizeContentAndLabel(theContentProvider, new SiriusRepresentationLabelProvider()) - .filterEmptyViewpoints().activateBrowserWithViewpointAndRepresentationDescriptionInformation().build(); + graphicalRepresentationHandler = graphicalRepresentationHandlerBuilder.customizeContentAndLabel(theContentProvider, new SiriusRepresentationLabelProvider()).filterEmptyViewpoints() + .activateBrowserWithViewpointAndRepresentationDescriptionInformation().build(); graphicalRepresentationHandler.createControl(pageComposite); treeViewer = graphicalRepresentationHandler.getTreeViewer(); Collection<Viewpoint> availableViewpoints = ViewpointHelper.getAvailableViewpoints(session); |
