setSize( MainFrameApplication.FRAME_X_SIZE, MainFrameApplication.FRAME_Y_SIZE );
// The window listener
setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE );
- addInternalFrameListener( new InternalFrameAdapter() {
+ addFrameListener( new FrameAdapter() {
@Override
- public void internalFrameClosing (final InternalFrameEvent 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 );
- addInternalFrameListener( new InternalFrameAdapter() {
+
+ addFrameListener( new FrameAdapter() {
@Override
- public void internalFrameClosing( final InternalFrameEvent 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 ) {
}
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",
}
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 );
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 );
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,
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",
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 );
@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 );