Activated linkImage scl function because it is used by existing scl scripts.
Had to move implementation because compiler error/warning:
A cycle was detected in the build path of project...
refs #6916
Change-Id: I2017051816010128002017051816010128006666
org.simantics.layer0.utils;bundle-version="1.1.0",
org.simantics.browsing.ui.swt;bundle-version="1.1.0",
org.simantics.image2.ontology;bundle-version="1.0.0",
- org.simantics.scenegraph;bundle-version="1.1.1"
+ org.simantics.scenegraph;bundle-version="1.1.1",
+ org.simantics.diagram;bundle-version="1.1.1",
+ org.simantics.modeling.template2d.ontology;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.simantics.image.ui,
import "Simantics/Library"
type Image = Resource
+type SVGImage = Resource
importJava "org.simantics.image.ui.SCLImage" where
@JavaName importImageFromFile
importImage :: File -> Library -> <WriteGraph> Image
-
-// HN: does not exist
-// @JavaName linkImage
-// linkImage :: SVGImage -> Image -> <WriteGraph> ()
\ No newline at end of file
+
+ @JavaName linkImage
+ linkImage :: SVGImage -> Image -> <WriteGraph> ()
--- /dev/null
+package org.simantics.image.ui;
+
+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;
+
+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<Variable> grandOfParent = new Vector<Variable>();
+ 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<Variable> grandOfChild = new Vector<Variable>();
+ 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();
+ }
+
+ }
+
+
+}
import org.simantics.db.exception.DatabaseException;
public class SCLImage {
-
+
public static Resource importImageFromFile(WriteGraph graph, File image, Resource target) throws DatabaseException, IOException {
-
+
ImageSource src = ImportImagesActionFactory.toImageSource(image);
CreateImage img = new CreateImage(target, src);
Resource imageResource = img.doImage(graph, target, src);
return imageResource;
}
-
-// public static void linkImage(WriteGraph graph, Resource parent, Resource child) {
-// LinkSVGImage.linkSVGImage(graph, parent, child);
-// }
-}
\ No newline at end of file
+
+ public static void linkImage(WriteGraph graph, Resource parent, Resource child) {
+ LinkSvgImage.linkSVGImage(graph, parent, child);
+ }
+}
org.simantics.modeling.template2d.ontology;bundle-version="1.0.0",
org.simantics.annotation.ontology;bundle-version="1.0.0",
org.simantics.graph.db;bundle-version="[1.1.9,2.0.0)",
- org.simantics.export.core;bundle-version="1.0.0"
+ org.simantics.export.core;bundle-version="1.0.0",
+ org.simantics.image.ui;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.simantics.modeling.template2d.ui.function
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<Variable> grandOfParent = new Vector<Variable>();
- 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<Variable> grandOfChild = new Vector<Variable>();
- 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
public boolean synchronize(WriteGraph graph, Resource template, Resource instance, TypicalInfo info) throws DatabaseException {
DiagramDesc mdesc = graph.syncRequest(DiagramRequests.getDiagramDesc(template));
DiagramDesc idesc = graph.syncRequest(DiagramRequests.getDiagramDesc(instance));
- if (mdesc.equals(idesc))
+ if (null == mdesc || mdesc.equals(idesc))
return false;
DiagramGraphUtil.setDiagramDesc(graph, instance, mdesc);