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