import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import javax.swing.ButtonGroup;
import javax.swing.WindowConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
+import javax.swing.event.InternalFrameAdapter;
+import javax.swing.event.InternalFrameEvent;
import org.forester.analysis.TaxonomyDataManager;
import org.forester.archaeopteryx.Options.CLADOGRAM_TYPE;
import org.forester.io.parsers.nhx.NHXParser.TAXONOMY_EXTRACTION;
import org.forester.io.parsers.phyloxml.PhyloXmlDataFormatException;
import org.forester.io.parsers.phyloxml.PhyloXmlParser;
-import org.forester.io.parsers.phyloxml.PhyloXmlUtil;
import org.forester.io.parsers.tol.TolParser;
import org.forester.io.parsers.util.ParserUtils;
import org.forester.io.writers.SequenceWriter;
public final class MainFrameApplication extends MainFrame {
- private final static int FRAME_X_SIZE = 800;
- private final static int FRAME_Y_SIZE = 800;
+ private final static int FRAME_X_SIZE = 900;
+ private final static int FRAME_Y_SIZE = 900;
// Filters for the file-open dialog (classes defined in this file)
private static final long serialVersionUID = -799735726778865234L;
private static final boolean PREPROCESS_TREES = false;
// Application-only print menu items
private JMenuItem _collapse_below_threshold;
private JMenuItem _collapse_below_branch_length;
- private JMenuItem _collapse_by_taxonomic_rank;
private ButtonGroup _radio_group_1;
private ButtonGroup _radio_group_2;
// Others:
setSize( MainFrameApplication.FRAME_X_SIZE, MainFrameApplication.FRAME_Y_SIZE );
// The window listener
setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE );
- addWindowListener( new WindowAdapter() {
+ addFrameListener( new FrameAdapter() {
@Override
- public void windowClosing( final WindowEvent e ) {
+ public void FrameClosing () {
+
exit();
}
} );
_contentpane.repaint();
}
+
+
private MainFrameApplication( final Phylogeny[] phys, final Configuration config, final String title ) {
this( phys, config, title, null );
}
-
- private MainFrameApplication( final Phylogeny[] phys,
+
+ private MainFrameApplication(final Phylogeny[] phys,
final Configuration config,
final String title,
- final File current_dir ) {
- super();
+ final File current_dir,
+ final boolean isEmbedded) {
+ super(isEmbedded);
_configuration = config;
if ( _configuration == null ) {
throw new IllegalArgumentException( "configuration is null" );
// } );
// The window listener
setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE );
- addWindowListener( new WindowAdapter() {
+
+ addFrameListener( new FrameAdapter() {
@Override
- public void windowClosing( final WindowEvent e ) {
+ public void FrameClosing( ) {
+ if (MainFrameApplication.this.getParent() == null) {
if ( isUnsavedDataPresent() ) {
- final int r = JOptionPane.showConfirmDialog( null,
- "Exit despite potentially unsaved changes?",
- "Exit?",
+ final int r = JOptionPane.showConfirmDialog( _mainpanel,
+ "Close Archaeopteryx despite potentially unsaved changes?",
+ "Close viewer?",
JOptionPane.YES_NO_OPTION );
if ( r != JOptionPane.YES_OPTION ) {
return;
if ( r != JOptionPane.YES_OPTION ) {
return;
}
- }
+ }}
exit();
- }
- } );
+
+ } });
// The component listener
addComponentListener( new ComponentAdapter() {
// ...and its children
_contentpane.repaint();
System.gc();
+
+ }
+
+ private MainFrameApplication( final Phylogeny[] phys,
+ final Configuration config,
+ final String title,
+ final File current_dir ) {
+ this(phys,config,title,current_dir,false);
}
private MainFrameApplication( final Phylogeny[] phys, final String config_file, final String title ) {
}
collapseBelowThreshold();
}
- else if ( o == _collapse_by_taxonomic_rank ) {
- if ( isSubtreeDisplayed() ) {
- return;
- }
- collapseByTaxonomicRank();
- }
+
else if ( o == _collapse_below_branch_length ) {
if ( isSubtreeDisplayed() ) {
return;
msa = FastaParser.parseMsa( is );
}
else {
- msa = GeneralMsaParser.parse( is );
+ msa = GeneralMsaParser.parseMsa( is );
}
}
catch ( final MsaFormatException e ) {
setArrowCursor();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Multiple sequence alignment format error",
JOptionPane.ERROR_MESSAGE );
}
catch ( final IOException e ) {
setArrowCursor();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Failed to read multiple sequence alignment",
JOptionPane.ERROR_MESSAGE );
}
catch ( final IllegalArgumentException e ) {
setArrowCursor();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Unexpected error during reading of multiple sequence alignment",
JOptionPane.ERROR_MESSAGE );
catch ( final Exception e ) {
setArrowCursor();
e.printStackTrace();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Unexpected error during reading of multiple sequence alignment",
JOptionPane.ERROR_MESSAGE );
return;
}
if ( ( msa == null ) || ( msa.getNumberOfSequences() < 1 ) ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Multiple sequence alignment is empty",
"Illegal Multiple Sequence Alignment",
JOptionPane.ERROR_MESSAGE );
return;
}
if ( msa.getNumberOfSequences() < 4 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Multiple sequence alignment needs to contain at least 3 sequences",
"Illegal multiple sequence alignment",
JOptionPane.ERROR_MESSAGE );
return;
}
if ( msa.getLength() < 2 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Multiple sequence alignment needs to contain at least 2 residues",
"Illegal multiple sequence alignment",
JOptionPane.ERROR_MESSAGE );
}
catch ( final MsaFormatException e ) {
setArrowCursor();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Multiple sequence file format error",
JOptionPane.ERROR_MESSAGE );
}
catch ( final IOException e ) {
setArrowCursor();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Failed to read multiple sequence file",
JOptionPane.ERROR_MESSAGE );
}
catch ( final IllegalArgumentException e ) {
setArrowCursor();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Unexpected error during reading of multiple sequence file",
JOptionPane.ERROR_MESSAGE );
catch ( final Exception e ) {
setArrowCursor();
e.printStackTrace();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Unexpected error during reading of multiple sequence file",
JOptionPane.ERROR_MESSAGE );
return;
}
if ( ( seqs == null ) || ( seqs.size() < 1 ) ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Multiple sequence file is empty",
"Illegal multiple sequence file",
JOptionPane.ERROR_MESSAGE );
return;
}
if ( seqs.size() < 4 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Multiple sequence file needs to contain at least 3 sequences",
"Illegal multiple sequence file",
JOptionPane.ERROR_MESSAGE );
private void addExpressionValuesFromFile() {
if ( ( getCurrentTreePanel() == null ) || ( getCurrentTreePanel().getPhylogeny() == null ) ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Need to load evolutionary tree first",
"Can Not Read Expression Values",
JOptionPane.WARNING_MESSAGE );
}
}
catch ( final IOException e ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getMessage(),
"Could Not Read Expression Value Table",
JOptionPane.ERROR_MESSAGE );
return;
}
if ( t.getNumberOfColumns() < 2 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Table contains " + t.getNumberOfColumns() + " column(s)",
"Problem with Expression Value Table",
JOptionPane.ERROR_MESSAGE );
return;
}
if ( t.getNumberOfRows() < 1 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Table contains zero rows",
"Problem with Expression Value Table",
JOptionPane.ERROR_MESSAGE );
}
final Phylogeny phy = getCurrentTreePanel().getPhylogeny();
if ( t.getNumberOfRows() != phy.getNumberOfExternalNodes() ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Table contains " + t.getNumberOfRows() + " rows, but tree contains "
+ phy.getNumberOfExternalNodes() + " external nodes",
"Warning",
row = t.findRow( node_name );
}
catch ( final IllegalArgumentException e ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getMessage(),
"Error Mapping Node Identifiers to Expression Value Identifiers",
JOptionPane.ERROR_MESSAGE );
d = Double.parseDouble( t.getValueAsString( col, row ) );
}
catch ( final NumberFormatException e ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Could not parse \"" + t.getValueAsString( col, row )
+ "\" into a decimal value",
"Issue with Expression Value Table",
l.add( d );
}
if ( !l.isEmpty() ) {
- if ( node.getNodeData().getProperties() != null ) {
- node.getNodeData().getProperties()
- .removePropertiesWithGivenReferencePrefix( PhyloXmlUtil.VECTOR_PROPERTY_REF );
- }
+
node.getNodeData().setVector( l );
}
}
}
if ( not_found > 0 ) {
JOptionPane
- .showMessageDialog( this,
+ .showMessageDialog( getThisFrame(),
"Could not fine expression values for " + not_found + " external node(s)",
"Warning",
JOptionPane.WARNING_MESSAGE );
private void addSequencesFromFile() {
if ( ( getCurrentTreePanel() == null ) || ( getCurrentTreePanel().getPhylogeny() == null ) ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Need to load evolutionary tree first",
"Can Not Read Sequences",
JOptionPane.WARNING_MESSAGE );
}
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Format does not appear to be Fasta",
"Multiple sequence file format error",
JOptionPane.ERROR_MESSAGE );
}
catch ( final MsaFormatException e ) {
setArrowCursor();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Multiple sequence file format error",
JOptionPane.ERROR_MESSAGE );
}
catch ( final IOException e ) {
setArrowCursor();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Failed to read multiple sequence file",
JOptionPane.ERROR_MESSAGE );
catch ( final Exception e ) {
setArrowCursor();
e.printStackTrace();
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"Unexpected error during reading of multiple sequence file",
JOptionPane.ERROR_MESSAGE );
return;
}
if ( ( seqs == null ) || ( seqs.size() < 1 ) ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Multiple sequence file is empty",
"Empty multiple sequence file",
JOptionPane.ERROR_MESSAGE );
nodes = phy.getNodes( seq_name );
}
if ( nodes.size() > 1 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Sequence name \"" + seq_name + "\" is not unique",
"Sequence name not unique",
JOptionPane.ERROR_MESSAGE );
nodes = phy.getNodes( seq_name_split );
}
if ( nodes.size() > 1 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Split sequence name \"" + seq_name_split
+ "\" is not unique",
"Sequence name not unique",
+ " external nodes now have a molecular sequence attached to them.";
}
if ( ( attached_counter == total_counter ) && ( ext_nodes == ext_nodes_with_seq ) ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Attached all " + total_counter + " sequences to tree nodes.\n" + s,
"All sequences attached",
JOptionPane.INFORMATION_MESSAGE );
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Attached " + attached_counter + " sequences out of a total of "
+ total_counter + " sequences.\n" + s,
attached_counter + " sequences attached",
}
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"No maching tree node for any of the " + total_counter + " sequences",
"Could not attach any sequences",
JOptionPane.ERROR_MESSAGE );
private void closeCurrentPane() {
if ( getMainPanel().getCurrentTreePanel() != null ) {
if ( getMainPanel().getCurrentTreePanel().isEdited() ) {
- final int r = JOptionPane.showConfirmDialog( this,
+ final int r = JOptionPane.showConfirmDialog( getThisFrame(),
"Close tab despite potentially unsaved changes?",
"Close Tab?",
JOptionPane.YES_NO_OPTION );
}
}
- private void collapse( final Phylogeny phy ) {
+ private void collapseBelowThreshold( final Phylogeny phy ) {
final PhylogenyNodeIterator it = phy.iteratorPostorder();
final List<PhylogenyNode> to_be_removed = new ArrayList<PhylogenyNode>();
double min_support = Double.MAX_VALUE;
repaint();
}
if ( to_be_removed.size() > 0 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Collapsed " + to_be_removed.size()
+ " branches with\nconfidence values below "
+ getMinNotCollapseConfidenceValue(),
JOptionPane.INFORMATION_MESSAGE );
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"No branch collapsed,\nminimum confidence value per branch is "
+ min_support,
"No branch collapsed",
}
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"No branch collapsed because no confidence values present",
"No confidence values present",
JOptionPane.INFORMATION_MESSAGE );
}
}
- private void collapseByTaxonomicRank() {
- if ( _mainpanel.getCurrentTreePanel() != null ) {
- final Map<String, Integer> present_ranks = AptxUtil.getRankCounts( _mainpanel.getCurrentTreePanel().getPhylogeny());
- final String[] ranks = AptxUtil.getAllPossibleRanks(present_ranks);
- String rank = ( String ) JOptionPane
- .showInputDialog( this,
- "What rank should the collapsing be based on",
- "Rank Selection",
- JOptionPane.QUESTION_MESSAGE,
- null,
- ranks,
- null );
- if ( !ForesterUtil.isEmpty( rank ) ) {
- if ( rank.indexOf( '(' ) > 0 ) {
- rank = rank.substring( 0, rank.indexOf( '(' ) ).trim();
- }
- _mainpanel.getCurrentTreePanel().collapseByTaxonomicRank( rank );
- }
- }
- }
-
private void collapseBelowBranchLengthThreshold() {
if ( getCurrentTreePanel() != null ) {
final Phylogeny phy = getCurrentTreePanel().getPhylogeny();
if ( ( phy != null ) && !phy.isEmpty() ) {
- final String s = ( String ) JOptionPane.showInputDialog( this,
+ final String s = ( String ) JOptionPane.showInputDialog( getThisFrame(),
"Please enter the minimum branch length value\n",
"Minimal Branch Length Value",
JOptionPane.QUESTION_MESSAGE,
if ( getCurrentTreePanel() != null ) {
final Phylogeny phy = getCurrentTreePanel().getPhylogeny();
if ( ( phy != null ) && !phy.isEmpty() ) {
- final String s = ( String ) JOptionPane.showInputDialog( this,
+ final String s = ( String ) JOptionPane.showInputDialog( getThisFrame(),
"Please enter the minimum confidence value\n",
"Minimal Confidence Value",
JOptionPane.QUESTION_MESSAGE,
}
if ( success && ( m >= 0.0 ) ) {
setMinNotCollapseConfidenceValue( m );
- collapse( phy );
+ collapseBelowThreshold( phy );
}
}
}
repaint();
}
if ( to_be_removed.size() > 0 ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Collapsed " + to_be_removed.size()
+ " branches with\nbranch length values below "
+ getMinNotCollapseBlValue(),
JOptionPane.INFORMATION_MESSAGE );
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"No branch collapsed,\nminimum branch length is " + min_bl,
"No branch collapsed",
JOptionPane.INFORMATION_MESSAGE );
}
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"No branch collapsed because no branch length values present",
"No branch length values present",
JOptionPane.INFORMATION_MESSAGE );
xml_parser = PhyloXmlParser.createPhyloXmlParserXsdValidating();
}
catch ( final Exception e ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
e.getLocalizedMessage(),
"failed to create validating XML parser",
JOptionPane.WARNING_MESSAGE );
new Thread( inferrer ).start();
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"No multiple sequence alignment selected",
"Phylogenetic Inference Not Launched",
JOptionPane.WARNING_MESSAGE );
new Thread( inferrer ).start();
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"No input sequences selected",
"Phylogenetic Inference Not Launched",
JOptionPane.WARNING_MESSAGE );
failed = "\nCould not extract taxonomic data for " + counter_failed + " named external nodes:\n"
+ sb_failed;
}
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Extracted taxonomic data from " + all + counter
+ " named external nodes:\n" + sb.toString() + failed,
"Taxonomic Data Extraction Completed",
: JOptionPane.INFORMATION_MESSAGE );
}
else {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Could not extract any taxonomic data.\nMaybe node names are empty\n"
+ "or not in the forms \"XYZ_CAEEL\", \"XYZ_6239\", or \"XYZ_Caenorhabditis_elegans\"\n"
+ "or nodes already have taxonomic data?\n",
_mainpanel.getControlPanel().showWhole();
_mainpanel.getCurrentTreePanel().setPhylogenyGraphicsType( PHYLOGENY_GRAPHICS_TYPE.RECTANGULAR );
_mainpanel.getOptions().setPhylogenyGraphicsType( PHYLOGENY_GRAPHICS_TYPE.RECTANGULAR );
- if ( getMainPanel().getMainFrame() == null ) {
- // Must be "E" applet version.
- ( ( ArchaeopteryxE ) ( ( MainPanelApplets ) getMainPanel() ).getApplet() )
- .setSelectedTypeInTypeMenu( PHYLOGENY_GRAPHICS_TYPE.RECTANGULAR );
- }
- else {
- getMainPanel().getMainFrame().setSelectedTypeInTypeMenu( PHYLOGENY_GRAPHICS_TYPE.RECTANGULAR );
- }
+
+ getMainPanel().getMainFrame().setSelectedTypeInTypeMenu( PHYLOGENY_GRAPHICS_TYPE.RECTANGULAR );
+
activateSaveAllIfNeeded();
System.gc();
}
getMainPanel() );
_mainpanel.getControlPanel().showWhole();
if ( nhx_or_nexus && one_desc ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"One or more trees contain (a) node(s) with one descendant, "
+ ForesterUtil.LINE_SEPARATOR
+ "possibly indicating illegal parentheses within node names.",
if ( !exception && ( t != null ) && !t.isRooted() ) {
exception = true;
t = null;
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Species tree is not rooted",
"Species tree not loaded",
JOptionPane.ERROR_MESSAGE );
if ( !node.getNodeData().isHasTaxonomy() ) {
exception = true;
t = null;
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Species tree contains external node(s) without taxonomy information",
"Species tree not loaded",
JOptionPane.ERROR_MESSAGE );
exception = true;
t = null;
JOptionPane
- .showMessageDialog( this,
+ .showMessageDialog( getThisFrame(),
"Taxonomy [" + node.getNodeData().getTaxonomy().asSimpleText()
+ "] is not unique in species tree",
"Species tree not loaded",
}
if ( !exception && ( t != null ) ) {
setSpeciesTree( t );
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Species tree successfully loaded",
"Species tree loaded",
JOptionPane.INFORMATION_MESSAGE );
_options_jmenu.add( customizeMenuItemAsLabel( new JMenuItem( DISPLAY_SUBHEADER ), getConfiguration() ) );
_options_jmenu
.add( _ext_node_dependent_cladogram_rbmi = new JRadioButtonMenuItem( MainFrame.NONUNIFORM_CLADOGRAMS_LABEL ) );
- _options_jmenu.add( _uniform_cladograms_rbmi = new JRadioButtonMenuItem( MainFrame.UNIFORM_CLADOGRAMS_LABEL ) );
_options_jmenu.add( _non_lined_up_cladograms_rbmi = new JRadioButtonMenuItem( NON_LINED_UP_CLADOGRAMS_LABEL ) );
_radio_group_1 = new ButtonGroup();
_radio_group_1.add( _ext_node_dependent_cladogram_rbmi );
- _radio_group_1.add( _uniform_cladograms_rbmi );
- _radio_group_1.add( _non_lined_up_cladograms_rbmi );
+ _radio_group_1.add( _non_lined_up_cladograms_rbmi );
_options_jmenu.add( _show_overview_cbmi = new JCheckBoxMenuItem( SHOW_OVERVIEW_LABEL ) );
_options_jmenu.add( _show_scale_cbmi = new JCheckBoxMenuItem( DISPLAY_SCALE_LABEL ) );
_options_jmenu
.add( _show_default_node_shapes_external_cbmi = new JCheckBoxMenuItem( DISPLAY_NODE_BOXES_LABEL_EXT ) );
_options_jmenu
.add( _show_default_node_shapes_for_marked_cbmi = new JCheckBoxMenuItem( MainFrame.DISPLAY_NODE_BOXES_LABEL_MARKED ) );
+
+ _options_jmenu
+ .add( _collapsed_with_average_height_cbmi = new JCheckBoxMenuItem( "Proportional Height of Collapsed Subtrees" ) );
+
+
+ _options_jmenu
+ .add( _show_abbreviated_labels_for_collapsed_nodes_cbmi = new JCheckBoxMenuItem( "Add Abbreviated Labels to Collapsed Subtrees" ) );
+
+
+
_options_jmenu
.add( _line_up_renderable_data_cbmi = new JCheckBoxMenuItem( MainFrame.LINE_UP_RENDERABLE_DATA ) );
+
+
+
if ( getConfiguration().doDisplayOption( Configuration.show_domain_architectures ) ) {
_options_jmenu
.add( _right_line_up_domains_cbmi = new JCheckBoxMenuItem( MainFrame.RIGHT_LINE_UP_DOMAINS ) );
customizeCheckBoxMenuItem( _abbreviate_scientific_names, getOptions().isAbbreviateScientificTaxonNames() );
customizeCheckBoxMenuItem( _search_case_senstive_cbmi, getOptions().isSearchCaseSensitive() );
customizeCheckBoxMenuItem( _show_scale_cbmi, getOptions().isShowScale() );
+ customizeCheckBoxMenuItem( _collapsed_with_average_height_cbmi, getOptions().isCollapsedWithAverageHeigh() );
+ customizeCheckBoxMenuItem( _show_abbreviated_labels_for_collapsed_nodes_cbmi, getOptions().isShowAbbreviatedLabelsForCollapsedNodes() );
+
customizeRadioButtonMenuItem( _non_lined_up_cladograms_rbmi,
getOptions().getCladogramType() == CLADOGRAM_TYPE.NON_LINED_UP );
- customizeRadioButtonMenuItem( _uniform_cladograms_rbmi,
- getOptions().getCladogramType() == CLADOGRAM_TYPE.TOTAL_NODE_SUM_DEP );
customizeRadioButtonMenuItem( _ext_node_dependent_cladogram_rbmi,
- getOptions().getCladogramType() == CLADOGRAM_TYPE.EXT_NODE_SUM_DEP );
+ getOptions().getCladogramType() == CLADOGRAM_TYPE.LINED_UP );
customizeCheckBoxMenuItem( _show_overview_cbmi, getOptions().isShowOverview() );
customizeCheckBoxMenuItem( _label_direction_cbmi,
getOptions().getNodeLabelDirection() == NODE_LABEL_DIRECTION.RADIAL );
_delete_not_selected_nodes_item.setToolTipText( "To delete all not selected external nodes" );
customizeJMenuItem( _delete_not_selected_nodes_item );
_tools_menu.addSeparator();
- _tools_menu.add( _collapse_species_specific_subtrees = new JMenuItem( "Collapse Species-Specific Subtrees" ) );
+ _tools_menu.add( _collapse_species_specific_subtrees = new JMenuItem( "Collapse Single Taxonomy-Subtrees" ) );
customizeJMenuItem( _collapse_species_specific_subtrees );
- _collapse_species_specific_subtrees.setToolTipText( "To (reversibly) collapse species-specific subtrees" );
- _tools_menu.add( _collapse_by_taxonomic_rank = new JMenuItem( "Collapse By Taxonomic Rank" ) );
- customizeJMenuItem( _collapse_by_taxonomic_rank );
- _collapse_by_taxonomic_rank.setToolTipText( "To (reversibly) collapse subtrees by taxonomic rank" );
+ _collapse_species_specific_subtrees.setToolTipText( "To (reversibly) collapse subtrees associated with only one taxonomy (such as species specific subtrees)" );
_tools_menu
.add( _collapse_below_threshold = new JMenuItem( "Collapse Branches with Confidence Below Threshold into Multifurcations" ) );
customizeJMenuItem( _collapse_below_threshold );
@Override
void close() {
if ( isUnsavedDataPresent() ) {
- final int r = JOptionPane.showConfirmDialog( this,
+ final int r = JOptionPane.showConfirmDialog( getThisFrame(),
"Exit despite potentially unsaved changes?",
"Exit?",
JOptionPane.YES_NO_OPTION );
Phylogeny[] phys = null;
final String message = "Please enter a complete URL, for example \"http://purl.org/phylo/treebase/phylows/study/TB2:S15480?format=nexus\"";
final String url_string = JOptionPane
- .showInputDialog( this,
+ .showInputDialog( getThisFrame(),
message,
"Use URL/webservice to obtain a phylogeny",
JOptionPane.QUESTION_MESSAGE );
phys = factory.create( url.openStream(), parser );
}
catch ( final MalformedURLException e ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Malformed URL: " + url + "\n" + e.getLocalizedMessage(),
"Malformed URL",
JOptionPane.ERROR_MESSAGE );
}
catch ( final IOException e ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
"Could not read from " + url + "\n"
+ ForesterUtil.wordWrap( e.getLocalizedMessage(), 80 ),
"Failed to read URL",
JOptionPane.ERROR_MESSAGE );
}
catch ( final Exception e ) {
- JOptionPane.showMessageDialog( this,
+ JOptionPane.showMessageDialog( getThisFrame(),
ForesterUtil.wordWrap( e.getLocalizedMessage(), 80 ),
"Unexpected Exception",
JOptionPane.ERROR_MESSAGE );