]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.issues.ui/src/org/simantics/issues/ui/IssueView2.java
Issues-view menu improvements & Variable-based issue context resolution
[simantics/platform.git] / bundles / org.simantics.issues.ui / src / org / simantics / issues / ui / IssueView2.java
index b683f246455ac13e5a52a29f7b555a25407421c6..162eeff87d5913862e9ff2fa7d5a799c3831dccf 100644 (file)
  *******************************************************************************/
 package org.simantics.issues.ui;
 
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IWorkbenchPart;
 import org.simantics.Simantics;
+import org.simantics.browsing.ui.GraphExplorer;
+import org.simantics.browsing.ui.model.browsecontexts.BrowseContext;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.common.request.ResourceRead;
@@ -23,6 +27,7 @@ import org.simantics.diagram.stubs.DiagramResource;
 import org.simantics.issues.ui.ontology.IssueUIResource;
 import org.simantics.modeling.ModelingResources;
 import org.simantics.ui.workbench.IPropertyPage;
+import org.simantics.utils.ui.SWTUtils;
 import org.simantics.views.swt.ModelledView;
 
 /**
@@ -101,4 +106,29 @@ public class IssueView2 extends ModelledView {
         return null;
     }
 
+    @SuppressWarnings({ "unchecked", "deprecation" })
+    @Override
+    public <T> T getAdapter(Class<T> adapter) {
+        if (GraphExplorer.class == adapter)
+            return (T) tryGetExplorer(container);
+        if (BrowseContext.class == adapter)
+            return (T) tryGetBrowseContext(container);
+        return super.getAdapter(adapter);
+    }
+
+    private BrowseContext tryGetBrowseContext(Control control) {
+        return SWTUtils.tryGetObject(control, c -> {
+            return c instanceof IAdaptable
+                    ? (BrowseContext) ((IAdaptable) c).getAdapter(BrowseContext.class)
+                            : null;
+        });
+    }
+
+    private GraphExplorer tryGetExplorer(Control control) {
+        return SWTUtils.tryGetObject(control, c -> {
+            return c.isDisposed() ? null
+                    : (GraphExplorer) c.getData(GraphExplorer.KEY_GRAPH_EXPLORER);
+        });
+    }
+
 }