X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fadapter%2FElementFactoryUtil.java;h=f05667cb6882b73f6faab486473f9ec836e9e98d;hb=3e877b48594c98cff85f4db64964f86fe14c0f03;hp=f747de0b0ee5f8bf740a2c84e64637381cc36956;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/ElementFactoryUtil.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/ElementFactoryUtil.java index f747de0b0..f05667cb6 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/ElementFactoryUtil.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/ElementFactoryUtil.java @@ -12,13 +12,16 @@ package org.simantics.diagram.adapter; import java.awt.geom.AffineTransform; +import java.util.Map; -import org.simantics.databoard.Bindings; import org.simantics.db.AsyncReadGraph; +import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.procedure.adapter.AsyncProcedureAdapter; +import org.simantics.db.common.procedure.adapter.ProcedureAdapter; +import org.simantics.db.exception.DatabaseException; import org.simantics.db.procedure.AsyncProcedure; -import org.simantics.diagram.stubs.G2DResource; +import org.simantics.diagram.stubs.DiagramResource; import org.simantics.diagram.synchronization.ErrorHandler; import org.simantics.diagram.synchronization.ISynchronizationContext; import org.simantics.diagram.synchronization.SynchronizationHints; @@ -31,33 +34,38 @@ import org.simantics.g2d.element.ElementUtils; import org.simantics.g2d.element.IElement; import org.simantics.g2d.layers.ILayersEditor; import org.simantics.utils.datastructures.hints.IHintContext.Key; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ElementFactoryUtil { + private static final Logger LOGGER = LoggerFactory.getLogger(ElementFactoryUtil.class); + public static void readTransform(AsyncReadGraph graph, final Resource resource, final IElement e) { readTransform(graph, resource, e, new AsyncProcedureAdapter() { @Override public void exception(AsyncReadGraph graph, Throwable t) { - // Nowhere to log properly. - t.printStackTrace(); + LOGGER.error("Error reading transform from " + resource + " into element " + e, t); } }); } public static void readTransform(AsyncReadGraph graph, final Resource resource, final IElement e, final AsyncProcedure procedure) { - G2DResource G2D = graph.getService(G2DResource.class); - graph.forPossibleRelatedValue(resource, G2D.HasTransform, Bindings.DOUBLE_ARRAY, new AsyncProcedure() { - @Override - public void exception(AsyncReadGraph graph, Throwable throwable) { - procedure.exception(graph, throwable); - } + DiagramResource DIA = graph.getService(DiagramResource.class); + try { + AffineTransform tr = DiagramGraphUtil.getDynamicAffineTransform((ReadGraph)graph, null, resource, DIA.HasDynamicTransform, true); + ElementUtils.setTransform(e, tr); + } catch (DatabaseException e1) { + ElementUtils.setTransform(e, new AffineTransform()); + } + procedure.execute(graph, e); + } + public static void readParameters(AsyncReadGraph graph, final Resource resource, final IElement e) { + graph.asyncRequest(new ElementParameterRequest(resource), new ProcedureAdapter>() { @Override - public void execute(AsyncReadGraph graph, double[] mat) { - mat = DiagramGraphUtil.validateAffineTransform(resource, mat); - AffineTransform tr = mat != null ? new AffineTransform(mat) : new AffineTransform(); - ElementUtils.setTransform(e, tr); - procedure.execute(graph, e); + public void execute(Map result) { + ElementUtils.setParameters(e, result); } }); }