1
14 package demo.view.ports;
15
16 import java.io.IOException;
17
18 import y.base.YCursor;
19 import y.io.gml.DefaultEncoderFactory;
20 import y.io.gml.GMLEncoder;
21 import y.io.gml.NodeObjectEncoder;
22 import y.io.gml.NodeRealizerObjectEncoder;
23 import y.io.gml.ObjectEncoder;
24 import y.view.Port;
25
26
27
32 public class EncoderFactory extends DefaultEncoderFactory
33 {
34 public ObjectEncoder createNodeEncoder(ObjectEncoder graphEncoder)
35 {
36 ObjectEncoder nre =
37 new FixedPortsNodeRealizerEncoder(new NodeRealizerObjectEncoder());
38 ObjectEncoder nodeEncoder = new NodeObjectEncoder(nre, null);
39 return nodeEncoder;
40 }
41
42 private static final class FixedPortsNodeRealizerEncoder implements ObjectEncoder{
43
44 private ObjectEncoder delegate;
45
46 FixedPortsNodeRealizerEncoder(ObjectEncoder delegate){
47 this.delegate = delegate;
48 }
49
50 public void encode(Object item, GMLEncoder encoder) throws IOException
51 {
52 if (delegate != null){
53 delegate.encode(item, encoder);
54 }
55 if (item instanceof FixedPortsNodeRealizer){
56 FixedPortsNodeRealizer fpnr = (FixedPortsNodeRealizer) item;
57 encoder.addAttribute("paintingPorts", fpnr.isPaintingPorts());
58 encoder.beginSection("PortCandidates");
59 for (YCursor c = fpnr.getPortCandidates().cursor(); c.ok(); c.next()){
60 Port p = (Port) c.current();
61 encoder.beginSection("point");
62 encoder.addAttribute("x",(float)p.getOffsetX());
63 encoder.addAttribute("y",(float)p.getOffsetY());
64 encoder.endSection(); }
66 encoder.endSection();
67 }
68 }
69
70 }
71 }
72
73