1 package org.forester.phylogeny.data;
\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
10 import org.forester.phylogeny.data.Property.AppliesTo;
\r
11 import org.forester.util.ForesterUtil;
\r
14 public final class NodeVisualData implements PhylogenyData {
\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
24 private String _font;
\r
25 private FontType _font_type;
\r
26 private byte _font_size;
\r
27 private Color _font_color;
\r
29 private float _size;
\r
30 private float _transparancy;
\r
32 public NodeVisualData() {
\r
36 public NodeVisualData( final String font,
\r
37 final FontType font_type,
\r
40 final NodeShape shape,
\r
41 final NodeFill fill_type,
\r
42 final Color border_color,
\r
43 final Color fill_color,
\r
45 final float transparancy ) {
\r
47 setFontType(font_type );
\r
48 setFontSize( font_size );
\r
49 setFontColor( font_color );
\r
51 setFillType( fill_type );
\r
52 setBorderColor( border_color );
\r
53 setFillColor( fill_color );
\r
55 setTransparancy( transparancy );
\r
59 public final StringBuffer asSimpleText() {
\r
64 public final StringBuffer asText() {
\r
65 final StringBuffer sb = new StringBuffer();
\r
70 public final PhylogenyData copy() {
\r
71 return new NodeVisualData( ForesterUtil.isEmpty( getFont() ) ? new String( getFont()) : null ,
\r
74 getFontColor() != null ? new Color( getFontColor().getRed(), getFontColor()
\r
75 .getGreen(), getFontColor().getBlue() ) : null,
\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
83 getTransparancy() );
\r
86 public final Color getBorderColor() {
\r
87 return _border_color;
\r
90 public final Color getFillColor() {
\r
94 public final NodeFill getFillType() {
\r
98 public final NodeShape getShape() {
\r
102 public final float getSize() {
\r
106 public final float getTransparancy() {
\r
107 return _transparancy;
\r
110 private final void init() {
\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
124 public final boolean isEqual( final PhylogenyData data ) {
\r
125 throw new UnsupportedOperationException();
\r
128 public final void setBorderColor( final Color border_color ) {
\r
129 _border_color = border_color;
\r
132 public final void setFillColor( final Color fill_color ) {
\r
133 _fill_color = fill_color;
\r
136 public final void setFillType( final NodeFill fill_type ) {
\r
137 _fill_type = fill_type;
\r
140 public final void setShape( final NodeShape shape ) {
\r
144 public final void setSize( final float size ) {
\r
148 public final void setTransparancy( final float transparancy ) {
\r
149 _transparancy = transparancy;
\r
153 public final StringBuffer toNHX() {
\r
154 throw new UnsupportedOperationException();
\r
158 public final void toPhyloXML( final Writer writer, final int level, final String indentation ) throws IOException {
\r
159 throw new UnsupportedOperationException();
\r
163 public final String toString() {
\r
164 return asText().toString();
\r
167 public enum NodeFill {
\r
168 NONE, GRADIENT, SOLID, DEFAULT
\r
171 public enum NodeShape {
\r
172 CIRCLE, RECTANGLE, DEFAULT
\r
175 public enum FontType {
\r
176 NORMAL, BOLD, ITALIC, BOLD_ITALIC
\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
189 public static final String SIZE_REF = "aptx_visualiation:node_sise";
\r
190 public static final String SIZE_TYPE = "xsd:decimal";
\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
205 public final String getFont() {
\r
209 public final void setFont( final String font ) {
\r
210 if ( !ForesterUtil.isEmpty( font ) ) {
\r
218 public final FontType getFontType() {
\r
222 public final void setFontType( FontType font_type ) {
\r
223 _font_type = font_type;
\r
226 public final byte getFontSize() {
\r
230 public final void setFontSize( byte font_size ) {
\r
231 _font_size = font_size;
\r
234 public final Color getFontColor() {
\r
235 return _font_color;
\r
238 public final void setFontColor( Color font_color ) {
\r
239 _font_color = font_color;
\r