[546681] Fix lifecycle of SessionEditor

Make sure we cleanup all our resources and remove all our listeners in
dispose(). No need anymore to override the close() method.

Bug: 546681
Change-Id: I3d8e29ae7734de7b9fdecbd622bddb63c0e3ca31
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
diff --git a/plugins/org.eclipse.sirius.ui.editor/src/org/eclipse/sirius/ui/editor/SessionEditor.java b/plugins/org.eclipse.sirius.ui.editor/src/org/eclipse/sirius/ui/editor/SessionEditor.java
index 8d4ea7e..82980ed 100644
--- a/plugins/org.eclipse.sirius.ui.editor/src/org/eclipse/sirius/ui/editor/SessionEditor.java
+++ b/plugins/org.eclipse.sirius.ui.editor/src/org/eclipse/sirius/ui/editor/SessionEditor.java
@@ -435,6 +435,7 @@
             resourceSetListener = null;
         }
         if (session != null) {
+            session.removeListener(SessionEditor.this);
             final IEditingSession editingSession = SessionUIManager.INSTANCE.getUISession(session);
             if (editingSession != null) {
                 editingSession.detachEditor(this, choice == ISaveablePart2.NO);
@@ -443,18 +444,13 @@
                 session.getTransactionalEditingDomain().getCommandStack().removeCommandStackListener(listener);
             }
         }
-        session = null;
-        propertySheetPage = null;
-        super.dispose();
-    }
-
-    @Override
-    public void close(boolean save) {
         if (pageRegistry != null) {
             pageRegistry.removeRegistryListener(this);
             pageRegistry = null;
-            super.close(save);
         }
+        session = null;
+        propertySheetPage = null;
+        super.dispose();
     }
 
     @Override