Xcos: remove block default values
[scilab.git] / scilab / modules / xcos / src / java / org / scilab / modules / xcos / block / TextBlock.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - DIGITEO - Bruno JOFRET
4  *
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-en.txt
10  *
11  */
12
13 package org.scilab.modules.xcos.block;
14
15 import java.util.Map;
16
17 import org.scilab.modules.graph.actions.base.DefaultAction;
18 import org.scilab.modules.graph.utils.StyleMap;
19 import org.scilab.modules.gui.menu.Menu;
20 import org.scilab.modules.types.scilabTypes.ScilabString;
21 import org.scilab.modules.types.scilabTypes.ScilabType;
22 import org.scilab.modules.xcos.block.actions.BlockParametersAction;
23 import org.scilab.modules.xcos.block.actions.RegionToSuperblockAction;
24 import org.scilab.modules.xcos.utils.XcosMessages;
25
26 import com.mxgraph.util.mxConstants;
27
28 /**
29  * A textblock is used to annotate diagrams.
30  */
31 public final class TextBlock extends BasicBlock {
32
33         /**
34          * The factor between a real point and a scicos point
35          */
36         private static final int FONT_FACTOR = 4;
37         private static final String INTERFUNCTION_NAME = "TEXT_f";
38
39     /**
40      * Font list from http://www.w3.org/TR/CSS2/fonts.html#generic-font-families
41      * Scicos has a number descriptor < 7 and > 0 
42      */
43     enum Font {
44                 SERIF("serif"),
45                 SANS_SERIF("sans-serif"),
46                 CURSIVE("cursive"),
47                 FANTASY("fantasy"),
48                 MONOSPACE("monospace"),
49                 ARIAL("Arial");
50                 
51                 private String name;
52                 
53                 /**
54                  * Cstr
55                  * @param name the name of the font
56                  */
57                 private Font(String name) {
58                     this.name = name;
59                 }
60                 
61                 /**
62                  * @return the name of the font
63                  */
64                 public String getName() {
65                     return name;
66                 }
67     }
68
69     /**
70      * Default constructor
71      */
72         public TextBlock() {
73                 super();
74         }
75
76         /**
77          * Initialize the block with the default values
78          */
79         @Override
80         protected void setDefaultValues() {
81                 super.setDefaultValues();
82                 setInterfaceFunctionName(INTERFUNCTION_NAME);
83                 setStyle(INTERFUNCTION_NAME);
84                 
85                 setValue(XcosMessages.DOTS);
86         }
87     
88     /**
89      * @return the text
90      */
91     public String getText() {
92         return ((ScilabString) getExprs()).getData()[0][0];
93     }
94     
95     /**
96      * @return the fontNumber
97      */
98     private Font getFont() {
99         int number = Integer.parseInt(((ScilabString) getExprs()).getData()[1][0]);
100         return Font.values()[number - 1];
101     }
102
103     /**
104      * @return the fontSize
105      */
106     private int getFontSize() {
107         // After investigations, the 1pt of scicos is equivalent to a 10 real pt
108         return (Integer.parseInt(((ScilabString) getExprs()).getData()[2][0]) * FONT_FACTOR);
109    }
110     
111     /**
112      * Apply style on setExprs
113      * @param exprs the expression to be parsed
114      */
115     @Override
116     public void setExprs(ScilabType exprs) {
117         super.setExprs(exprs);
118         
119         StyleMap map = new StyleMap(getStyle());
120         map.put(mxConstants.STYLE_FONTFAMILY, getFont().getName());
121         map.put(mxConstants.STYLE_FONTSIZE, Integer.toString(getFontSize()));
122         
123         setStyle(map.toString());
124     }
125     
126     /**
127      * Disabling BlockSettings action
128      * @param context the current context
129      */
130     @Override
131     public void openBlockSettings(String[] context) {
132         // NOTHING TO BE DONE
133     }
134     
135     /**
136      * Disabling BlockSettings action
137      * @param modifiedBlock the updated block
138     */
139     @Override
140     public void updateBlockSettings(BasicBlock modifiedBlock) {
141         // NOTHING TO BE DONE
142     }
143     
144     /**
145      * Customize menu
146      * @param menuList the menuList to work on
147      */
148     @Override
149     protected void customizeMenu(
150             Map<Class< ? extends DefaultAction>, Menu> menuList) {
151         menuList.get(BlockParametersAction.class).setEnabled(false);
152         menuList.get(RegionToSuperblockAction.class).setEnabled(false);
153     }
154 }