Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvlorenzo2013-02-18 10:34:00 +0000
committervlorenzo2013-02-18 10:34:00 +0000
commitfab3a4ed66f81b04fbe432c3a34654d326f6521a (patch)
treeffc285a0b51554f8d08247d2d14e893eac59f4a6 /plugins
parenta7dd3b29641633472bf6af97a2331b9da31c2577 (diff)
downloadorg.eclipse.papyrus-fab3a4ed66f81b04fbe432c3a34654d326f6521a.tar.gz
org.eclipse.papyrus-fab3a4ed66f81b04fbe432c3a34654d326f6521a.tar.xz
org.eclipse.papyrus-fab3a4ed66f81b04fbe432c3a34654d326f6521a.zip
401063: [Table] Memory Leak with Customization Engine
https://bugs.eclipse.org/bugs/show_bug.cgi?id=401063
Diffstat (limited to 'plugins')
-rw-r--r--plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/IPapyrusNatTableWidget.java3
-rw-r--r--plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/NatTableEditor.java5
-rw-r--r--plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/PapyrusNatTableWidget.java5
3 files changed, 12 insertions, 1 deletions
diff --git a/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/IPapyrusNatTableWidget.java b/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/IPapyrusNatTableWidget.java
index e0499976409..1edf41bb452 100644
--- a/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/IPapyrusNatTableWidget.java
+++ b/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/IPapyrusNatTableWidget.java
@@ -17,6 +17,7 @@ import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.facet.widgets.nattable.INatTableWidget;
+import org.eclipse.ui.services.IDisposable;
/**
*
@@ -31,7 +32,7 @@ import org.eclipse.emf.facet.widgets.nattable.INatTableWidget;
* @author VL222926
*
*/
-public interface IPapyrusNatTableWidget extends INatTableWidget {
+public interface IPapyrusNatTableWidget extends INatTableWidget , IDisposable{
/**
* This method allow to add elements in the table without execute the command in the command stack
diff --git a/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/NatTableEditor.java b/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/NatTableEditor.java
index 884e3d289c0..685b58be820 100644
--- a/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/NatTableEditor.java
+++ b/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/NatTableEditor.java
@@ -334,6 +334,11 @@ public class NatTableEditor extends EditorPart implements ISelectionProvider, IE
}
editingDomain.getCommandStack().removeCommandStackListener(commandListener);
super.dispose();
+ for(final ISelectionChangedListener listener : this.natTableWidget.getSelectionChangedListeners()) {
+ this.natTableWidget.removeSelectionChangedListener(listener);
+ }
+ ((IPapyrusNatTableWidget)this.natTableWidget).dispose();
+ this.natTableWidget = null;
}
@Override
diff --git a/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/PapyrusNatTableWidget.java b/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/PapyrusNatTableWidget.java
index bc95b3639c1..eaf569aa2d4 100644
--- a/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/PapyrusNatTableWidget.java
+++ b/plugins/infra/table/org.eclipse.papyrus.infra.table.common/src/org/eclipse/papyrus/infra/table/common/internal/PapyrusNatTableWidget.java
@@ -254,5 +254,10 @@ public class PapyrusNatTableWidget extends NatTableWidget implements IPapyrusNat
}
getEditingDomain().getCommandStack().execute(addRowCommand);
}
+
+ @Override
+ public void dispose() {
+ getCustomizationEngine().clear();
+ }
}

Back to the top