X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.template2d.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftemplate2d%2Fui%2Ffunction%2FLinkSVGImage.java;h=978128630c0e061eda87f2c5dd185935045abbf8;hb=2aa4234f4f8dd5d976fb60725290a03c83231baa;hp=aa0527f80fd082622ded42dde092681d9c15dd5f;hpb=b4e846e4206e688050b659f2d66581d26e3dc1ce;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.template2d.ui/src/org/simantics/modeling/template2d/ui/function/LinkSVGImage.java b/bundles/org.simantics.modeling.template2d.ui/src/org/simantics/modeling/template2d/ui/function/LinkSVGImage.java index aa0527f80..978128630 100644 --- a/bundles/org.simantics.modeling.template2d.ui/src/org/simantics/modeling/template2d/ui/function/LinkSVGImage.java +++ b/bundles/org.simantics.modeling.template2d.ui/src/org/simantics/modeling/template2d/ui/function/LinkSVGImage.java @@ -1,189 +1,14 @@ package org.simantics.modeling.template2d.ui.function; -import java.util.Vector; - -import org.simantics.databoard.Bindings; -import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.WriteGraph; -import org.simantics.db.common.request.ReadRequest; -import org.simantics.db.common.request.WriteRequest; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.variable.Variable; -import org.simantics.db.layer0.variable.Variables; -import org.simantics.diagram.function.PredefinedVariables; -import org.simantics.diagram.stubs.DiagramResource; -import org.simantics.image2.ontology.ImageResource; -import org.simantics.modeling.template2d.ontology.Template2dResource; -import org.simantics.project.ontology.ProjectResource; -import org.simantics.simulation.ontology.SimulationResource; -import org.simantics.utils.ui.dialogs.ShowMessage; +import org.simantics.image.ui.LinkSvgImage; public class LinkSVGImage { - - public static void linkSVGImage(WriteGraph graph, final Resource parent, final Resource child) { - - final String[] uri = {null}; - final String[] msg = {null}; - final String errmsg = "Creation of image reference failed. Activate an experiment and try to copy and paste an image again."; - - try { - graph.syncRequest(new ReadRequest() { - @Override - public void run(ReadGraph g) throws DatabaseException { - if (parent == null || child == null) { - msg[0] = errmsg; - return; - } - //Layer0 L0 = Layer0.getInstance(g); - ImageResource IMG = ImageResource.getInstance(g); - if (!g.isInstanceOf(child, IMG.SvgImage)){ - msg[0] = errmsg; - return; - } - - Variable parentV = Variables.getVariable(g, parent); - if (parentV == null){ - msg[0] = errmsg; - return; - } - - Vector grandOfParent = new Vector(); - Variable tmp = parentV; - do { - grandOfParent.add(0, tmp); - tmp = tmp.getParent(g); - } - while (tmp != null); - -// System.err.println(parentV.getURI(g)); -// String parentUri = parentV.getURI(g); - - Variable childV = Variables.getVariable(g, child); - String childUri = null; - if (childV == null){ - msg[0] = errmsg; - return; - } - - Vector grandOfChild = new Vector(); - tmp = childV; - do { - grandOfChild.add(0, tmp); - tmp = tmp.getParent(g); - } - while (tmp != null); - - int k = -1; // index of the most nearest common parent - int maxLen = (grandOfChild.size() < grandOfParent.size())? grandOfChild.size() : grandOfParent.size(); - for (int i = 0;i < maxLen; i++){ - if (grandOfChild.get(i).equals(grandOfParent.get(i))) - k++; - else - break; - } - if (k == -1) // no common parent - { - msg[0] = errmsg; - return; - } - //StructuralResource2 STR = StructuralResource2.getInstance(g); - SimulationResource SIMU = SimulationResource.getInstance(g); - ProjectResource PROJ = ProjectResource.getInstance(g); - Template2dResource TEPLATE2D = Template2dResource.getInstance(g); - Resource root = g.getRootLibrary();; - Resource type = null; - String predefined = null; - Resource res = null; - for (;k >= 0;k--){ - tmp = grandOfChild.get(k); - res = tmp.getRepresents(g); - if (res.equals(root)){ - predefined = PredefinedVariables.root; - break; - } - type = g.getPossibleType(res, SIMU.Model); - if (type != null){ - predefined = PredefinedVariables.model; - break; - } - type = g.getPossibleType(res, PROJ.Project); - if (type != null){ - predefined = PredefinedVariables.project; - break; - } - type = g.getPossibleType(res, TEPLATE2D.DrawingTemplate); - if (type != null){ - predefined = PredefinedVariables.template; - break; - } - } - if (predefined == null) // no predefined common parent - { - msg[0] = errmsg; - return; - } - Variable resV = Variables.getVariable(g, res); - String resUri = resV.getURI(g); - - childUri = childV.getURI(g); -// System.err.println(childUri); - - Resource childModel = Variables.getModel(g, childV); - Resource parentModel = Variables.getModel(g, parentV); - if (childModel == null || parentModel == null){ - msg[0] = errmsg; - return; - } - - if (!parentModel.equals(childModel)){ - msg[0] = errmsg; - return; - } - -// Variable modelV = Variables.getVariable(g, childModel); -// if (modelV == null){ -// msg[0] = errmsg[0]; -// return; -// } -// -// String modelUri = modelV.getURI(g); - - if (childUri.startsWith(resUri)){ - uri[0] = childUri.substring(resUri.length()); - uri[0] = "pre:/" + predefined + uri[0]; -// System.err.println(uri); - } - } - }); - graph.syncRequest(new WriteRequest() { - @Override - public void perform(WriteGraph g) throws DatabaseException { - if (uri == null || parent == null){ - msg[0] = errmsg; - return; - } - DiagramResource DIA = DiagramResource.getInstance(g); - Template2dResource TEMPLATE2D = Template2dResource.getInstance(g); - - Resource var = g.getPossibleObject(parent, DIA.Scenegraph_SVGImage_document); - if (var == null){ - msg[0] = "Creation of image reference failed. Only SVG images are supported for now."; - return; - } - - g.claimLiteral(var, TEMPLATE2D.Profiles_VariableReference_path, uri[0] + "#data", Bindings.STRING); - } - }); - if (msg[0] != null){ - ShowMessage.showWarning("Warning", msg[0]); - } - } catch (Exception e) { - // TODO: handle exception - e.printStackTrace(); - } - - } - + public static void linkSVGImage(WriteGraph graph, final Resource parent, final Resource child) { + // Moved the implementation to LinkSvgImage because problems compiler warning/error: + // A cycle was detected in the build path of project. + LinkSvgImage.linkSVGImage(graph, parent, child); + } } \ No newline at end of file