X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FdiagramEditor%2FDiagramViewerSelectionProvider.java;h=d9d14c37eada50ab64cddc9a9e55c0e94cf64249;hb=refs%2Fchanges%2F79%2F4379%2F1;hp=4ef86b753b4c54a8eea8b17ee1eb788a7e0acb60;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git 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..d9d14c37e 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 @@ -6,7 +6,7 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IWorkbenchPartSite; import org.simantics.Simantics; -import org.simantics.browsing.ui.swt.AdaptableHintContext; +import org.simantics.browsing.ui.common.AdaptableHintContext; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.request.ResourceRead; @@ -17,7 +17,6 @@ import org.simantics.db.layer0.SelectionHints; import org.simantics.db.layer0.request.PossibleModel; import org.simantics.db.layer0.variable.Variable; import org.simantics.db.layer0.variable.Variables; -import org.simantics.diagram.Logger; import org.simantics.diagram.flag.FlagUtil; import org.simantics.diagram.stubs.DiagramResource; import org.simantics.diagram.ui.DiagramModelHints; @@ -31,10 +30,13 @@ 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; import org.simantics.utils.ui.ErrorLogger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Antti Villberg @@ -43,6 +45,8 @@ public class DiagramViewerSelectionProvider extends WorkbenchSelectionProvider { protected static class SelectionElement extends AdaptableHintContext { + private static final Logger LOGGER = LoggerFactory.getLogger(SelectionElement.class); + final public Resource runtime; final public Resource element; @@ -107,9 +111,33 @@ public class DiagramViewerSelectionProvider extends WorkbenchSelectionProvider { } }); } catch (DatabaseException e) { - Logger.defaultLogError(e); + LOGGER.error("WorkbenchSelectionElement.getContent failed for type AnyVariable", 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); + + 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.error("WorkbenchSelectionElement.getContent failed for type ParentVariable", e); } } + return null; } @@ -135,7 +163,7 @@ public class DiagramViewerSelectionProvider extends WorkbenchSelectionProvider { if (resource != null) { objects.add( constructSelectionElement(runtime, resource) ); } else { - System.out.println(" unrecognized selection: " + o.getClass() + ": " + o); + System.out.println(" unrecognized selection: " + o.getClass() + ": " + o); //$NON-NLS-1$ //$NON-NLS-2$ } } if (objects.isEmpty() && runtime != null && dr != null) {