]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/GraphExplorerViewBase.java
Fixed IEditorPart reference (memory) leaks from ResourceEditorSupport
[simantics/platform.git] / bundles / org.simantics.browsing.ui.swt / src / org / simantics / browsing / ui / swt / GraphExplorerViewBase.java
index 72307b32f22ec8371841ed96ef4c469e7d85453a..4b1d8ffef94c1e59d4756ddb994bfd3b293df6af 100644 (file)
@@ -27,6 +27,7 @@ import org.eclipse.ui.IViewSite;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.services.IDisposable;
 import org.simantics.browsing.ui.Column;
 import org.simantics.browsing.ui.GraphExplorer;
 import org.simantics.browsing.ui.NodeContext;
@@ -298,6 +299,8 @@ public abstract class GraphExplorerViewBase extends ViewPart {
         // Remember to remove the installed workbench selection listener
         if (workbenchSelectionListener != null) {
             getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(workbenchSelectionListener);
+            if (workbenchSelectionListener instanceof IDisposable)
+                ((IDisposable) workbenchSelectionListener).dispose();
             workbenchSelectionListener = null;
 
             getSite().setSelectionProvider(null);
@@ -520,16 +523,16 @@ public abstract class GraphExplorerViewBase extends ViewPart {
         return true;
     }
 
-    @SuppressWarnings("rawtypes")
+    @SuppressWarnings("unchecked")
     @Override
-    public Object getAdapter(Class adapter) {
+    public <T> T getAdapter(Class<T> adapter) {
 
         if (GraphExplorer.class == adapter)
-            return explorer;
+            return (T) explorer;
         else if(ISessionContextProvider.class == adapter)
-            return getSessionContextProvider();
+            return (T) getSessionContextProvider();
         else if(IPropertyPage.class == adapter)
-            return getPropertyPage();
+            return (T) getPropertyPage();
 
         return super.getAdapter(adapter);