X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FControlPanel.java;h=3bd8738f852461aa3d804fe66349158a5a6eb757;hb=8d6e81da091d432309f2f7034cf93dbc5ba5e82a;hp=a39856027b3d00aa25eeaa3e9f08a1dd319b92fc;hpb=87d8c4dedc7e2418f12242986cea67307dd62a7f;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/ControlPanel.java b/forester/java/src/org/forester/archaeopteryx/ControlPanel.java index a398560..3bd8738 100644 --- a/forester/java/src/org/forester/archaeopteryx/ControlPanel.java +++ b/forester/java/src/org/forester/archaeopteryx/ControlPanel.java @@ -44,6 +44,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import javax.swing.BorderFactory; import javax.swing.DefaultListCellRenderer; @@ -65,110 +66,115 @@ import org.forester.phylogeny.PhylogenyMethods.DESCENDANT_SORT_PRIORITY; import org.forester.phylogeny.PhylogenyNode; import org.forester.phylogeny.data.Sequence; import org.forester.phylogeny.data.SequenceRelation; +import org.forester.phylogeny.data.SequenceRelation.SEQUENCE_RELATION_TYPE; import org.forester.phylogeny.iterators.PhylogenyNodeIterator; import org.forester.util.ForesterUtil; final class ControlPanel extends JPanel implements ActionListener { - final static Font jcb_bold_font = new Font( Configuration.getDefaultFontFamilyName(), - Font.BOLD, - 9 ); - final static Font jcb_font = new Font( Configuration.getDefaultFontFamilyName(), - Font.PLAIN, - 9 ); - final static Font js_font = new Font( Configuration.getDefaultFontFamilyName(), - Font.PLAIN, - 9 ); - private static final String RETURN_TO_SUPER_TREE_TEXT = "Back to Super Tree"; - private static final long serialVersionUID = -8463483932821545633L; - private NodeClickAction _action_when_node_clicked; - private int _add_new_node_item; - private Map _all_click_to_names; - private Map _annotation_colors; - private int _blast_item; - private JComboBox _click_to_combobox; - private JLabel _click_to_label; - private List _click_to_names; - private int _collapse_cb_item; - private JCheckBox _color_acc_species; - private JCheckBox _color_according_to_annotation; - private boolean _color_branches; - private JCheckBox _use_visual_styles_cb; - private int _color_subtree_cb_item; - private int _change_node_font_item; + final static Font jcb_bold_font = new Font( Configuration.getDefaultFontFamilyName(), + Font.BOLD, + 9 ); + final static Font jcb_font = new Font( Configuration.getDefaultFontFamilyName(), + Font.PLAIN, + 9 ); + final static Font js_font = new Font( Configuration.getDefaultFontFamilyName(), + Font.PLAIN, + 9 ); + private static final String RETURN_TO_SUPER_TREE_TEXT = "Back to Super Tree"; + private static final String SEARCH_TIP_TEXT = "Enter text to search for. Use ',' for logical OR and '+' for logical AND (not used in this manner for regular expression searches)."; + private static final long serialVersionUID = -8463483932821545633L; + private NodeClickAction _action_when_node_clicked; + private int _add_new_node_item; + private Map _all_click_to_names; + private Map _annotation_colors; + private int _blast_item; + private JComboBox _click_to_combobox; + private JLabel _click_to_label; + private List _click_to_names; + private int _collapse_cb_item; + private JCheckBox _color_acc_species; + private JCheckBox _color_acc_sequence; + private JCheckBox _color_according_to_annotation; + private boolean _color_branches; + private JCheckBox _use_visual_styles_cb; + private int _color_subtree_cb_item; + private int _change_node_font_item; // The settings from the conf file - private final Configuration _configuration; - private int _copy_subtree_item; - private int _cut_subtree_item; - private JButton _decr_domain_structure_evalue_thr; - private int _delete_node_or_subtree_item; - private JCheckBox _display_as_phylogram_cb; + private final Configuration _configuration; + private int _copy_subtree_item; + private int _cut_subtree_item; + private JButton _decr_domain_structure_evalue_thr; + private int _delete_node_or_subtree_item; + private JCheckBox _display_as_phylogram_cb; // Tree checkboxes - private JCheckBox _display_internal_data; - private JLabel _domain_display_label; - private JTextField _domain_structure_evalue_thr_tf; - private List _draw_phylogram; - private JCheckBox _dynamically_hide_data; - private int _edit_node_data_item; - private int _get_ext_desc_data; - private JButton _incr_domain_structure_evalue_thr; - private final MainPanel _mainpanel; - private JCheckBox _node_desc_popup_cb; - private int _open_pdb_item; - private int _open_seq_web_item; - private int _open_tax_web_item; - private int _color_node_font_item; - private JButton _order; - private boolean _order_of_appearance; - private int _paste_subtree_item; - private int _reroot_cb_item; - private JButton _return_to_super_tree; - // Search - private JLabel _search_found_label_0; - private JLabel _search_found_label_1; - private JButton _search_reset_button_0; - private JButton _search_reset_button_1; - private JTextField _search_tf_0; - private JTextField _search_tf_1; - private int _select_nodes_item; - private Sequence _selected_query_seq; - private JCheckBox _seq_relation_confidence_switch; - private JComboBox _sequence_relation_type_box; - private JCheckBox _show_annotation; - private JCheckBox _show_binary_character_counts; - private JCheckBox _show_binary_characters; + private JCheckBox _display_internal_data; + private JLabel _domain_display_label; + private JTextField _domain_structure_evalue_thr_tf; + private List _draw_phylogram; + private JCheckBox _dynamically_hide_data; + private int _edit_node_data_item; + private int _get_ext_desc_data; + private JButton _incr_domain_structure_evalue_thr; + private final MainPanel _mainpanel; + private JCheckBox _node_desc_popup_cb; + private int _open_pdb_item; + private int _open_seq_web_item; + private int _open_tax_web_item; + private int _color_node_font_item; + private JButton _order; + private boolean _order_of_appearance; + private int _paste_subtree_item; + private int _reroot_cb_item; + private JButton _return_to_super_tree; + // Search + private JLabel _search_found_label_0; + private JLabel _search_found_label_1; + private JButton _search_reset_button_0; + private JButton _search_reset_button_1; + private JTextField _search_tf_0; + private JTextField _search_tf_1; + private int _select_nodes_item; + private Sequence _selected_query_seq; + private JCheckBox _seq_relation_confidence_switch; + private JComboBox _sequence_relation_type_box; + private JCheckBox _show_annotation; + private JCheckBox _show_binary_character_counts; + private JCheckBox _show_binary_characters; // Indices for the click-to options in the combo box - private int _show_data_item; - private JCheckBox _show_domain_architectures; - private JCheckBox _show_events; - private JCheckBox _show_gene_names; - private JCheckBox _show_node_names; - private JCheckBox _show_properties_cb; - private JCheckBox _show_seq_names; - private JCheckBox _show_seq_symbols; - private JCheckBox _show_sequence_acc; - private JComboBox _show_sequence_relations; - private JCheckBox _show_taxo_code; - private JCheckBox _show_taxo_common_names; - private JCheckBox _show_taxo_images_cb; - private JCheckBox _show_taxo_scientific_names; - private JCheckBox _show_vector_data_cb; - private JButton _show_whole; - private int _sort_descendents_item; - private Map _species_colors; - private int _subtree_cb_item; - private int _swap_cb_item; - private JButton _uncollapse_all; - private JCheckBox _width_branches; - private JCheckBox _write_confidence; - private JButton _zoom_in_domain_structure; - // zooming and quick tree manipulation buttons: - private JButton _zoom_in_x; - private JButton _zoom_in_y; - private JLabel _zoom_label; - private JButton _zoom_out_domain_structure; - private JButton _zoom_out_x; - private JButton _zoom_out_y; + private int _show_data_item; + private JCheckBox _show_domain_architectures; + private JCheckBox _show_mol_seqs; + private JCheckBox _write_branch_length_values; + private JCheckBox _show_events; + private JCheckBox _show_gene_names; + private JCheckBox _show_node_names; + private JCheckBox _show_properties_cb; + private JCheckBox _show_seq_names; + private JCheckBox _show_seq_symbols; + private JCheckBox _show_sequence_acc; + private JComboBox _show_sequence_relations; + private JCheckBox _show_taxo_code; + private JCheckBox _show_taxo_common_names; + private JCheckBox _show_taxo_images_cb; + private JCheckBox _show_taxo_scientific_names; + private JCheckBox _show_vector_data_cb; + private JButton _show_whole; + private int _sort_descendents_item; + private Map _species_colors; + private Map _sequence_colors; + private int _subtree_cb_item; + private int _swap_cb_item; + private JButton _uncollapse_all; + private JCheckBox _width_branches; + private JCheckBox _write_confidence; + private JButton _zoom_in_domain_structure; + private JButton _zoom_in_x; + private JButton _zoom_in_y; + private JLabel _zoom_label; + private JButton _zoom_out_domain_structure; + private JButton _zoom_out_x; + private JButton _zoom_out_y; ControlPanel( final MainPanel ap, final Configuration configuration ) { init(); @@ -189,6 +195,16 @@ final class ControlPanel extends JPanel implements ActionListener { @Override public void actionPerformed( final ActionEvent e ) { try { + if ( e.getSource() == _color_acc_sequence ) { + if ( _color_acc_species != null ) { + _color_acc_species.setSelected( false ); + } + } + else if ( e.getSource() == _color_acc_species ) { + if ( _color_acc_sequence != null ) { + _color_acc_sequence.setSelected( false ); + } + } final TreePanel tp = getMainPanel().getCurrentTreePanel(); if ( tp == null ) { return; @@ -237,6 +253,7 @@ final class ControlPanel extends JPanel implements ActionListener { displayedPhylogenyMightHaveChanged( false ); } else if ( e.getSource() == _show_whole ) { + displayedPhylogenyMightHaveChanged( true ); showWhole(); } else if ( e.getSource() == _return_to_super_tree ) { @@ -244,14 +261,12 @@ final class ControlPanel extends JPanel implements ActionListener { showWhole(); } else if ( e.getSource() == _order ) { - DESCENDANT_SORT_PRIORITY pri = DESCENDANT_SORT_PRIORITY.TAXONOMY; - if ( ( !isShowTaxonomyScientificNames() && !isShowTaxonomyCode() && !isShowTaxonomyCommonNames() ) ) { - if ( ( isShowSequenceAcc() || isShowSeqNames() || isShowSeqSymbols() ) ) { - pri = DESCENDANT_SORT_PRIORITY.SEQUENCE; - } - else if ( isShowNodeNames() ) { - pri = DESCENDANT_SORT_PRIORITY.NODE_NAME; - } + DESCENDANT_SORT_PRIORITY pri = DESCENDANT_SORT_PRIORITY.NODE_NAME; + if ( isShowTaxonomyScientificNames() || isShowTaxonomyCode() ) { + pri = DESCENDANT_SORT_PRIORITY.TAXONOMY; + } + else if ( isShowSeqNames() || isShowSeqSymbols() || isShowGeneNames() ) { + pri = DESCENDANT_SORT_PRIORITY.SEQUENCE; } PhylogenyMethods.orderAppearance( tp.getPhylogeny().getRoot(), _order_of_appearance, true, pri ); _order_of_appearance = !_order_of_appearance; @@ -261,7 +276,7 @@ final class ControlPanel extends JPanel implements ActionListener { tp.getPhylogeny().recalculateNumberOfExternalDescendants( true ); tp.resetNodeIdToDistToLeafMap(); tp.setEdited( true ); - displayedPhylogenyMightHaveChanged( false ); + displayedPhylogenyMightHaveChanged( true ); } else if ( e.getSource() == _uncollapse_all ) { uncollapseAll( tp ); @@ -276,11 +291,15 @@ final class ControlPanel extends JPanel implements ActionListener { displayedPhylogenyMightHaveChanged( true ); } else if ( e.getSource() == _decr_domain_structure_evalue_thr ) { - _mainpanel.getCurrentTreePanel().decreaseDomainStructureEvalueThreshold(); + _mainpanel.getCurrentTreePanel().decreaseDomainStructureEvalueThresholdExp(); + search0(); + search1(); displayedPhylogenyMightHaveChanged( true ); } else if ( e.getSource() == _incr_domain_structure_evalue_thr ) { - _mainpanel.getCurrentTreePanel().increaseDomainStructureEvalueThreshold(); + _mainpanel.getCurrentTreePanel().increaseDomainStructureEvalueThresholdExp(); + search0(); + search1(); displayedPhylogenyMightHaveChanged( true ); } else if ( e.getSource() == _search_tf_0 ) { @@ -291,6 +310,11 @@ final class ControlPanel extends JPanel implements ActionListener { search1(); displayedPhylogenyMightHaveChanged( true ); } + else if ( ( _dynamically_hide_data != null ) && ( e.getSource() == _dynamically_hide_data ) + && !_dynamically_hide_data.isSelected() ) { + setDynamicHidingIsOn( false ); + displayedPhylogenyMightHaveChanged( true ); + } else { displayedPhylogenyMightHaveChanged( true ); } @@ -311,6 +335,10 @@ final class ControlPanel extends JPanel implements ActionListener { return _color_acc_species; } + public JCheckBox getColorAccSequenceCb() { + return _color_acc_sequence; + } + public JCheckBox getUseVisualStylesCb() { return _use_visual_styles_cb; } @@ -331,9 +359,9 @@ final class ControlPanel extends JPanel implements ActionListener { return _selected_query_seq; } - public JComboBox getSequenceRelationBox() { + public JComboBox getSequenceRelationBox() { if ( _show_sequence_relations == null ) { - _show_sequence_relations = new JComboBox(); + _show_sequence_relations = new JComboBox(); _show_sequence_relations.setFocusable( false ); _show_sequence_relations.setMaximumRowCount( 20 ); _show_sequence_relations.setFont( ControlPanel.js_font ); @@ -348,9 +376,9 @@ final class ControlPanel extends JPanel implements ActionListener { } /* GUILHEM_BEG */ - public JComboBox getSequenceRelationTypeBox() { + public JComboBox getSequenceRelationTypeBox() { if ( _sequence_relation_type_box == null ) { - _sequence_relation_type_box = new JComboBox(); + _sequence_relation_type_box = new JComboBox(); for( final SequenceRelation.SEQUENCE_RELATION_TYPE type : SequenceRelation.SEQUENCE_RELATION_TYPE.values() ) { _sequence_relation_type_box.addItem( type ); } @@ -388,7 +416,7 @@ final class ControlPanel extends JPanel implements ActionListener { } public void setSequenceRelationQueries( final Collection sequenceRelationQueries ) { - final JComboBox box = getSequenceRelationBox(); + final JComboBox box = getSequenceRelationBox(); while ( box.getItemCount() > 1 ) { box.removeItemAt( 1 ); } @@ -531,11 +559,16 @@ final class ControlPanel extends JPanel implements ActionListener { break; case Configuration.color_according_to_species: _color_acc_species = new JCheckBox( title ); - _color_acc_species - .setToolTipText( "To colorize taxonomy and sequence labels as a function of taxonomy" ); + _color_acc_species.setToolTipText( "To colorize node labels as a function of taxonomy" ); addJCheckBox( _color_acc_species, ch_panel ); add( ch_panel ); break; + case Configuration.color_according_to_sequence: + _color_acc_sequence = new JCheckBox( title ); + _color_acc_sequence.setToolTipText( "To colorize node labels as a function of sequence name" ); + addJCheckBox( _color_acc_sequence, ch_panel ); + add( ch_panel ); + break; case Configuration.color_according_to_annotation: _color_according_to_annotation = new JCheckBox( title ); _color_according_to_annotation @@ -606,11 +639,21 @@ final class ControlPanel extends JPanel implements ActionListener { addJCheckBox( _width_branches, ch_panel ); add( ch_panel ); break; + case Configuration.write_branch_length_values: + _write_branch_length_values = new JCheckBox( title ); + addJCheckBox( _write_branch_length_values, ch_panel ); + add( ch_panel ); + break; case Configuration.show_domain_architectures: _show_domain_architectures = new JCheckBox( title ); addJCheckBox( _show_domain_architectures, ch_panel ); add( ch_panel ); break; + case Configuration.show_mol_seqs: + _show_mol_seqs = new JCheckBox( title ); + addJCheckBox( _show_mol_seqs, ch_panel ); + add( ch_panel ); + break; case Configuration.show_seq_names: _show_seq_names = new JCheckBox( title ); addJCheckBox( _show_seq_names, ch_panel ); @@ -633,7 +676,7 @@ final class ControlPanel extends JPanel implements ActionListener { break; case Configuration.dynamically_hide_data: _dynamically_hide_data = new JCheckBox( title ); - getDynamicallyHideData().setToolTipText( "To hide labels depending on likely visibility" ); + getDynamicallyHideData().setToolTipText( "To hide labels depending on expected visibility" ); addJCheckBox( getDynamicallyHideData(), ch_panel ); add( ch_panel ); break; @@ -728,7 +771,7 @@ final class ControlPanel extends JPanel implements ActionListener { /** * Indicates what action should be execute when a node is clicked - * + * * @return the click-on action */ NodeClickAction getActionWhenNodeClicked() { @@ -791,6 +834,10 @@ final class ControlPanel extends JPanel implements ActionListener { return _species_colors; } + Map getSequenceColors() { + return _sequence_colors; + } + boolean isAntialiasScreenText() { return true; } @@ -803,6 +850,10 @@ final class ControlPanel extends JPanel implements ActionListener { return ( ( _color_acc_species != null ) && _color_acc_species.isSelected() ); } + boolean isColorAccordingToSequence() { + return ( ( _color_acc_sequence != null ) && _color_acc_sequence.isSelected() ); + } + boolean isUseVisualStyles() { return ( ( ( getUseVisualStylesCb() != null ) && getUseVisualStylesCb().isSelected() ) || ( ( getUseVisualStylesCb() == null ) && _color_branches ) ); } @@ -839,10 +890,18 @@ final class ControlPanel extends JPanel implements ActionListener { return ( ( getWriteConfidenceCb() != null ) && getWriteConfidenceCb().isSelected() ); } + boolean isWriteBranchLengthValues() { + return ( ( _write_branch_length_values != null ) && _write_branch_length_values.isSelected() ); + } + boolean isShowDomainArchitectures() { return ( ( _show_domain_architectures != null ) && _show_domain_architectures.isSelected() ); } + public boolean isShowMolSequences() { + return ( ( _show_mol_seqs != null ) && _show_mol_seqs.isSelected() ); + } + boolean isShowGeneNames() { return ( ( _show_gene_names != null ) && _show_gene_names.isSelected() ); } @@ -978,6 +1037,11 @@ final class ControlPanel extends JPanel implements ActionListener { _color_acc_species.setSelected( state ); } break; + case Configuration.color_according_to_sequence: + if ( _color_acc_sequence != null ) { + _color_acc_sequence.setSelected( state ); + } + break; case Configuration.color_according_to_annotation: if ( _color_according_to_annotation != null ) { _color_according_to_annotation.setSelected( state ); @@ -1048,6 +1112,16 @@ final class ControlPanel extends JPanel implements ActionListener { _show_domain_architectures.setSelected( state ); } break; + case Configuration.write_branch_length_values: + if ( _write_branch_length_values != null ) { + _write_branch_length_values.setSelected( state ); + } + break; + case Configuration.show_mol_seqs: + if ( _show_mol_seqs != null ) { + _show_mol_seqs.setSelected( state ); + } + break; case Configuration.show_seq_names: if ( _show_seq_names != null ) { _show_seq_names.setSelected( state ); @@ -1197,7 +1271,6 @@ final class ControlPanel extends JPanel implements ActionListener { } void setDynamicHidingIsOn( final boolean is_on ) { - // if ( !_configuration.isUseNativeUI() ) { if ( is_on ) { getDynamicallyHideData().setForeground( getConfiguration().getGuiCheckboxAndButtonActiveColor() ); } @@ -1209,7 +1282,6 @@ final class ControlPanel extends JPanel implements ActionListener { getDynamicallyHideData().setForeground( Color.BLACK ); } } - // } } void setSearchFoundCountsOnLabel0( final int counts ) { @@ -1231,10 +1303,10 @@ final class ControlPanel extends JPanel implements ActionListener { _species_colors = species_colors; } - /* GUILHEM_END */ - /* - * Set up the controls from the config settings. 11/26/05 - */ + void setSequenceColors( final Map sequence_colors ) { + _sequence_colors = sequence_colors; + } + void setupControls() { // The tree display options: setupDisplayCheckboxes(); @@ -1255,7 +1327,7 @@ final class ControlPanel extends JPanel implements ActionListener { } void setUpControlsForDomainStrucures() { - _domain_display_label = new JLabel( "Domain Display:" ); + _domain_display_label = new JLabel( "Domain Architectures:" ); add( customizeLabel( _domain_display_label, getConfiguration() ) ); add( _domain_display_label ); _zoom_in_domain_structure = new JButton( "d+" ); @@ -1291,14 +1363,13 @@ final class ControlPanel extends JPanel implements ActionListener { } void setupSearchTools0() { - final String tip = "Enter text to search for. Use ',' for multiple searches (logical OR) and '+' for logical AND."; final JLabel search_label = new JLabel( "Search (A):" ); search_label.setFont( ControlPanel.jcb_bold_font ); if ( !getConfiguration().isUseNativeUI() ) { search_label.setForeground( getConfiguration().getGuiCheckboxTextColor() ); } add( search_label ); - search_label.setToolTipText( tip ); + search_label.setToolTipText( SEARCH_TIP_TEXT ); _search_found_label_0 = new JLabel(); getSearchFoundCountsLabel0().setVisible( false ); _search_found_label_0.setFont( ControlPanel.jcb_bold_font ); @@ -1306,7 +1377,7 @@ final class ControlPanel extends JPanel implements ActionListener { _search_found_label_0.setForeground( getConfiguration().getGuiCheckboxTextColor() ); } _search_tf_0 = new JTextField( 3 ); - _search_tf_0.setToolTipText( tip ); + _search_tf_0.setToolTipText( SEARCH_TIP_TEXT ); _search_tf_0.setEditable( true ); if ( !getConfiguration().isUseNativeUI() ) { _search_tf_0.setForeground( getConfiguration().getGuiMenuBackgroundColor() ); @@ -1352,14 +1423,13 @@ final class ControlPanel extends JPanel implements ActionListener { } void setupSearchTools1() { - final String tip = "Enter text to search for. Use ',' for multiple searches (logical OR) and '+' for logical AND."; final JLabel search_label = new JLabel( "Search (B):" ); search_label.setFont( ControlPanel.jcb_bold_font ); if ( !getConfiguration().isUseNativeUI() ) { search_label.setForeground( getConfiguration().getGuiCheckboxTextColor() ); } add( search_label ); - search_label.setToolTipText( tip ); + search_label.setToolTipText( SEARCH_TIP_TEXT ); _search_found_label_1 = new JLabel(); getSearchFoundCountsLabel1().setVisible( false ); _search_found_label_1.setFont( ControlPanel.jcb_bold_font ); @@ -1367,7 +1437,7 @@ final class ControlPanel extends JPanel implements ActionListener { _search_found_label_1.setForeground( getConfiguration().getGuiCheckboxTextColor() ); } _search_tf_1 = new JTextField( 3 ); - _search_tf_1.setToolTipText( tip ); + _search_tf_1.setToolTipText( SEARCH_TIP_TEXT ); _search_tf_1.setEditable( true ); if ( !getConfiguration().isUseNativeUI() ) { _search_tf_1.setForeground( getConfiguration().getGuiMenuBackgroundColor() ); @@ -1422,6 +1492,9 @@ final class ControlPanel extends JPanel implements ActionListener { if ( _color_acc_species != null ) { _color_acc_species.setSelected( false ); } + if ( _color_acc_sequence != null ) { + _color_acc_sequence.setSelected( false ); + } _mainpanel.getCurrentTreePanel().repaint(); } @@ -1438,16 +1511,14 @@ final class ControlPanel extends JPanel implements ActionListener { _mainpanel.getCurrentTreePanel().validate(); _mainpanel.validate(); _mainpanel.getCurrentTreePanel().calcParametersForPainting( _mainpanel.getSizeOfViewport().width, - _mainpanel.getSizeOfViewport().height, - true ); + _mainpanel.getSizeOfViewport().height ); _mainpanel.getCurrentTreePanel().resetPreferredSize(); _mainpanel.adjustJScrollPane(); _mainpanel.getCurrentTreePanel().repaint(); _mainpanel.getCurrentTreePanel().validate(); _mainpanel.validate(); _mainpanel.getCurrentTreePanel().calcParametersForPainting( _mainpanel.getSizeOfViewport().width, - _mainpanel.getSizeOfViewport().height, - true ); + _mainpanel.getSizeOfViewport().height ); _mainpanel.getCurrentTreePanel().resetPreferredSize(); _mainpanel.adjustJScrollPane(); _mainpanel.getCurrentTreePanel().repaint(); @@ -1459,8 +1530,7 @@ final class ControlPanel extends JPanel implements ActionListener { if ( tree_panel != null ) { tree_panel.validate(); tree_panel.calcParametersForPainting( _mainpanel.getSizeOfViewport().width, - _mainpanel.getSizeOfViewport().height, - true ); + _mainpanel.getSizeOfViewport().height ); tree_panel.resetPreferredSize(); tree_panel.repaint(); } @@ -1474,7 +1544,7 @@ final class ControlPanel extends JPanel implements ActionListener { add( spacer ); _click_to_label = new JLabel( "Click on Node to:" ); add( customizeLabel( _click_to_label, getConfiguration() ) ); - _click_to_combobox = new JComboBox(); + _click_to_combobox = new JComboBox(); _click_to_combobox.setFocusable( false ); _click_to_combobox.setMaximumRowCount( 14 ); _click_to_combobox.setFont( ControlPanel.js_font ); @@ -1547,7 +1617,7 @@ final class ControlPanel extends JPanel implements ActionListener { void updateDomainStructureEvaluethresholdDisplay() { if ( _domain_structure_evalue_thr_tf != null ) { _domain_structure_evalue_thr_tf.setText( "10^" - + getMainPanel().getCurrentTreePanel().getDomainStructureEvalueThreshold() ); + + getMainPanel().getCurrentTreePanel().getDomainStructureEvalueThresholdExp() ); } } @@ -1675,10 +1745,10 @@ final class ControlPanel extends JPanel implements ActionListener { _sequence_relation_type_box.setBackground( getConfiguration().getGuiButtonBackgroundColor() ); _sequence_relation_type_box.setForeground( getConfiguration().getGuiButtonTextColor() ); } - _sequence_relation_type_box.setRenderer( new ListCellRenderer() { + _sequence_relation_type_box.setRenderer( new ListCellRenderer() { @Override - public Component getListCellRendererComponent( final JList list, + public Component getListCellRendererComponent( final JList list, final Object value, final int index, final boolean isSelected, @@ -1721,6 +1791,7 @@ final class ControlPanel extends JPanel implements ActionListener { private void init() { _draw_phylogram = new ArrayList(); setSpeciesColors( new HashMap() ); + setSequenceColors( new HashMap() ); setAnnotationColors( new HashMap() ); } @@ -1733,8 +1804,8 @@ final class ControlPanel extends JPanel implements ActionListener { getSearchResetButton0().setEnabled( true ); getSearchResetButton0().setVisible( true ); String[] queries = null; - List nodes = null; - if ( query_str.indexOf( ',' ) >= 0 ) { + Set nodes = null; + if ( ( query_str.indexOf( ',' ) >= 0 ) && !getOptions().isSearchWithRegex() ) { queries = query_str.split( ",+" ); } else { @@ -1742,31 +1813,39 @@ final class ControlPanel extends JPanel implements ActionListener { queries[ 0 ] = query_str.trim(); } if ( ( queries != null ) && ( queries.length > 0 ) ) { - nodes = new ArrayList(); + nodes = new HashSet(); for( String query : queries ) { if ( ForesterUtil.isEmpty( query ) ) { continue; } query = query.trim(); - if ( query.indexOf( '+' ) >= 0 ) { + final TreePanel tp = getMainPanel().getCurrentTreePanel(); + if ( ( query.indexOf( '+' ) > 0 ) && !getOptions().isSearchWithRegex() ) { nodes.addAll( PhylogenyMethods.searchDataLogicalAnd( query.split( "\\++" ), tree, getOptions().isSearchCaseSensitive(), !getOptions().isMatchWholeTermsOnly(), - isShowDomainArchitectures() ) ); + isShowDomainArchitectures(), + tp != null ? Math.pow( 10, + tp.getDomainStructureEvalueThresholdExp() ) + : 0 ) ); } else { nodes.addAll( PhylogenyMethods.searchData( query, tree, getOptions().isSearchCaseSensitive(), !getOptions().isMatchWholeTermsOnly(), - isShowDomainArchitectures() ) ); + getOptions().isSearchWithRegex(), + isShowDomainArchitectures(), + tp != null ? Math.pow( 10, tp + .getDomainStructureEvalueThresholdExp() ) : 0 ) ); } } if ( getOptions().isInverseSearchResult() ) { final List all = PhylogenyMethods.obtainAllNodesAsList( tree ); all.removeAll( nodes ); - nodes = all; + nodes = new HashSet(); + nodes.addAll( all ); } } if ( ( nodes != null ) && ( nodes.size() > 0 ) ) { @@ -1787,8 +1866,8 @@ final class ControlPanel extends JPanel implements ActionListener { getSearchResetButton1().setEnabled( true ); getSearchResetButton1().setVisible( true ); String[] queries = null; - List nodes = null; - if ( query_str.indexOf( ',' ) >= 0 ) { + Set nodes = null; + if ( ( query_str.indexOf( ',' ) >= 0 ) && !getOptions().isSearchWithRegex() ) { queries = query_str.split( ",+" ); } else { @@ -1796,31 +1875,39 @@ final class ControlPanel extends JPanel implements ActionListener { queries[ 0 ] = query_str.trim(); } if ( ( queries != null ) && ( queries.length > 0 ) ) { - nodes = new ArrayList(); + nodes = new HashSet(); for( String query : queries ) { if ( ForesterUtil.isEmpty( query ) ) { continue; } query = query.trim(); - if ( query.indexOf( '+' ) >= 0 ) { + final TreePanel tp = getMainPanel().getCurrentTreePanel(); + if ( ( query.indexOf( '+' ) > 0 ) && !getOptions().isSearchWithRegex() ) { nodes.addAll( PhylogenyMethods.searchDataLogicalAnd( query.split( "\\++" ), tree, getOptions().isSearchCaseSensitive(), !getOptions().isMatchWholeTermsOnly(), - isShowDomainArchitectures() ) ); + isShowDomainArchitectures(), + tp != null ? Math.pow( 10, + tp.getDomainStructureEvalueThresholdExp() ) + : 0 ) ); } else { nodes.addAll( PhylogenyMethods.searchData( query, tree, getOptions().isSearchCaseSensitive(), !getOptions().isMatchWholeTermsOnly(), - isShowDomainArchitectures() ) ); + getOptions().isSearchWithRegex(), + isShowDomainArchitectures(), + tp != null ? Math.pow( 10, tp + .getDomainStructureEvalueThresholdExp() ) : 0 ) ); } } if ( getOptions().isInverseSearchResult() ) { final List all = PhylogenyMethods.obtainAllNodesAsList( tree ); all.removeAll( nodes ); - nodes = all; + nodes = new HashSet(); + nodes.addAll( all ); } } if ( ( nodes != null ) && ( nodes.size() > 0 ) ) { @@ -1965,47 +2052,11 @@ final class ControlPanel extends JPanel implements ActionListener { _get_ext_desc_data = cb_index; if ( !ForesterUtil.isEmpty( getConfiguration().getLabelForGetExtDescendentsData() ) ) { addClickToOption( Configuration.get_ext_desc_data, getConfiguration() - .getLabelForGetExtDescendentsData() ); + .getLabelForGetExtDescendentsData() ); } else { - String s = ";"; - switch ( getConfiguration().getExtDescNodeDataToReturn() ) { - case NODE_NAME: - s = "Node Names"; - break; - case SEQUENCE_ACC: - s = "Sequence Accessors"; - break; - case SEQUENCE_MOL_SEQ: - s = "Molecular Sequence"; - break; - case SEQUENCE_MOL_SEQ_FASTA: - s = "Molecular Sequence (Fasta)"; - break; - case SEQUENCE_NAME: - s = "Sequence Names"; - break; - case GENE_NAME: - s = "Gene Names"; - break; - case SEQUENCE_SYMBOL: - s = "Sequence Symbols"; - break; - case TAXONOMY_CODE: - s = "Taxonomy Codes"; - break; - case TAXONOMY_COMM0N_NAME: - s = "Taxonomy Common Names"; - break; - case TAXONOMY_SCIENTIFIC_NAME: - s = "Scientific Names"; - break; - case UNKNOWN: - s = "User Selected Data"; - break; - } - final String label = _configuration.getClickToTitle( Configuration.get_ext_desc_data ) + " " + s; - addClickToOption( Configuration.get_ext_desc_data, label ); + addClickToOption( Configuration.get_ext_desc_data, + getConfiguration().getClickToTitle( Configuration.get_ext_desc_data ) ); } if ( default_option == Configuration.get_ext_desc_data ) { selected_index = cb_index; @@ -2095,6 +2146,12 @@ final class ControlPanel extends JPanel implements ActionListener { setCheckbox( Configuration.display_internal_data, _configuration.doCheckOption( Configuration.display_internal_data ) ); } + if ( _configuration.doDisplayOption( Configuration.color_according_to_sequence ) ) { + addCheckbox( Configuration.color_according_to_sequence, + _configuration.getDisplayTitle( Configuration.color_according_to_sequence ) ); + setCheckbox( Configuration.color_according_to_sequence, + _configuration.doCheckOption( Configuration.color_according_to_sequence ) ); + } if ( _configuration.doDisplayOption( Configuration.color_according_to_species ) ) { addCheckbox( Configuration.color_according_to_species, _configuration.getDisplayTitle( Configuration.color_according_to_species ) ); @@ -2164,6 +2221,18 @@ final class ControlPanel extends JPanel implements ActionListener { addCheckbox( Configuration.show_annotation, _configuration.getDisplayTitle( Configuration.show_annotation ) ); setCheckbox( Configuration.show_annotation, _configuration.doCheckOption( Configuration.show_annotation ) ); } + if ( _configuration.doDisplayOption( Configuration.write_confidence_values ) ) { + addCheckbox( Configuration.write_confidence_values, + _configuration.getDisplayTitle( Configuration.write_confidence_values ) ); + setCheckbox( Configuration.write_confidence_values, + _configuration.doCheckOption( Configuration.write_confidence_values ) ); + } + if ( _configuration.doDisplayOption( Configuration.write_branch_length_values ) ) { + addCheckbox( Configuration.write_branch_length_values, + _configuration.getDisplayTitle( Configuration.write_branch_length_values ) ); + setCheckbox( Configuration.write_branch_length_values, + _configuration.doCheckOption( Configuration.write_branch_length_values ) ); + } if ( _configuration.doDisplayOption( Configuration.show_binary_characters ) ) { addCheckbox( Configuration.show_binary_characters, _configuration.getDisplayTitle( Configuration.show_binary_characters ) ); @@ -2182,11 +2251,9 @@ final class ControlPanel extends JPanel implements ActionListener { setCheckbox( Configuration.show_domain_architectures, _configuration.doCheckOption( Configuration.show_domain_architectures ) ); } - if ( _configuration.doDisplayOption( Configuration.write_confidence_values ) ) { - addCheckbox( Configuration.write_confidence_values, - _configuration.getDisplayTitle( Configuration.write_confidence_values ) ); - setCheckbox( Configuration.write_confidence_values, - _configuration.doCheckOption( Configuration.write_confidence_values ) ); + if ( _configuration.doDisplayOption( Configuration.show_mol_seqs ) ) { + addCheckbox( Configuration.show_mol_seqs, _configuration.getDisplayTitle( Configuration.show_mol_seqs ) ); + setCheckbox( Configuration.show_mol_seqs, _configuration.doCheckOption( Configuration.show_mol_seqs ) ); } if ( _configuration.doDisplayOption( Configuration.write_events ) ) { addCheckbox( Configuration.write_events, _configuration.getDisplayTitle( Configuration.write_events ) ); @@ -2211,23 +2278,172 @@ final class ControlPanel extends JPanel implements ActionListener { private void setVisibilityOfDomainStrucureControls() { if ( _zoom_in_domain_structure != null ) { - if ( isShowDomainArchitectures() ) { - _domain_display_label.setVisible( true ); - _zoom_in_domain_structure.setVisible( true ); - _zoom_out_domain_structure.setVisible( true ); - _decr_domain_structure_evalue_thr.setVisible( true ); - _incr_domain_structure_evalue_thr.setVisible( true ); - _domain_structure_evalue_thr_tf.setVisible( true ); + final MainFrame mf = getMainFrame(); + if ( mf != null ) { + if ( isShowDomainArchitectures() ) { + _domain_display_label.setVisible( true ); + _zoom_in_domain_structure.setVisible( true ); + _zoom_out_domain_structure.setVisible( true ); + _decr_domain_structure_evalue_thr.setVisible( true ); + _incr_domain_structure_evalue_thr.setVisible( true ); + _domain_structure_evalue_thr_tf.setVisible( true ); + if ( mf._right_line_up_domains_cbmi != null ) { + mf._right_line_up_domains_cbmi.setVisible( true ); + } + if ( mf._show_domain_labels != null ) { + mf._show_domain_labels.setVisible( true ); + } + } + else { + _domain_display_label.setVisible( false ); + _zoom_in_domain_structure.setVisible( false ); + _zoom_out_domain_structure.setVisible( false ); + _decr_domain_structure_evalue_thr.setVisible( false ); + _incr_domain_structure_evalue_thr.setVisible( false ); + _domain_structure_evalue_thr_tf.setVisible( false ); + if ( mf._right_line_up_domains_cbmi != null ) { + mf._right_line_up_domains_cbmi.setVisible( false ); + } + if ( mf._show_domain_labels != null ) { + mf._show_domain_labels.setVisible( false ); + } + } + } + } + } + + // This takes care of ArchaeopteryxE-issue. + // Can, and will, return null prior to ArchaeopteryxE initialization completion. + final private MainFrame getMainFrame() { + MainFrame mf = getMainPanel().getMainFrame(); + if ( mf == null ) { + // Must be "E" applet version. + final ArchaeopteryxE e = ( ArchaeopteryxE ) ( ( MainPanelApplets ) getMainPanel() ).getApplet(); + if ( e.getMainPanel() == null ) { + return null; + } + mf = e.getMainPanel().getMainFrame(); + } + return mf; + } + + void setVisibilityOfX() { + final MainFrame mf = getMainFrame(); + if ( mf != null ) { + if ( ( getCurrentTreePanel() != null ) && ( getCurrentTreePanel().getPhylogeny() != null ) ) { + if ( AptxUtil.isHasAtLeastOneBranchWithSupportSD( getCurrentTreePanel().getPhylogeny() ) ) { + if ( mf._show_confidence_stddev_cbmi != null ) { + mf._show_confidence_stddev_cbmi.setVisible( true ); + } + } + else { + if ( mf._show_confidence_stddev_cbmi != null ) { + mf._show_confidence_stddev_cbmi.setVisible( false ); + } + } + if ( AptxUtil.isHasAtLeastOneNodeWithScientificName( getCurrentTreePanel().getPhylogeny() ) ) { + if ( mf._abbreviate_scientific_names != null ) { + mf._abbreviate_scientific_names.setVisible( true ); + } + } + else { + if ( mf._abbreviate_scientific_names != null ) { + mf._abbreviate_scientific_names.setVisible( false ); + } + } + if ( AptxUtil.isHasAtLeastOneNodeWithSequenceAnnotation( getCurrentTreePanel().getPhylogeny() ) ) { + if ( mf._show_annotation_ref_source != null ) { + mf._show_annotation_ref_source.setVisible( true ); + } + } + else { + if ( mf._show_annotation_ref_source != null ) { + mf._show_annotation_ref_source.setVisible( false ); + } + } + } + if ( isDrawPhylogram() + || ( ( getCurrentTreePanel() != null ) && ( ( getCurrentTreePanel().getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.CIRCULAR ) || ( getCurrentTreePanel() + .getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.UNROOTED ) ) ) ) { + if ( mf._non_lined_up_cladograms_rbmi != null ) { + mf._non_lined_up_cladograms_rbmi.setVisible( false ); + } + if ( mf._uniform_cladograms_rbmi != null ) { + mf._uniform_cladograms_rbmi.setVisible( false ); + } + if ( mf._ext_node_dependent_cladogram_rbmi != null ) { + mf._ext_node_dependent_cladogram_rbmi.setVisible( false ); + } + } + else { + if ( mf._non_lined_up_cladograms_rbmi != null ) { + mf._non_lined_up_cladograms_rbmi.setVisible( true ); + } + if ( mf._uniform_cladograms_rbmi != null ) { + mf._uniform_cladograms_rbmi.setVisible( true ); + } + if ( mf._ext_node_dependent_cladogram_rbmi != null ) { + mf._ext_node_dependent_cladogram_rbmi.setVisible( true ); + } + } + if ( isDrawPhylogram() ) { + if ( mf._show_scale_cbmi != null ) { + mf._show_scale_cbmi.setVisible( true ); + } + } + else { + if ( mf._show_scale_cbmi != null ) { + mf._show_scale_cbmi.setVisible( false ); + } + } + if ( getCurrentTreePanel() != null ) { + if ( ( getCurrentTreePanel().getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.CIRCULAR ) + || ( getCurrentTreePanel().getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.UNROOTED ) ) { + if ( mf._label_direction_cbmi != null ) { + mf._label_direction_cbmi.setVisible( true ); + } + } + else { + if ( mf._label_direction_cbmi != null ) { + mf._label_direction_cbmi.setVisible( false ); + } + } + } + } + } + + void setVisibilityOfDomainStrucureCB() { + try { + if ( ( getCurrentTreePanel() != null ) + && ( ( getCurrentTreePanel().getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.CIRCULAR ) || ( getCurrentTreePanel() + .getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.UNROOTED ) ) ) { + if ( getMainPanel().getMainFrame()._right_line_up_domains_cbmi != null ) { + getMainPanel().getMainFrame()._right_line_up_domains_cbmi.setVisible( false ); + } + if ( getMainPanel().getMainFrame()._show_domain_labels != null ) { + getMainPanel().getMainFrame()._show_domain_labels.setVisible( false ); + } + } + else if ( isShowDomainArchitectures() ) { + if ( getMainPanel().getMainFrame()._right_line_up_domains_cbmi != null ) { + getMainPanel().getMainFrame()._right_line_up_domains_cbmi.setVisible( true ); + } + if ( getMainPanel().getMainFrame()._show_domain_labels != null ) { + getMainPanel().getMainFrame()._show_domain_labels.setVisible( true ); + } } else { - _domain_display_label.setVisible( false ); - _zoom_in_domain_structure.setVisible( false ); - _zoom_out_domain_structure.setVisible( false ); - _decr_domain_structure_evalue_thr.setVisible( false ); - _incr_domain_structure_evalue_thr.setVisible( false ); - _domain_structure_evalue_thr_tf.setVisible( false ); + if ( getMainPanel().getMainFrame()._right_line_up_domains_cbmi != null ) { + getMainPanel().getMainFrame()._right_line_up_domains_cbmi.setVisible( false ); + } + if ( getMainPanel().getMainFrame()._show_domain_labels != null ) { + getMainPanel().getMainFrame()._show_domain_labels.setVisible( false ); + } } } + catch ( final Exception ignore ) { + //not important... + } } static JLabel customizeLabel( final JLabel label, final Configuration configuration ) {