import org.eclipse.jface.viewers.SelectionChangedEvent;\r
import org.eclipse.jface.viewers.StructuredSelection;\r
import org.eclipse.ui.IWorkbenchPartSite;\r
import org.eclipse.jface.viewers.SelectionChangedEvent;\r
import org.eclipse.jface.viewers.StructuredSelection;\r
import org.eclipse.ui.IWorkbenchPartSite;\r
import org.simantics.db.exception.DatabaseException;\r
import org.simantics.diagram.elements.AdaptableImmutableProxyElement;\r
import org.simantics.g2d.canvas.ICanvasContext;\r
import org.simantics.db.exception.DatabaseException;\r
import org.simantics.diagram.elements.AdaptableImmutableProxyElement;\r
import org.simantics.g2d.canvas.ICanvasContext;\r
import org.simantics.g2d.element.ElementHints;\r
import org.simantics.g2d.element.IElement;\r
import org.simantics.ui.selection.WorkbenchSelectionUtils;\r
import org.simantics.g2d.element.ElementHints;\r
import org.simantics.g2d.element.IElement;\r
import org.simantics.ui.selection.WorkbenchSelectionUtils;\r
import org.simantics.utils.threads.IThreadWorkQueue;\r
import org.simantics.utils.threads.ThreadUtils;\r
import org.simantics.utils.threads.IThreadWorkQueue;\r
import org.simantics.utils.threads.ThreadUtils;\r
try {\r
return Optional.ofNullable( WorkbenchSelectionUtils.getPossibleJSON(sel) );\r
} catch (DatabaseException e) {\r
try {\r
return Optional.ofNullable( WorkbenchSelectionUtils.getPossibleJSON(sel) );\r
} catch (DatabaseException e) {\r