2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2014 - Scilab Enterprises - Clement DAVID
5 * This file must be used under the terms of the CeCILL.
6 * This source file is licensed as described in the file COPYING, which
7 * you should have received as part of this distribution. The terms
8 * are also available at
9 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
13 package org.scilab.modules.xcos.io.codec;
15 import static org.scilab.modules.xcos.io.codec.XcosCodec.LOG;
19 import org.scilab.modules.xcos.JavaController;
20 import org.scilab.modules.xcos.Kind;
21 import org.scilab.modules.xcos.block.BasicBlock;
22 import org.scilab.modules.xcos.graph.model.XcosCellFactory;
23 import org.scilab.modules.xcos.link.BasicLink;
24 import org.scilab.modules.xcos.link.CommandControlLink;
25 import org.scilab.modules.xcos.link.ExplicitLink;
26 import org.scilab.modules.xcos.link.ImplicitLink;
27 import org.scilab.modules.xcos.port.BasicPort;
28 import org.w3c.dom.Node;
30 import com.mxgraph.io.mxCodec;
31 import com.mxgraph.io.mxCodecRegistry;
33 public class BasicLinkCodec extends XcosObjectCodec {
35 public static void register() {
36 JavaController controller = new JavaController();
38 BasicLinkCodec explicitlinkCodec = new BasicLinkCodec(new ExplicitLink(controller.createObject(Kind.LINK)), null, REFS, null);
39 mxCodecRegistry.register(explicitlinkCodec);
40 BasicLinkCodec implicitlinkCodec = new BasicLinkCodec(new ImplicitLink(controller.createObject(Kind.LINK)), null, REFS, null);
41 mxCodecRegistry.register(implicitlinkCodec);
42 BasicLinkCodec commandControllinkCodec = new BasicLinkCodec(new CommandControlLink(controller.createObject(Kind.LINK)), null, REFS, null);
43 mxCodecRegistry.register(commandControllinkCodec);
46 public BasicLinkCodec(Object template, String[] exclude, String[] idrefs,
47 Map<String, String> mapping) {
48 super(template, exclude, idrefs, mapping);
52 public Object beforeEncode(mxCodec enc, Object obj, Node node) {
55 * Log some information
57 final BasicLink l = (BasicLink) obj;
59 if (!(l.getSource() instanceof BasicPort)) {
60 trace(enc, node, "Invalid source");
61 LOG.warning("The saved file might be incomplete, '" + l + "' is not connected");
63 final BasicPort p = (BasicPort) l.getSource();
65 if (!(p.getParent() instanceof BasicBlock)) {
66 trace(enc, node, "Invalid source parent");
67 LOG.warning("The saved file might be incomplete, '" + l + "' is wrongly connected");
70 if (!(l.getTarget() instanceof BasicPort)) {
71 trace(enc, node, "Invalid target");
72 LOG.warning("The saved file might be incomplete, '" + l + "' is not connected");
74 final BasicPort p = (BasicPort) l.getTarget();
76 if (!(p.getParent() instanceof BasicBlock)) {
77 trace(enc, node, "Invalid target parent");
78 LOG.warning("The saved file might be incomplete, '" + l + "' is wrongly connected");
82 return super.beforeEncode(enc, obj, node);