Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpguilet2017-09-26 15:19:26 +0000
committerPierre-Charles David2017-09-27 07:28:59 +0000
commitb92f4799c7b2419652470fe643eb3a9e460a412b (patch)
tree695c94783833e1f2b47ae441e7be30178cad5cef
parent9c1e2880e80908300e25829dbb87f79dc3eef2e9 (diff)
downloadorg.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>
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java2
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/graphicalcomponents/GraphicalRepresentationHandler.java5
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/wizards/pages/RepresentationSelectionWizardPage.java22
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);

Back to the top