1   /****************************************************************************
2    **
3    ** This file is part of yFiles-2.9. 
4    ** 
5    ** yWorks proprietary/confidential. Use is subject to license terms.
6    **
7    ** Redistribution of this file or of an unauthorized byte-code version
8    ** of this file is strictly forbidden.
9    **
10   ** Copyright (c) 2000-2011 by yWorks GmbH, Vor dem Kreuzberg 28, 
11   ** 72070 Tuebingen, Germany. All rights reserved.
12   **
13   ***************************************************************************/
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  /**
27   * A simple OptionHandler that is used by the generic edge labeling demo.
28   */
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