2 package org.forester.phylogeny.data;
\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
10 import org.forester.phylogeny.data.Property.AppliesTo;
\r
11 import org.forester.util.ForesterUtil;
\r
13 public final class NodeVisualData implements PhylogenyData {
\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
31 public NodeVisualData() {
\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
44 final float transparancy ) {
\r
46 setFontType( font_type );
\r
47 setFontSize( font_size );
\r
48 setFontColor( font_color );
\r
50 setFillType( fill_type );
\r
51 setBorderColor( border_color );
\r
52 setFillColor( fill_color );
\r
54 setTransparancy( transparancy );
\r
58 public final StringBuffer asSimpleText() {
\r
63 public final StringBuffer asText() {
\r
64 final StringBuffer sb = new StringBuffer();
\r
69 public final PhylogenyData copy() {
\r
70 return new NodeVisualData( !ForesterUtil.isEmpty( getFont() ) ? new String( getFont() ) : null,
\r
73 getFontColor() != null ? new Color( getFontColor().getRed(), getFontColor()
\r
74 .getGreen(), getFontColor().getBlue() ) : null,
\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
82 getTransparancy() );
\r
85 public final Color getBorderColor() {
\r
86 return _border_color;
\r
89 public final Color getFillColor() {
\r
93 public final NodeFill getFillType() {
\r
97 public final String getFont() {
\r
101 public final Color getFontColor() {
\r
102 return _font_color;
\r
105 public final byte getFontSize() {
\r
109 public final FontType getFontType() {
\r
113 public final NodeShape getShape() {
\r
117 public final float getSize() {
\r
121 public final float getTransparancy() {
\r
122 return _transparancy;
\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
133 public final boolean isEqual( final PhylogenyData data ) {
\r
134 throw new UnsupportedOperationException();
\r
137 public final void setBorderColor( final Color border_color ) {
\r
138 _border_color = border_color;
\r
141 public final void setFillColor( final Color fill_color ) {
\r
142 _fill_color = fill_color;
\r
145 public final void setFillType( final NodeFill fill_type ) {
\r
146 _fill_type = fill_type;
\r
149 public final void setFont( final String font ) {
\r
150 if ( !ForesterUtil.isEmpty( font ) ) {
\r
158 public final void setFontColor( final Color font_color ) {
\r
159 _font_color = font_color;
\r
162 public final void setFontSize( final byte font_size ) {
\r
163 _font_size = font_size;
\r
166 public final void setFontType( final FontType font_type ) {
\r
167 _font_type = font_type;
\r
170 public final void setShape( final NodeShape shape ) {
\r
174 public final void setSize( final float size ) {
\r
178 public final void setTransparancy( final float transparancy ) {
\r
179 _transparancy = transparancy;
\r
183 public final StringBuffer toNHX() {
\r
184 throw new UnsupportedOperationException();
\r
188 public final void toPhyloXML( final Writer writer, final int level, final String indentation ) throws IOException {
\r
189 throw new UnsupportedOperationException();
\r
193 public final String toString() {
\r
194 return asText().toString();
\r
197 private final void init() {
\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
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
221 public enum FontType {
\r
222 BOLD, BOLD_ITALIC, ITALIC, NORMAL
\r
225 public enum NodeFill {
\r
226 DEFAULT, GRADIENT, NONE, SOLID
\r
229 public enum NodeShape {
\r
230 CIRCLE, DEFAULT, RECTANGLE
\r