Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas FAUVERGUE2016-01-28 17:18:08 +0000
committerGerrit Code Review @ Eclipse.org2016-02-02 13:59:05 +0000
commitc9a998ee14b4f4f8da218c356fec83ca3f79bffb (patch)
tree9164eb2a1046b862a6fe06adc3ab2b7d0faa3b38
parentb7a494a8e1f028563c4e38e1d7088f2f529b60d1 (diff)
downloadorg.eclipse.papyrus-c9a998ee14b4f4f8da218c356fec83ca3f79bffb.tar.gz
org.eclipse.papyrus-c9a998ee14b4f4f8da218c356fec83ca3f79bffb.tar.xz
org.eclipse.papyrus-c9a998ee14b4f4f8da218c356fec83ca3f79bffb.zip
Bug 486100 - [Table] Memory Leak in PapyrusHeaderPopupMenuAction
https://bugs.eclipse.org/bugs/show_bug.cgi?id=486100 Dispose the menu manager and the menu when they are already created before. Change-Id: I7b50e5874fb7c1d6c83198154ff52b26a0160867 Signed-off-by: Nicolas FAUVERGUE <nicolas.fauvergue@all4tec.net>
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/menu/PapyrusHeaderPopupMenuAction.java30
1 files changed, 23 insertions, 7 deletions
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/menu/PapyrusHeaderPopupMenuAction.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/menu/PapyrusHeaderPopupMenuAction.java
index c3eacc09725..0310361d8fb 100644
--- a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/menu/PapyrusHeaderPopupMenuAction.java
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/menu/PapyrusHeaderPopupMenuAction.java
@@ -43,6 +43,16 @@ public class PapyrusHeaderPopupMenuAction extends PopupMenuAction {
private final String menuLocation;
/**
+ * The menu manager for the menu creation.
+ */
+ private MenuManager menuManager = null;
+
+ /**
+ * The create menu.
+ */
+ private Menu menu = null;
+
+ /**
* Constructor.
*
* @param menu
@@ -54,15 +64,19 @@ public class PapyrusHeaderPopupMenuAction extends PopupMenuAction {
}
/**
+ * {@inheritDoc}
+ *
* @see org.eclipse.nebula.widgets.nattable.ui.menu.PopupMenuAction#run(org.eclipse.nebula.widgets.nattable.NatTable, org.eclipse.swt.events.MouseEvent)
- *
- * @param natTable
- * @param event
*/
@Override
- public void run(NatTable natTable, MouseEvent event) {
- final MenuManager menuManager = new MenuManager(MenuConstants.POPUP, this.menuId);
- final Menu menu = menuManager.createContextMenu(natTable);
+ public void run(final NatTable natTable, final MouseEvent event) {
+ if (null != menu && null != menuManager) {
+ menu.dispose();
+ menuManager.dispose();
+ }
+
+ menuManager = new MenuManager(MenuConstants.POPUP, this.menuId);
+ menu = menuManager.createContextMenu(natTable);
addMenuSeparators(menuManager);
/* This listener allows us to fill the popup menu using extension point contributing to the popup menu of the table */
@@ -96,9 +110,11 @@ public class PapyrusHeaderPopupMenuAction extends PopupMenuAction {
final Separator general = new Separator(MenuConstants.GENERAL_SEPARATOR_ID);
general.setVisible(false);
menuManager.add(general);
-
+
final Separator edit = new Separator(MenuConstants.EDIT_SEPARATOR_ID);
edit.setVisible(true);
menuManager.add(edit);
}
+
+
}

Back to the top