Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcletavernie2012-08-24 12:45:09 +0000
committercletavernie2012-08-24 12:45:09 +0000
commit80c84de1d986c4fc1c7791b3b9110fa9bd8af5ad (patch)
treec1fb5d8c344bd3c59ccb82e1929b39f4309f4ab1 /plugins
parent726cfa48d9c2d607268a05a40ac8ea7490a26a80 (diff)
downloadorg.eclipse.papyrus-80c84de1d986c4fc1c7791b3b9110fa9bd8af5ad.tar.gz
org.eclipse.papyrus-80c84de1d986c4fc1c7791b3b9110fa9bd8af5ad.tar.xz
org.eclipse.papyrus-80c84de1d986c4fc1c7791b3b9110fa9bd8af5ad.zip
357193: Too many NullPointerException (NPE)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=357193 Fix a few NPEs on the EMFTree
Diffstat (limited to 'plugins')
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/Activator.java4
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/UMLEditor.java28
2 files changed, 28 insertions, 4 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/Activator.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/Activator.java
index bb5b8d9c8c0..fca79656711 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/Activator.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/Activator.java
@@ -13,6 +13,7 @@
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.emftree;
+import org.eclipse.papyrus.infra.core.log.LogHelper;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -27,6 +28,8 @@ public class Activator extends AbstractUIPlugin {
// The shared instance
private static Activator plugin;
+ public static LogHelper log;
+
/**
* The constructor
*/
@@ -42,6 +45,7 @@ public class Activator extends AbstractUIPlugin {
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
+ log = new LogHelper(this);
}
/*
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/UMLEditor.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/UMLEditor.java
index 3a11ae878b4..c25947a78b5 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/UMLEditor.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.emftree/src/org/eclipse/papyrus/uml/diagram/emftree/UMLEditor.java
@@ -43,13 +43,15 @@ import org.eclipse.ui.views.properties.IPropertySheetPage;
*
* @generated
*/
-public class UMLEditor extends org.eclipse.uml2.uml.editor.presentation.UMLEditor implements IEditingDomainProvider,
-ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+public class UMLEditor extends org.eclipse.uml2.uml.editor.presentation.UMLEditor implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
/**
* ServiceRegistry used to retrieve needed services. This registry is provided by the multieditor.
*/
protected ServicesRegistry servicesRegistry;
+
+ protected CommandStackListener commandStackListener;
+
/**
*
* Constructor. Create an DiEditor using the {@link ServicesRegistry}.
@@ -75,9 +77,13 @@ ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
// Add a listener to set the most recent command's affected objects to be the selection of
// the viewer with focus.
//
- commandStack.addCommandStackListener(new CommandStackListener() {
+
+ commandStackListener = new CommandStackListener() {
public void commandStackChanged(final EventObject event) {
+ if(getContainer().isDisposed()) {
+ return;
+ }
getContainer().getDisplay().asyncExec(new Runnable() {
public void run() {
@@ -96,7 +102,9 @@ ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
});
}
- });
+ };
+
+ commandStack.addCommandStackListener(commandStackListener);
// Create the editing domain with a special command stack.
//
@@ -173,6 +181,18 @@ ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
}
}
+ @Override
+ public void dispose() {
+ //super.dispose(); //FIXME: Fails on a ClassCastException: The ActionBarContributor is not accessible
+ try {
+ TransactionalEditingDomain papyrusEditingDomain = servicesRegistry.getService(TransactionalEditingDomain.class);
+ CommandStack commandStack = papyrusEditingDomain.getCommandStack();
+ commandStack.removeCommandStackListener(commandStackListener);
+ } catch (ServiceException e) {
+ Activator.log.error(e);
+ }
+ }
+
/**
* Has we have no actionBarContributor, we can't get the status line. So skip this method.
*/

Back to the top