1
14 package demo.layout.labeling;
15
16 import y.option.OptionHandler;
17 import y.option.MappedListCellRenderer;
18 import y.view.EdgeLabel;
19 import y.view.View;
20 import y.view.Graph2D;
21 import y.base.Edge;
22 import y.base.EdgeList;
23
24 import java.util.Map;
25
26
29 public class EdgeLabelPropertyHandler extends OptionHandler {
30 private static final String TEXT = "Text";
31 private static final String EDGE_LABEL_PROPERTIES = "Edge Label Properties";
32 private static final String PREFERRED_PLACEMENT = "Preferred Placement";
33
34 private EdgeLabel label;
35 private View view;
36
37 public EdgeLabelPropertyHandler(EdgeLabel label, View view) {
38 super(EDGE_LABEL_PROPERTIES);
39 setOptionsIOHandler(null);
40 this.label = label;
41 this.view = view;
42
43 addString(TEXT, label.getText(), 2);
44
45 final Map preferredPlacementMap = EdgeLabel.preferredPlacementsToStringMap();
46 addEnum(PREFERRED_PLACEMENT, preferredPlacementMap.keySet().toArray(), new Byte(label.getPreferredPlacement()),
47 new MappedListCellRenderer(preferredPlacementMap));
48 }
49
50 public void commitValues() {
51 super.commitValues();
52
53 Edge e = label.getOwner().getEdge();
54 if(e != null) {
55 final Graph2D graph = (Graph2D) e.getGraph();
56 graph.backupRealizers(new EdgeList(e).edges());
57 }
58
59 label.setText(getString(TEXT));
60 label.setPreferredPlacement(((Byte)get(PREFERRED_PLACEMENT)).byteValue());
61
62 view.getGraph2D().updateViews();
63 }
64 }
65