diff options
author | Nicolas FAUVERGUE | 2016-01-28 17:18:08 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2016-02-02 13:59:05 +0000 |
commit | c9a998ee14b4f4f8da218c356fec83ca3f79bffb (patch) | |
tree | 9164eb2a1046b862a6fe06adc3ab2b7d0faa3b38 | |
parent | b7a494a8e1f028563c4e38e1d7088f2f529b60d1 (diff) | |
download | org.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.java | 30 |
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); } + + } |