X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fui%2FWorkbenchSelectionProvider.java;fp=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fui%2FWorkbenchSelectionProvider.java;h=aa50762782398a452ff6cb8116e61592d62d9d53;hp=096fd7aae54fc21adf301415d37728a7a3031a24;hb=bf75fd9740858140eac90c18f0bca0aea3893248;hpb=21f879fcd72d7749836fb64375094ef29573fe8c diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/WorkbenchSelectionProvider.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/WorkbenchSelectionProvider.java index 096fd7aae..aa5076278 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/WorkbenchSelectionProvider.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/WorkbenchSelectionProvider.java @@ -13,6 +13,7 @@ package org.simantics.diagram.ui; import java.util.ArrayList; import java.util.Collections; +import java.util.Optional; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; @@ -22,14 +23,18 @@ import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IWorkbenchPartSite; +import org.simantics.Logger; +import org.simantics.db.exception.DatabaseException; import org.simantics.diagram.elements.AdaptableImmutableProxyElement; import org.simantics.g2d.canvas.ICanvasContext; import org.simantics.g2d.canvas.impl.AbstractCanvasParticipant; import org.simantics.g2d.canvas.impl.DependencyReflection.Dependency; import org.simantics.g2d.canvas.impl.HintReflection.HintListener; +import org.simantics.g2d.diagram.participant.ElementJSON; import org.simantics.g2d.diagram.participant.Selection; import org.simantics.g2d.element.ElementHints; import org.simantics.g2d.element.IElement; +import org.simantics.ui.selection.WorkbenchSelectionUtils; import org.simantics.utils.datastructures.hints.IHintObservable; import org.simantics.utils.datastructures.hints.IHintContext.Key; import org.simantics.utils.threads.IThreadWorkQueue; @@ -41,7 +46,7 @@ import org.simantics.utils.threads.ThreadUtils; * * @author Tuukka Lehtonen */ -public class WorkbenchSelectionProvider extends AbstractCanvasParticipant implements IPostSelectionProvider { +public class WorkbenchSelectionProvider extends AbstractCanvasParticipant implements IPostSelectionProvider, ElementJSON { private static final long POST_SELECTION_DELAY = 300; @@ -205,4 +210,15 @@ public class WorkbenchSelectionProvider extends AbstractCanvasParticipant implem System.out.println("WorkbenchSelectionProvider: TODO: set selection: " + selection); } + @Override + public Optional getJSON(IElement element) { + ISelection sel = constructAdaptableSelection(Collections.singleton(element)); + try { + return Optional.ofNullable( WorkbenchSelectionUtils.getPossibleJSON(sel) ); + } catch (DatabaseException e) { + Logger.defaultLogError(e); + return Optional.empty(); + } + } + }