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%2Fadapter%2FElementFactoryUtil.java;h=89ee666bb21b92e75519a3df2724a674dad938a9;hp=f747de0b0ee5f8bf740a2c84e64637381cc36956;hb=2b0fe692f116091f8d65da664174c92591a077b8;hpb=043ed4538f5bdc16d299bc40c2dd8285a3120f9b 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..89ee666bb 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 @@ -13,12 +13,13 @@ package org.simantics.diagram.adapter; import java.awt.geom.AffineTransform; -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.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,35 +32,31 @@ 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); - } - - @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); - } - }); + 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 ISynchronizationContext getContext(IDiagram diagram) {