From 8480b680425f78287367b2eaf9ba35e767e53b16 Mon Sep 17 00:00:00 2001 From: Jussi Koskela Date: Mon, 11 Mar 2019 08:29:29 +0200 Subject: [PATCH] Provide classifications and datatype for Variable-based drag sources gitlab #270 Change-Id: Idf4b2b82e56f4c20897e4d403d075dbfde9b57b1 (cherry picked from commit d76a05bd894c0fa00dd9ad28e167b284433d008d) --- .../ui/selection/WorkbenchSelectionUtils.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/bundles/org.simantics.ui/src/org/simantics/ui/selection/WorkbenchSelectionUtils.java b/bundles/org.simantics.ui/src/org/simantics/ui/selection/WorkbenchSelectionUtils.java index 111ac8a3a..e3e6eeafe 100644 --- a/bundles/org.simantics.ui/src/org/simantics/ui/selection/WorkbenchSelectionUtils.java +++ b/bundles/org.simantics.ui/src/org/simantics/ui/selection/WorkbenchSelectionUtils.java @@ -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; @@ -19,8 +20,8 @@ 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.PossibleVariableGUID; 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; @@ -108,12 +109,30 @@ public class WorkbenchSelectionUtils { if(var != null) { String uri = processor.syncRequest(new VariableURI(var)); String guid = processor.syncRequest(new PossibleVariableGUID(var)); + + Set classifications = processor.syncRequest(new VariableRead>(var) { + @Override + public Set perform(ReadGraph graph) throws DatabaseException { + return var.getClassifications(graph); + } + }); + String classificationsStr = toJSONStringArray(new ArrayList<>(classifications)); + + Datatype datatype = processor.syncRequest(new VariableRead(var) { + @Override + public Datatype perform(ReadGraph graph) throws DatabaseException { + return var.getPossibleDatatype(graph); + } + }); + return toJSONObjectString( "type", "\"Variable\"", "uri", safeQuotedString(uri), "guid", safeQuotedString(guid), "resourceId", res == null ? "" : Long.toString(res.getResourceId()), - "typeResources", typesStr); + "typeResources", typesStr, + "classifications", classificationsStr, + "datatype", safeQuotedString(datatype != null ? datatype.getClass().getName() : null)); } if(res != null) { String uri = processor.syncRequest(new PossibleURI(res)); -- 2.47.1