package org.forester.archaeopteryx;
+import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import org.forester.archaeopteryx.Options.NODE_LABEL_DIRECTION;
import org.forester.archaeopteryx.Options.PHYLOGENY_GRAPHICS_TYPE;
import org.forester.phylogeny.Phylogeny;
+import org.forester.phylogeny.data.NodeVisualization.NodeFill;
+import org.forester.phylogeny.data.NodeVisualization.NodeShape;
import org.forester.util.ForesterConstants;
import org.forester.util.ForesterUtil;
public abstract class MainFrame extends JFrame implements ActionListener {
- static final String USE_MOUSEWHEEL_SHIFT_TO_ROTATE = "In this display type, use mousewheel + Shift to rotate [or A and S]";
- static final String PHYLOXML_REF_TOOL_TIP = Constants.PHYLOXML_REFERENCE; //TODO //FIXME
- static final String APTX_REF_TOOL_TIP = Constants.APTX_REFERENCE;
- private static final long serialVersionUID = 3655000897845508358L;
- final static Font menu_font = new Font( Configuration.getDefaultFontFamilyName(),
- Font.PLAIN,
- 10 );
- static final String TYPE_MENU_HEADER = "Type";
- static final String RECTANGULAR_TYPE_CBMI_LABEL = "Rectangular";
- static final String EURO_TYPE_CBMI_LABEL = "Euro Type";
- static final String CURVED_TYPE_CBMI_LABEL = "Curved";
- static final String TRIANGULAR_TYPE_CBMI_LABEL = "Triangular";
- static final String CONVEX_TYPE_CBMI_LABEL = "Convex";
- static final String ROUNDED_TYPE_CBMI_LABEL = "Rounded";
- static final String UNROOTED_TYPE_CBMI_LABEL = "Unrooted (alpha)"; //TODO
- static final String CIRCULAR_TYPE_CBMI_LABEL = "Circular (alpha)"; //TODO
- static final String OPTIONS_HEADER = "Options";
- static final String SEARCH_SUBHEADER = "Search:";
- static final String DISPLAY_SUBHEADER = "Display:";
- static final String SEARCH_TERMS_ONLY_LABEL = "Match Complete Terms Only";
- static final String SEARCH_CASE_SENSITIVE_LABEL = "Case Sensitive";
- static final String INVERSE_SEARCH_RESULT_LABEL = "Negate Result";
- static final String DISPLAY_BRANCH_LENGTH_VALUES_LABEL = "Display Branch Length Values";
- static final String DISPLAY_SCALE_LABEL = "Display Scale";
- static final String NON_LINED_UP_CLADOGRAMS_LABEL = "Non-Lined Up Cladograms";
- static final String UNIFORM_CLADOGRAMS_LABEL = "Total Node Sum Dependent Cladograms";
- static final String LABEL_DIRECTION_LABEL = "Radial Labels";
- static final String LABEL_DIRECTION_TIP = "To use radial node labels in radial and unrooted display types";
- static final String SCREEN_ANTIALIAS_LABEL = "Antialias";
- static final String COLOR_LABELS_LABEL = "Colorize Labels Same as Parent Branch";
- static final String BG_GRAD_LABEL = "Background Color Gradient";
- static final String DISPLAY_NODE_BOXES_LABEL = "Display Node Boxes";
- static final String SHOW_OVERVIEW_LABEL = "Show Overview";
- static final String FONT_SIZE_MENU_LABEL = "Font Size";
- static final String NONUNIFORM_CLADOGRAMS_LABEL = "External Node Sum Dependent Cladograms";
- static final String SHOW_DOMAIN_LABELS_LABEL = "Show Domain Labels";
- static final String COLOR_LABELS_TIP = "To use parent branch colors for node labels as well, need to turn off taxonomy dependent colorization and turn on branch colorization for this to become apparent";
- static final String ABBREV_SN_LABEL = "Abbreviate Scientific Taxonomic Names";
+ static final String USE_MOUSEWHEEL_SHIFT_TO_ROTATE = "In this display type, use mousewheel + Shift to rotate [or A and S]";
+ static final String PHYLOXML_REF_TOOL_TIP = Constants.PHYLOXML_REFERENCE; //TODO //FIXME
+ static final String APTX_REF_TOOL_TIP = Constants.APTX_REFERENCE;
+ private static final long serialVersionUID = 3655000897845508358L;
+ final static Font menu_font = new Font( Configuration.getDefaultFontFamilyName(),
+ Font.PLAIN,
+ 10 );
+ static final String TYPE_MENU_HEADER = "Type";
+ static final String RECTANGULAR_TYPE_CBMI_LABEL = "Rectangular";
+ static final String EURO_TYPE_CBMI_LABEL = "Euro Type";
+ static final String CURVED_TYPE_CBMI_LABEL = "Curved";
+ static final String TRIANGULAR_TYPE_CBMI_LABEL = "Triangular";
+ static final String CONVEX_TYPE_CBMI_LABEL = "Convex";
+ static final String ROUNDED_TYPE_CBMI_LABEL = "Rounded";
+ static final String UNROOTED_TYPE_CBMI_LABEL = "Unrooted (alpha)"; //TODO
+ static final String CIRCULAR_TYPE_CBMI_LABEL = "Circular (alpha)"; //TODO
+ static final String OPTIONS_HEADER = "Options";
+ static final String SEARCH_SUBHEADER = "Search:";
+ static final String DISPLAY_SUBHEADER = "Display:";
+ static final String SEARCH_TERMS_ONLY_LABEL = "Match Complete Terms Only";
+ static final String SEARCH_CASE_SENSITIVE_LABEL = "Case Sensitive";
+ static final String INVERSE_SEARCH_RESULT_LABEL = "Negate Result";
+ static final String DISPLAY_BRANCH_LENGTH_VALUES_LABEL = "Display Branch Length Values";
+ static final String DISPLAY_SCALE_LABEL = "Display Scale";
+ static final String NON_LINED_UP_CLADOGRAMS_LABEL = "Non-Lined Up Cladograms";
+ static final String UNIFORM_CLADOGRAMS_LABEL = "Total Node Sum Dependent Cladograms";
+ static final String LABEL_DIRECTION_LABEL = "Radial Labels";
+ static final String LABEL_DIRECTION_TIP = "To use radial node labels in radial and unrooted display types";
+ static final String SCREEN_ANTIALIAS_LABEL = "Antialias";
+ static final String COLOR_LABELS_LABEL = "Colorize Labels Same as Parent Branch";
+ static final String BG_GRAD_LABEL = "Background Color Gradient";
+ static final String DISPLAY_NODE_BOXES_LABEL = "Display Node Shapes";
+ static final String SHOW_OVERVIEW_LABEL = "Show Overview";
+ static final String FONT_SIZE_MENU_LABEL = "Font Size";
+ static final String NONUNIFORM_CLADOGRAMS_LABEL = "External Node Sum Dependent Cladograms";
+ static final String SHOW_DOMAIN_LABELS_LABEL = "Show Domain Labels";
+ static final String COLOR_LABELS_TIP = "To use parent branch colors for node labels as well, need to turn off taxonomy dependent colorization and turn on branch colorization for this to become apparent";
+ static final String ABBREV_SN_LABEL = "Abbreviate Scientific Taxonomic Names";
+ static final String TAXONOMY_COLORIZE_NODE_SHAPES_LABEL = "Colorize Node Shapes According to Taxonomy";
+ static final String CYCLE_NODE_SHAPE_LABEL = "Cycle Node Shapes";
+ static final String CYCLE_NODE_FILL_LABEL = "Cycle Node Fill Type";
+ static final String CHOOSE_NODE_SIZE_LABEL = "Choose Node Shape Size";
JMenuBar _jmenubar;
JMenu _file_jmenu;
JMenu _tools_menu;
JMenuItem _midpoint_root_item;
JMenuItem _taxcolor_item;
JMenuItem _confcolor_item;
+ JMenuItem _color_rank_jmi;
JMenuItem _infer_common_sn_names_item;
JMenuItem _collapse_species_specific_subtrees;
- JMenuItem _collapse_below_threshold; //TODO implememt me
+ JMenuItem _collapse_below_threshold; //TODO implememt me
JMenuItem _obtain_detailed_taxonomic_information_jmi;
+ JMenuItem _obtain_detailed_taxonomic_information_deleting_jmi;
+ JMenuItem _obtain_uniprot_seq_information_jmi;
JMenuItem _move_node_names_to_tax_sn_jmi;
JMenuItem _move_node_names_to_seq_names_jmi;
JMenuItem _extract_tax_code_from_node_names_jmi;
// _ screen display
JCheckBoxMenuItem _screen_antialias_cbmi;
JCheckBoxMenuItem _background_gradient_cbmi;
- JCheckBoxMenuItem _show_node_boxes_cbmi;
JRadioButtonMenuItem _non_lined_up_cladograms_rbmi;
JRadioButtonMenuItem _uniform_cladograms_rbmi;
JRadioButtonMenuItem _ext_node_dependent_cladogram_rbmi;
JCheckBoxMenuItem _show_branch_length_values_cbmi;
- JCheckBoxMenuItem _show_scale_cbmi; //TODO fix me
+ JCheckBoxMenuItem _show_scale_cbmi; //TODO fix me
JCheckBoxMenuItem _show_overview_cbmi;
JCheckBoxMenuItem _show_domain_labels;
JCheckBoxMenuItem _abbreviate_scientific_names;
JCheckBoxMenuItem _color_labels_same_as_parent_branch;
JMenuItem _overview_placment_mi;
JMenuItem _choose_minimal_confidence_mi;
+ JCheckBoxMenuItem _show_default_node_shapes_cbmi;
+ JMenuItem _cycle_node_shape_mi;
+ JMenuItem _cycle_node_fill_mi;
+ JMenuItem _choose_node_size_mi;
+ JCheckBoxMenuItem _taxonomy_colorize_node_shapes_cbmi;
// _ print
JCheckBoxMenuItem _graphics_export_visible_only_cbmi;
JCheckBoxMenuItem _antialias_print_cbmi;
else if ( o == _confcolor_item ) {
confColor();
}
+ else if ( o == _color_rank_jmi ) {
+ colorRank();
+ }
else if ( o == _infer_common_sn_names_item ) {
if ( isSubtreeDisplayed() ) {
return;
else if ( o == _choose_minimal_confidence_mi ) {
chooseMinimalConfidence();
}
+ else if ( o == _choose_node_size_mi ) {
+ chooseNodeSize( getOptions(), this );
+ }
else if ( o == _overview_placment_mi ) {
MainFrame.cycleOverview( getOptions(), getCurrentTreePanel() );
}
+ else if ( o == _cycle_node_fill_mi ) {
+ MainFrame.cycleNodeFill( getOptions(), getCurrentTreePanel() );
+ }
+ else if ( o == _cycle_node_shape_mi ) {
+ MainFrame.cycleNodeShape( getOptions(), getCurrentTreePanel() );
+ }
else if ( o == _screen_antialias_cbmi ) {
updateOptions( getOptions() );
updateScreenTextAntialias( getMainPanel().getTreePanels() );
else if ( o == _color_labels_same_as_parent_branch ) {
updateOptions( getOptions() );
}
- else if ( o == _show_node_boxes_cbmi ) {
+ else if ( o == _show_default_node_shapes_cbmi ) {
+ updateOptions( getOptions() );
+ }
+ else if ( o == _taxonomy_colorize_node_shapes_cbmi ) {
updateOptions( getOptions() );
}
else if ( o == _non_lined_up_cladograms_rbmi ) {
}
boolean isSubtreeDisplayed() {
- if ( getCurrentTreePanel().isCurrentTreeIsSubtree() ) {
- JOptionPane
- .showMessageDialog( this,
- "This operation can only be performed on a complete tree, not on the currently displayed sub-tree only.",
- "Operation can not be exectuted on a sub-tree",
- JOptionPane.WARNING_MESSAGE );
- return true;
+ if ( getCurrentTreePanel() != null ) {
+ if ( getCurrentTreePanel().isCurrentTreeIsSubtree() ) {
+ JOptionPane
+ .showMessageDialog( this,
+ "This operation can only be performed on a complete tree, not on the currently displayed sub-tree only.",
+ "Operation can not be exectuted on a sub-tree",
+ JOptionPane.WARNING_MESSAGE );
+ return true;
+ }
}
return false;
}
void buildViewMenu() {
_view_jmenu = createMenu( "View", getConfiguration() );
+ _view_jmenu.add( _display_basic_information_item = new JMenuItem( "Display Basic Information" ) );
+ _view_jmenu.addSeparator();
_view_jmenu.add( _view_as_XML_item = new JMenuItem( "View as phyloXML" ) );
_view_jmenu.add( _view_as_NH_item = new JMenuItem( "View as Newick" ) );
_view_jmenu.add( _view_as_NHX_item = new JMenuItem( "View as NHX" ) );
_view_jmenu.add( _view_as_nexus_item = new JMenuItem( "View as Nexus" ) );
- _view_jmenu.add( _display_basic_information_item = new JMenuItem( "Display Basic Information" ) );
customizeJMenuItem( _display_basic_information_item );
customizeJMenuItem( _view_as_NH_item );
customizeJMenuItem( _view_as_NHX_item );
}
}
+ static void chooseNodeSize( final Options options, final Component parent ) {
+ final String s = ( String ) JOptionPane.showInputDialog( parent,
+ "Please enter the default size for node shapes.\n"
+ + "[current value: "
+ + options.getDefaultNodeShapeSize() + "]\n",
+ "Node Shape Size",
+ JOptionPane.QUESTION_MESSAGE,
+ null,
+ null,
+ options.getDefaultNodeShapeSize() );
+ if ( !ForesterUtil.isEmpty( s ) ) {
+ boolean success = true;
+ double m = 0.0;
+ final String m_str = s.trim();
+ if ( !ForesterUtil.isEmpty( m_str ) ) {
+ try {
+ m = Double.parseDouble( m_str );
+ }
+ catch ( final Exception ex ) {
+ success = false;
+ }
+ }
+ else {
+ success = false;
+ }
+ if ( success && ( m >= 0.0 ) ) {
+ final short size = ForesterUtil.roundToShort( m );
+ if ( size >= 0.0 ) {
+ options.setDefaultNodeShapeSize( size );
+ }
+ }
+ }
+ }
+
void close() {
removeTextFrame();
if ( _mainpanel != null ) {
}
}
+ void colorRank() {
+ if ( _mainpanel.getCurrentTreePanel() != null ) {
+ final String[] ranks = Util.getAllRanks( _mainpanel.getCurrentTreePanel().getPhylogeny() );
+ if ( ranks.length < 1 ) {
+ JOptionPane.showMessageDialog( this,
+ "No rank information was found",
+ "No Rank Inoformation",
+ JOptionPane.WARNING_MESSAGE );
+ return;
+ }
+ final String rank = ( String ) JOptionPane
+ .showInputDialog( this,
+ "What rank should the colorization be based on",
+ "Rank Selection",
+ JOptionPane.PLAIN_MESSAGE,
+ null,
+ ranks,
+ null );
+ if ( !ForesterUtil.isEmpty( rank ) ) {
+ _mainpanel.getCurrentTreePanel().colorRank( rank );
+ }
+ }
+ }
+
void customizeCheckBoxMenuItem( final JCheckBoxMenuItem item, final boolean is_selected ) {
if ( item != null ) {
item.setFont( MainFrame.menu_font );
}
}
- Configuration getConfiguration() {
+ public Configuration getConfiguration() {
return _configuration;
}
_circular_type_cbmi.setSelected( false );
}
- void showWhole() {
+ public void showWhole() {
_mainpanel.getControlPanel().showWhole();
}
&& _abbreviate_scientific_names.isSelected() );
options.setColorLabelsSameAsParentBranch( ( _color_labels_same_as_parent_branch != null )
&& _color_labels_same_as_parent_branch.isSelected() );
- options.setShowNodeBoxes( ( _show_node_boxes_cbmi != null ) && _show_node_boxes_cbmi.isSelected() );
+ options.setShowDefaultNodeShapes( ( _show_default_node_shapes_cbmi != null )
+ && _show_default_node_shapes_cbmi.isSelected() );
+ options.setTaxonomyColorizeNodeShapes( ( _taxonomy_colorize_node_shapes_cbmi != null )
+ && _taxonomy_colorize_node_shapes_cbmi.isSelected() );
if ( ( _non_lined_up_cladograms_rbmi != null ) && ( _non_lined_up_cladograms_rbmi.isSelected() ) ) {
options.setCladogramType( CLADOGRAM_TYPE.NON_LINED_UP );
}
default:
throw new RuntimeException( "unknown placement: " + op.getOvPlacement() );
}
- tree_panel.updateOvSettings();
+ if ( tree_panel != null ) {
+ tree_panel.updateOvSettings();
+ }
+ }
+
+ static void cycleNodeFill( final Options op, final TreePanel tree_panel ) {
+ switch ( op.getDefaultNodeFill() ) {
+ case GRADIENT:
+ op.setDefaultNodeFill( NodeFill.SOLID );
+ break;
+ case NONE:
+ op.setDefaultNodeFill( NodeFill.GRADIENT );
+ break;
+ case SOLID:
+ op.setDefaultNodeFill( NodeFill.NONE );
+ break;
+ default:
+ throw new RuntimeException( "unknown fill: " + op.getDefaultNodeFill() );
+ }
+ }
+
+ static void cycleNodeShape( final Options op, final TreePanel tree_panel ) {
+ switch ( op.getDefaultNodeShape() ) {
+ case CIRCLE:
+ op.setDefaultNodeShape( NodeShape.RECTANGLE );
+ break;
+ case RECTANGLE:
+ op.setDefaultNodeShape( NodeShape.CIRCLE );
+ break;
+ default:
+ throw new RuntimeException( "unknown shape: " + op.getDefaultNodeShape() );
+ }
}
static void help( final Map<String, WebLink> weblinks ) {
TextFrame.instantiate( sb.toString() );
}
- static void setOvPlacementColorChooseMenuItem( final JMenuItem mi, final TreePanel tree_panel ) {
- if ( ( tree_panel != null ) && ( tree_panel.getTreeColorSet() != null ) ) {
- mi.setText( "Overview Placement... (current: " + tree_panel.getOptions().getOvPlacement() + ")" );
+ static void setOvPlacementColorChooseMenuItem( final JMenuItem mi, final Options options ) {
+ if ( ( options != null ) && ( options.getOvPlacement() != null ) ) {
+ mi.setText( "Cycle Overview Placement... (current: " + options.getOvPlacement() + ")" );
+ }
+ else {
+ mi.setText( "Cycle Overview Placement..." );
+ }
+ }
+
+ static void setCycleNodeFillMenuItem( final JMenuItem mi, final Options options ) {
+ if ( ( options != null ) && ( options.getDefaultNodeFill() != null ) ) {
+ mi.setText( "Cycle Node Shape Fill Type... (current: "
+ + options.getDefaultNodeFill().toString().toLowerCase() + ")" );
+ }
+ else {
+ mi.setText( "Cycle Node Shape Fill Type..." );
+ }
+ }
+
+ static void setCycleNodeShapeMenuItem( final JMenuItem mi, final Options options ) {
+ if ( ( options != null ) && ( options.getDefaultNodeShape() != null ) ) {
+ mi.setText( "Cycle Node Shape Fill Type... (current: "
+ + options.getDefaultNodeShape().toString().toLowerCase() + ")" );
}
else {
- mi.setText( "Overview Placement..." );
+ mi.setText( "Cycle Node Shape Fill Type..." );
}
}
mi.setText( "Enter Min Confidence Value... (current: " + options.getMinConfidenceValue() + ")" );
}
+ static void setTextNodeSizeMenuItem( final JMenuItem mi, final Options options ) {
+ mi.setText( "Enter Default Node Shape Size... (current: " + options.getDefaultNodeShapeSize() + ")" );
+ }
+
static void updateOptionsMenuDependingOnPhylogenyType( final MainPanel main_panel,
final JCheckBoxMenuItem scale,
final JCheckBoxMenuItem branch_lengths,