Applet is going more functions.
[jalview.git] / forester / java / src / org / forester / archaeopteryx / ArchaeopteryxA.java
index bea6a7b..d204f5f 100644 (file)
@@ -5,7 +5,7 @@
 // Copyright (C) 2008-2009 Christian M. Zmasek
 // Copyright (C) 2008-2009 Burnham Institute for Medical Research
 // All rights reserved
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 //
 // Contact: phylosoft @ gmail . com
-// WWW: www.phylosoft.org/forester
+// WWW: https://sites.google.com/site/cmzmasek/home/software/forester
 
 package org.forester.archaeopteryx;
 
@@ -40,48 +40,77 @@ import org.forester.util.ForesterUtil;
 
 public class ArchaeopteryxA extends JApplet {
 
-    private static final long  serialVersionUID    = 2314899014580484146L;
-    private final static Color background_color    = new Color( 0, 0, 0 );
-    private final static Color font_color          = new Color( 0, 255, 0 );
-    private final static Color ex_background_color = new Color( 0, 0, 0 );
-    private final static Color ex_font_color       = new Color( 255, 0, 0 );
-    private final static Font  font                = new Font( Configuration.getDefaultFontFamilyName(), Font.BOLD, 9 );
+    private static final long  serialVersionUID      = 2314899014580484146L;
+    private final static Color background_color      = new Color( 0, 0, 0 );
+    private final static Color font_color            = new Color( 0, 255, 0 );
+    private final static Color ex_background_color   = new Color( 0, 0, 0 );
+    private final static Color ex_font_color         = new Color( 255, 0, 0 );
+    private final static Font  font                  = new Font( Configuration.getDefaultFontFamilyName(), Font.BOLD, 9 );
     private MainFrameApplet    _mainframe_applet;
-    private String             _url_string         = "";
-    private String             _message_1          = "";
-    private String             _message_2          = "";
-    public final static String NAME                = "ArchaeopteryxA";
+    private String             _tree_url_str         = "";
+    private String             _species_tree_url_str = "";
+    private String             _message_1            = "";
+    private String             _message_2            = "";
+    public final static String NAME                  = "ArchaeopteryxA";
 
     @Override
     public void destroy() {
-        Util.printAppletMessage( NAME, "going to be destroyed" );
+        AptxUtil.printAppletMessage( NAME, "going to be destroyed" );
         if ( getMainFrameApplet() != null ) {
             getMainFrameApplet().close();
         }
     }
+    
+    
 
-    private MainFrameApplet getMainFrameApplet() {
-        return _mainframe_applet;
+    /**
+     * This method returns the current external node data which
+     * has been selected by the user by clicking the "Return ..."
+     * menu item. This method is expected to be called from Javascript or
+     * something like it.
+     *
+     * @return current external node data as String
+     */
+    public String getCurrentExternalNodesDataBuffer() {
+        return getMainFrameApplet().getCurrentTreePanel().getCurrentExternalNodesDataBufferAsString();
     }
 
-    private String getMessage1() {
-        return _message_1;
+    public int getCurrentExternalNodesDataBufferChangeCounter() {
+        return getMainFrameApplet().getCurrentTreePanel().getCurrentExternalNodesDataBufferChangeCounter();
     }
 
-    private String getMessage2() {
-        return _message_2;
+    public int getCurrentExternalNodesDataBufferLength() {
+        return getMainFrameApplet().getCurrentTreePanel().getCurrentExternalNodesDataBufferAsString().length();
     }
 
-    public String getUrlString() {
-        return _url_string;
+    public String getSpeciesTreeUrlStr() {
+        return _species_tree_url_str;
+    }
+
+    public String getTreeUrlStr() {
+        return _tree_url_str;
     }
 
     @Override
     public void init() {
         boolean has_exception = false;
         setName( NAME );
-        setUrlString( getParameter( Constants.APPLET_PARAM_NAME_FOR_URL_OF_TREE_TO_LOAD ) );
-        Util.printAppletMessage( NAME, "URL of phylogenies to load: \"" + getUrlString() + "\"" );
+        setTreeUrlStr( getParameter( Constants.APPLET_PARAM_NAME_FOR_URL_OF_TREE_TO_LOAD ) );
+        setSpeciesTreeUrlStr( getParameter( Constants.APPLET_PARAM_NAME_FOR_URL_OF_SPECIES_TREE_TO_LOAD ) );
+        if ( !ForesterUtil.isEmpty( getTreeUrlStr() ) ) {
+            AptxUtil.printAppletMessage( NAME, "URL of tree(s) to load: " + getTreeUrlStr() );
+        }
+        else {
+            ForesterUtil.printErrorMessage( NAME, "no URL for tree(s) to load!" );
+            setBackground( ex_background_color );
+            setForeground( ex_font_color );
+            has_exception = true;
+            setMessage1( "no URL for tree(s) to load" );
+            repaint();
+        }
+        if ( !ForesterUtil.isEmpty( getSpeciesTreeUrlStr() ) ) {
+            AptxUtil.printAppletMessage( NAME, "URL of species tree to load: " + getSpeciesTreeUrlStr() );
+        }
         setBackground( background_color );
         setForeground( font_color );
         setFont( font );
@@ -98,8 +127,8 @@ public class ArchaeopteryxA extends JApplet {
             repaint();
         }
         final String config_filename = getParameter( Constants.APPLET_PARAM_NAME_FOR_CONFIG_FILE_URL );
-        Util.printAppletMessage( NAME, "URL for configuration file is: " + config_filename );
-        final Configuration configuration = new Configuration( config_filename, true, true );
+        AptxUtil.printAppletMessage( NAME, "URL for configuration file is: " + config_filename );
+        final Configuration configuration = new Configuration( config_filename, true, true, true );
         try {
             if ( configuration.isUseNativeUI() ) {
                 UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
@@ -108,12 +137,28 @@ public class ArchaeopteryxA extends JApplet {
                 UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );
             }
             setVisible( false );
-            _mainframe_applet = new MainFrameApplet( this, configuration );
-            URL url = null;
-            url = new URL( getUrlString() );
-            final Phylogeny[] phys = Util.readPhylogeniesFromUrl( url, configuration.isValidatePhyloXmlAgainstSchema() );
-            Util.addPhylogeniesToTabs( phys, new File( url.getFile() ).getName(), getUrlString(), getMainFrameApplet()
-                    .getConfiguration(), getMainFrameApplet().getMainPanel() );
+            _mainframe_applet = new MainFrameApplet( this, configuration, getSpeciesTreeUrlStr() );
+            final URL tree_url = new URL( getTreeUrlStr() );
+            final Phylogeny[] phys = AptxUtil.readPhylogeniesFromUrl( tree_url, configuration
+                    .isValidatePhyloXmlAgainstSchema(), configuration.isReplaceUnderscoresInNhParsing(), configuration
+                    .isInternalNumberAreConfidenceForNhParsing(), configuration.getTaxonomyExtraction(), configuration
+                    .isMidpointReroot() );
+            if ( phys == null ) {
+                ForesterUtil.printErrorMessage( NAME, "phylogenies from [" + tree_url + "] are null" );
+            }
+            else if ( phys.length < 1 ) {
+                ForesterUtil.printErrorMessage( NAME, "phylogenies from [" + tree_url + "] are empty" );
+            }
+            else {
+                AptxUtil.printAppletMessage( NAME, "loaded " + phys.length + " phylogenies from: " + tree_url );
+            }
+            AptxUtil.printAppletMessage( ArchaeopteryxA.NAME, "loaded " + phys.length + " phylogenies from: "
+                    + tree_url );
+            AptxUtil.addPhylogeniesToTabs( phys,
+                                           new File( tree_url.getFile() ).getName(),
+                                           getTreeUrlStr(),
+                                           getMainFrameApplet().getConfiguration(),
+                                           getMainFrameApplet().getMainPanel() );
             getMainFrameApplet().getMainPanel().getControlPanel().showWholeAll();
             getMainFrameApplet().getMainPanel().getControlPanel().showWhole();
             setVisible( true );
@@ -130,7 +175,7 @@ public class ArchaeopteryxA extends JApplet {
         if ( !has_exception ) {
             setMessage1( NAME + " is now ready!" );
             repaint();
-            Util.printAppletMessage( NAME, "successfully initialized" );
+            AptxUtil.printAppletMessage( NAME, "successfully initialized" );
         }
         KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
         getMainFrameApplet().requestFocus();
@@ -146,13 +191,13 @@ public class ArchaeopteryxA extends JApplet {
         if ( default_sequence != null ) {
             getMainFrameApplet().getMainPanel().getControlPanel().getSequenceRelationBox()
                     .setSelectedItem( default_sequence );
-            /* GUILHEM_END */
         }
+        /* GUILHEM_END */
     }
 
     /**
      * Prints message when initialization is finished. Called automatically.
-     * 
+     *
      * @param g
      *            Graphics
      */
@@ -165,6 +210,27 @@ public class ArchaeopteryxA extends JApplet {
         g.drawString( getMessage1(), 10, 40 );
     }
 
+    @Override
+    public void start() {
+        getMainFrameApplet().getMainPanel().validate();
+        getMainFrameApplet().requestFocus();
+        getMainFrameApplet().requestFocusInWindow();
+        getMainFrameApplet().requestFocus();
+        AptxUtil.printAppletMessage( NAME, "started" );
+    }
+
+    private MainFrameApplet getMainFrameApplet() {
+        return _mainframe_applet;
+    }
+
+    private String getMessage1() {
+        return _message_1;
+    }
+
+    private String getMessage2() {
+        return _message_2;
+    }
+
     private void setMessage1( final String message_1 ) {
         _message_1 = message_1;
     }
@@ -173,16 +239,11 @@ public class ArchaeopteryxA extends JApplet {
         _message_2 = message_2;
     }
 
-    private void setUrlString( final String url_string ) {
-        _url_string = url_string;
+    private void setSpeciesTreeUrlStr( final String url_string ) {
+        _species_tree_url_str = url_string;
     }
 
-    @Override
-    public void start() {
-        getMainFrameApplet().getMainPanel().validate();
-        getMainFrameApplet().requestFocus();
-        getMainFrameApplet().requestFocusInWindow();
-        getMainFrameApplet().requestFocus();
-        Util.printAppletMessage( NAME, "started" );
+    private void setTreeUrlStr( final String url_string ) {
+        _tree_url_str = url_string;
     }
 }