From: Hannu Niemistö Date: Sat, 28 Oct 2017 22:11:15 +0000 (+0300) Subject: Means to handle connection selections without configuration component X-Git-Tag: v1.31.0~86 X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=commitdiff_plain;h=7dd9579f2b8e3eabdad63c8cce46d5c7ff2e42fd Means to handle connection selections without configuration component refs #7583 Change-Id: I7e8f77aaf54156bdb187f3220d0191db0a77f7e8 --- diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerSelectionProvider.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerSelectionProvider.java index 4ef86b753..154d8d4c7 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerSelectionProvider.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerSelectionProvider.java @@ -31,6 +31,7 @@ import org.simantics.modeling.ModelingResources; import org.simantics.ui.SimanticsUI; import org.simantics.ui.selection.AnyResource; import org.simantics.ui.selection.AnyVariable; +import org.simantics.ui.selection.ParentVariable; import org.simantics.ui.selection.WorkbenchSelectionContentType; import org.simantics.utils.DataContainer; import org.simantics.utils.threads.IThreadWorkQueue; @@ -109,7 +110,34 @@ public class DiagramViewerSelectionProvider extends WorkbenchSelectionProvider { } catch (DatabaseException e) { Logger.defaultLogError(e); } + } + else if(contentType instanceof ParentVariable) { + ParentVariable type = (ParentVariable)contentType; + try { + return (T) type.processor.sync(new ResourceRead2(runtime, element) { + @Override + public Variable perform(ReadGraph graph) throws DatabaseException { + + DiagramResource DIA = DiagramResource.getInstance(graph); + ModelingResources MOD = ModelingResources.getInstance(graph); + Layer0 L0 = Layer0.getInstance(graph); + + String uri = graph.getPossibleRelatedValue(resource, DIA.RuntimeDiagram_HasVariable); + if (uri == null) + return null; + + Variable var = Variables.getPossibleVariable(graph, uri); + if (var == null) + return null; + + return var; + } + }); + } catch (DatabaseException e) { + Logger.defaultLogError(e); + } } + return null; } diff --git a/bundles/org.simantics.selectionview/src/org/simantics/selectionview/AbstractVariableTabContribution.java b/bundles/org.simantics.selectionview/src/org/simantics/selectionview/AbstractVariableTabContribution.java index 8063eb3c1..76f49af30 100644 --- a/bundles/org.simantics.selectionview/src/org/simantics/selectionview/AbstractVariableTabContribution.java +++ b/bundles/org.simantics.selectionview/src/org/simantics/selectionview/AbstractVariableTabContribution.java @@ -69,7 +69,7 @@ abstract public class AbstractVariableTabContribution implements TabContribution } @Override - final public void contribute(ReadGraph graph, final Object selection, Collection result) throws DatabaseException { + public void contribute(ReadGraph graph, final Object selection, Collection result) throws DatabaseException { Variable variable = getPossibleVariable(graph, selection); if(variable == null) return; diff --git a/bundles/org.simantics.ui/src/org/simantics/ui/selection/ParentVariable.java b/bundles/org.simantics.ui/src/org/simantics/ui/selection/ParentVariable.java new file mode 100644 index 000000000..39c919798 --- /dev/null +++ b/bundles/org.simantics.ui/src/org/simantics/ui/selection/ParentVariable.java @@ -0,0 +1,14 @@ +package org.simantics.ui.selection; + +import org.simantics.db.RequestProcessor; +import org.simantics.db.layer0.variable.Variable; + +public class ParentVariable implements WorkbenchSelectionContentType { + + public RequestProcessor processor; + + public ParentVariable(RequestProcessor processor) { + this.processor = processor; + } + +}