]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.ui/src/org/simantics/ui/selection/WorkbenchSelectionUtils.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.ui / src / org / simantics / ui / selection / WorkbenchSelectionUtils.java
index 47e866d0f61a651d7df83d53c93e6041740cdd09..e3e6eeafe9270432ab1a1a1dd984d8f8ea3d2306 100644 (file)
@@ -11,6 +11,7 @@ import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.ui.handlers.HandlerUtil;
 import org.simantics.Simantics;
+import org.simantics.databoard.type.Datatype;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.RequestProcessor;
 import org.simantics.db.Resource;
@@ -18,7 +19,9 @@ import org.simantics.db.common.primitiverequest.IsInstanceOf;
 import org.simantics.db.common.primitiverequest.Supertypes;
 import org.simantics.db.common.primitiverequest.Types;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.request.PossibleGUID;
 import org.simantics.db.layer0.request.PossibleURI;
+import org.simantics.db.layer0.request.PossibleVariableGUID;
 import org.simantics.db.layer0.request.PossibleVariableRepresents;
 import org.simantics.db.layer0.request.VariableRead;
 import org.simantics.db.layer0.request.VariableURI;
@@ -105,16 +108,40 @@ public class WorkbenchSelectionUtils {
                String typesStr = getTypeResourceString(processor, res, var);
                if(var != null) {
                        String uri = processor.syncRequest(new VariableURI(var));
+                       String guid = processor.syncRequest(new PossibleVariableGUID(var));
+                       
+                       Set<String> classifications = processor.syncRequest(new VariableRead<Set<String>>(var) {
+                               @Override
+                               public Set<String> perform(ReadGraph graph) throws DatabaseException {
+                                       return var.getClassifications(graph);
+                               }
+                       });
+                       String classificationsStr = toJSONStringArray(new ArrayList<>(classifications));
+                       
+                       Datatype datatype = processor.syncRequest(new VariableRead<Datatype>(var) {
+                               @Override
+                               public Datatype perform(ReadGraph graph) throws DatabaseException {
+                                       return var.getPossibleDatatype(graph);
+                               }
+                       });
+                       
                        return toJSONObjectString(
                                        "type", "\"Variable\"",
                                        "uri", safeQuotedString(uri),
-                                       "typeResources", typesStr);
+                                       "guid", safeQuotedString(guid),
+                                       "resourceId", res == null ? "" : Long.toString(res.getResourceId()),
+                                       "typeResources", typesStr,
+                                       "classifications", classificationsStr,
+                                       "datatype", safeQuotedString(datatype != null ? datatype.getClass().getName() : null));
                }
                if(res != null) {
-                       String uri = processor.syncRequest(new PossibleURI(res));
+                   String uri = processor.syncRequest(new PossibleURI(res));
+                   String guid = processor.syncRequest(new PossibleGUID(res));
                        return toJSONObjectString(
                                        "type", "\"Resource\"",
                                        "uri", safeQuotedString(uri),
+                                       "guid", safeQuotedString(guid),
+                                       "resourceId", Long.toString(res.getResourceId()),
                                        "typeResources", typesStr);
                }
                return "{ \"type\": \"Unknown\" }";