X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FAptxUtil.java;h=d6c980a5bf9f00b603040c5c9167cd0e121d0af2;hb=187777133416c347dd7da371d7edf7ce20ebe56b;hp=c56d068e4b35d2a3fe56545a97ce745f5b6f586f;hpb=ff79eee1cd2e65925ada2e6fd484010122c74d22;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/AptxUtil.java b/forester/java/src/org/forester/archaeopteryx/AptxUtil.java index c56d068..d6c980a 100644 --- a/forester/java/src/org/forester/archaeopteryx/AptxUtil.java +++ b/forester/java/src/org/forester/archaeopteryx/AptxUtil.java @@ -25,6 +25,7 @@ package org.forester.archaeopteryx; +import java.awt.Color; import java.awt.Component; import java.awt.Graphics2D; import java.awt.GraphicsEnvironment; @@ -40,6 +41,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URI; import java.net.URL; +import java.net.URLConnection; import java.text.ParseException; import java.util.Arrays; import java.util.HashSet; @@ -680,7 +682,9 @@ public final class AptxUtil { } } AptxUtil.printAppletMessage( "Archaeopteryx", "parser is " + parser.getName() ); - final InputStream i = url.openStream(); + final URLConnection url_connection = url.openConnection(); + url_connection.setDefaultUseCaches( false ); + final InputStream i = url_connection.getInputStream(); final Phylogeny[] phys = factory.create( i, parser ); i.close(); if ( phys != null ) { @@ -981,4 +985,50 @@ public final class AptxUtil { return _suffix; } } + + final public static Color calculateColorFromString( final String str, final boolean is_taxonomy ) { + final String my_str = str.toUpperCase(); + char first = my_str.charAt( 0 ); + char second = ' '; + char third = ' '; + if ( my_str.length() > 1 ) { + if ( is_taxonomy ) { + second = my_str.charAt( 1 ); + } + else { + second = my_str.charAt( my_str.length() - 1 ); + } + if ( is_taxonomy ) { + if ( my_str.length() > 2 ) { + if ( my_str.indexOf( " " ) > 0 ) { + third = my_str.charAt( my_str.indexOf( " " ) + 1 ); + } + else { + third = my_str.charAt( 2 ); + } + } + } + else if ( my_str.length() > 2 ) { + third = my_str.charAt( ( my_str.length() - 1 ) / 2 ); + } + } + first = normalizeCharForRGB( first ); + second = normalizeCharForRGB( second ); + third = normalizeCharForRGB( third ); + if ( ( first > 235 ) && ( second > 235 ) && ( third > 235 ) ) { + first = 0; + } + else if ( ( first < 60 ) && ( second < 60 ) && ( third < 60 ) ) { + second = 255; + } + return new Color( first, second, third ); + } + + final private static char normalizeCharForRGB( char c ) { + c -= 65; + c *= 10.2; + c = c > 255 ? 255 : c; + c = c < 0 ? 0 : c; + return c; + } }