org.forester.archaeopteryx.ArchaeopteryxA Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of forester Show documentation
Show all versions of forester Show documentation
Applications and software libraries for evolutionary biology and comparative genomics research
// $Id:
// FORESTER -- software libraries and applications
// for evolutionary biology research and applications.
//
// 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
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// 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: https://sites.google.com/site/cmzmasek/home/software/forester
package org.forester.archaeopteryx;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.KeyboardFocusManager;
import java.io.File;
import java.net.URL;
import javax.swing.JApplet;
import javax.swing.UIManager;
import org.forester.phylogeny.Phylogeny;
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 MainFrameApplet _mainframe_applet;
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() {
AptxUtil.printAppletMessage( NAME, "going to be destroyed" );
if ( getMainFrameApplet() != null ) {
getMainFrameApplet().close();
}
}
/**
* 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();
}
public int getCurrentExternalNodesDataBufferChangeCounter() {
return getMainFrameApplet().getCurrentTreePanel().getCurrentExternalNodesDataBufferChangeCounter();
}
public int getCurrentExternalNodesDataBufferLength() {
return getMainFrameApplet().getCurrentTreePanel().getCurrentExternalNodesDataBufferAsString().length();
}
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 );
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 );
repaint();
String s = null;
try {
s = System.getProperty( "java.version" );
}
catch ( final Exception e ) {
ForesterUtil.printWarningMessage( NAME, "minor error: " + e.getLocalizedMessage() );
}
if ( ( s != null ) && ( s.length() > 0 ) ) {
setMessage2( "[Your Java version: " + s + "]" );
repaint();
}
final String config_filename = getParameter( Constants.APPLET_PARAM_NAME_FOR_CONFIG_FILE_URL );
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() );
}
else {
UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );
}
setVisible( false );
_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 );
}
catch ( final Exception e ) {
ForesterUtil.printErrorMessage( NAME, e.toString() );
setBackground( ex_background_color );
setForeground( ex_font_color );
has_exception = true;
setMessage1( "Exception: " + e );
e.printStackTrace();
repaint();
}
if ( !has_exception ) {
setMessage1( NAME + " is now ready!" );
repaint();
AptxUtil.printAppletMessage( NAME, "successfully initialized" );
}
KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
getMainFrameApplet().requestFocus();
getMainFrameApplet().requestFocusInWindow();
getMainFrameApplet().requestFocus();
/* GUILHEM_BEG */
final String default_relation = getParameter( Constants.APPLET_PARAM_NAME_FOR_DEFAULT_SEQUENCE_RELATION_TYPE );
if ( default_relation != null ) {
getMainFrameApplet().getMainPanel().getControlPanel().getSequenceRelationTypeBox()
.setSelectedItem( default_relation );
}
final String default_sequence = getParameter( Constants.APPLET_PARAM_NAME_FOR_DEFAULT_QUERY_SEQUENCE );
if ( default_sequence != null ) {
getMainFrameApplet().getMainPanel().getControlPanel().getSequenceRelationBox()
.setSelectedItem( default_sequence );
}
/* GUILHEM_END */
}
/**
* Prints message when initialization is finished. Called automatically.
*
* @param g
* Graphics
*/
@Override
public void paint( final Graphics g ) {
g.setColor( background_color );
g.fillRect( 0, 0, 300, 60 );
g.setColor( font_color );
g.drawString( getMessage2(), 10, 20 );
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;
}
private void setMessage2( final String message_2 ) {
_message_2 = message_2;
}
private void setSpeciesTreeUrlStr( final String url_string ) {
_species_tree_url_str = url_string;
}
private void setTreeUrlStr( final String url_string ) {
_tree_url_str = url_string;
}
}