in progress
[jalview.git] / forester / java / src / org / forester / phylogeny / data / NodeVisualData.java
1 package org.forester.phylogeny.data;\r
2 \r
3 import java.awt.Color;\r
4 import java.io.IOException;\r
5 import java.io.Writer;\r
6 import java.util.ArrayList;\r
7 import java.util.List;\r
8 \r
9 \r
10 import org.forester.phylogeny.data.Property.AppliesTo;\r
11 import org.forester.util.ForesterUtil;\r
12 \r
13 \r
14 public final class NodeVisualData implements PhylogenyData {\r
15     \r
16     private static final int DEFAULT_SIZE = -1;\r
17     private static final int DEFAULT_TRANSPARANCY = -1;\r
18     private static final byte DEFAULT_FONT_SIZE = -1;\r
19     private NodeShape _shape;\r
20     private NodeFill  _fill_type;\r
21     private Color     _border_color;\r
22     private Color     _fill_color;\r
23     \r
24     private String    _font;\r
25     private FontType    _font_type;\r
26     private byte    _font_size;\r
27     private Color    _font_color;\r
28     \r
29     private float    _size;\r
30     private float    _transparancy;\r
31 \r
32     public NodeVisualData() {\r
33         init();\r
34     }\r
35 \r
36     public NodeVisualData(    final String font,\r
37                               final FontType    font_type,\r
38                               byte    font_size,\r
39                               Color    font_color,\r
40                               final NodeShape shape,\r
41                               final NodeFill fill_type,\r
42                               final Color border_color,\r
43                               final Color fill_color,\r
44                               final float size,\r
45                               final float transparancy ) {\r
46         setFont( font );\r
47         setFontType(font_type );\r
48         setFontSize( font_size );\r
49         setFontColor( font_color );\r
50         setShape( shape );\r
51         setFillType( fill_type );\r
52         setBorderColor( border_color );\r
53         setFillColor( fill_color );\r
54         setSize( size );\r
55         setTransparancy( transparancy );\r
56     }\r
57 \r
58     @Override\r
59     public final StringBuffer asSimpleText() {\r
60         return asText();\r
61     }\r
62 \r
63     @Override\r
64     public final StringBuffer asText() {\r
65         final StringBuffer sb = new StringBuffer();\r
66         return sb;\r
67     }\r
68 \r
69     @Override\r
70     public final  PhylogenyData copy() {\r
71         return new NodeVisualData(  ForesterUtil.isEmpty( getFont() ) ? new String( getFont()) : null  ,\r
72                                    getFontType(),\r
73                                    getFontSize(),\r
74                                    getFontColor() != null ? new Color( getFontColor().getRed(), getFontColor()\r
75                                       .getGreen(), getFontColor().getBlue() ) : null,     \r
76                                    getShape(),\r
77                                       getFillType(),\r
78                                       getBorderColor() != null ? new Color( getBorderColor().getRed(), getBorderColor()\r
79                                               .getGreen(), getBorderColor().getBlue() ) : null,\r
80                                       getFillColor() != null ? new Color( getFillColor().getRed(), getFillColor()\r
81                                               .getGreen(), getFillColor().getBlue() ) : null,\r
82                                       getSize(),\r
83                                       getTransparancy() );\r
84     }\r
85 \r
86     public final Color getBorderColor() {\r
87         return _border_color;\r
88     }\r
89 \r
90     public final Color getFillColor() {\r
91         return _fill_color;\r
92     }\r
93 \r
94     public final NodeFill getFillType() {\r
95         return _fill_type;\r
96     }\r
97 \r
98     public final NodeShape getShape() {\r
99         return _shape;\r
100     }\r
101 \r
102     public final float getSize() {\r
103         return _size;\r
104     }\r
105 \r
106     public final float getTransparancy() {\r
107         return _transparancy;\r
108     }\r
109 \r
110     private final  void init() {\r
111         setFont( null );\r
112         setFontType( FontType.NORMAL );\r
113         setFontSize( DEFAULT_FONT_SIZE );\r
114         setFontColor( null );\r
115         setShape( NodeShape.DEFAULT );\r
116         setFillType( NodeFill.DEFAULT );\r
117         setBorderColor( null );\r
118         setFillColor( null );\r
119         setSize( DEFAULT_SIZE );\r
120         setTransparancy( DEFAULT_TRANSPARANCY );\r
121     }\r
122 \r
123     @Override\r
124     public final boolean isEqual( final PhylogenyData data ) {\r
125         throw new UnsupportedOperationException();\r
126     }\r
127 \r
128     public final void setBorderColor( final Color border_color ) {\r
129         _border_color = border_color;\r
130     }\r
131 \r
132     public final void setFillColor( final Color fill_color ) {\r
133         _fill_color = fill_color;\r
134     }\r
135 \r
136     public final void setFillType( final NodeFill fill_type ) {\r
137         _fill_type = fill_type;\r
138     }\r
139 \r
140     public final void setShape( final NodeShape shape ) {\r
141         _shape = shape;\r
142     }\r
143 \r
144     public final void setSize( final float size ) {\r
145         _size = size;\r
146     }\r
147 \r
148     public final void setTransparancy( final float transparancy ) {\r
149         _transparancy = transparancy;\r
150     }\r
151 \r
152     @Override\r
153     public final StringBuffer toNHX() {\r
154         throw new UnsupportedOperationException();\r
155     }\r
156 \r
157     @Override\r
158     public final void toPhyloXML( final Writer writer, final int level, final String indentation ) throws IOException {\r
159         throw new UnsupportedOperationException();\r
160     }\r
161 \r
162     @Override\r
163     public final String toString() {\r
164         return asText().toString();\r
165     }\r
166 \r
167     public enum NodeFill {\r
168         NONE, GRADIENT, SOLID, DEFAULT\r
169     }\r
170 \r
171     public enum NodeShape {\r
172         CIRCLE, RECTANGLE, DEFAULT\r
173     }\r
174     \r
175     public enum FontType {\r
176         NORMAL, BOLD, ITALIC, BOLD_ITALIC\r
177     }\r
178 \r
179     private final List<Property> toProperties() {\r
180         final List<Property> properties = new ArrayList<Property>();\r
181         properties.add( new Property( SIZE_REF, String.valueOf( getSize() ), "", SIZE_TYPE, AppliesTo.NODE ) );\r
182         properties.add( new Property( SIZE_REF, String.valueOf( getShape() ), "", SIZE_TYPE, AppliesTo.NODE ) );\r
183         properties.add( new Property( SIZE_REF, String.valueOf( getFillType() ), "", SIZE_TYPE, AppliesTo.NODE ) );\r
184         properties.add( new Property( SIZE_REF, String.valueOf( getTransparancy() ), "", SIZE_TYPE, AppliesTo.NODE ) );\r
185         properties.add( new Property( SIZE_REF, String.valueOf( getFillColor() ), "", SIZE_TYPE, AppliesTo.NODE ) );\r
186         properties.add( new Property( SIZE_REF, String.valueOf( getBorderColor() ), "", SIZE_TYPE, AppliesTo.NODE ) );\r
187         return properties;\r
188     }\r
189     public static final String SIZE_REF  = "aptx_visualiation:node_sise";\r
190     public static final String SIZE_TYPE = "xsd:decimal";\r
191 \r
192     public final boolean isEmpty() {\r
193         return ( ForesterUtil.isEmpty( getFont() ) &&\r
194                 getFontType() == FontType.NORMAL && \r
195                 getFontSize() == DEFAULT_FONT_SIZE &&\r
196                 getFontColor() == null &&\r
197                 getShape() == NodeShape.DEFAULT &&\r
198         getFillType() == NodeFill.DEFAULT &&\r
199         getBorderColor() == null &&\r
200         getFillColor() == null &&\r
201         getSize() == DEFAULT_SIZE &&\r
202         getTransparancy() == DEFAULT_TRANSPARANCY );\r
203     }\r
204 \r
205     public final String getFont() {\r
206         return _font;\r
207     }\r
208 \r
209     public final void setFont( final String font ) {\r
210         if ( !ForesterUtil.isEmpty( font ) ) {\r
211             _font = font;\r
212         }\r
213         else {\r
214             _font = null;\r
215         }\r
216     }\r
217 \r
218     public final FontType getFontType() {\r
219         return _font_type;\r
220     }\r
221 \r
222     public final void setFontType( FontType font_type ) {\r
223         _font_type = font_type;\r
224     }\r
225 \r
226     public final byte getFontSize() {\r
227         return _font_size;\r
228     }\r
229 \r
230     public final void setFontSize( byte font_size ) {\r
231         _font_size = font_size;\r
232     }\r
233 \r
234     public final Color getFontColor() {\r
235         return _font_color;\r
236     }\r
237 \r
238     public final void setFontColor( Color font_color ) {\r
239         _font_color = font_color;\r
240     }\r
241 }\r