static final boolean SPECIAL_CUSTOM = false; //TODO remove me
static final double EXT_NODE_INFO_LENGTH_MAX_RATIO = 0.95;
static final Dimension NODE_PANEL_SPLIT_MINIMUM_SIZE = new Dimension( 100, 50 );
- static final Dimension NODE_PANEL_SIZE = new Dimension( 500, 600 );
+ static final Dimension NODE_PANEL_SIZE = new Dimension( 500, 540 );
static final Dimension NODE_FRAME_SIZE = new Dimension( 520, 640 );
static final String APPLET_PARAM_NAME_FOR_URL_OF_TREE_TO_LOAD = "url_of_tree_to_load";
static final String APPLET_PARAM_NAME_FOR_URL_OF_SPECIES_TREE_TO_LOAD = "url_of_species_tree_to_load";
package org.forester.archaeopteryx;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
private final TreePanel _tree_panel;
private final Map<DefaultMutableTreeNode, TagNumber> _map;
- public NodeEditPanel( final PhylogenyNode phylogeny_node, final TreePanel tree_panel ) {
+ public NodeEditPanel( final PhylogenyNode phylogeny_node,
+ final TreePanel tree_panel,
+ final NodeFrame parent ) {
_map = new HashMap<DefaultMutableTreeNode, TagNumber>();
_my_node = phylogeny_node;
_tree_panel = tree_panel;
getJTree().setToggleClickCount( 1 );
getJTree().setInvokesStopCellEditing( true );
final JScrollPane tree_view = new JScrollPane( getJTree() );
+
+ final JButton close_button = new JButton( "Close" );
+ close_button.setToolTipText( "This only closes this window; to write values back to the phylogeny, press ENTER after editing a field." );
+ close_button.setEnabled( true );
+
+ close_button.addActionListener( new ActionListener() {
+ public void actionPerformed( final ActionEvent e ) {
+ writeAll();
+ parent.close();
+ }
+ } );
+
_pane = new JEditorPane();
_pane.setEditable( true );
- final JScrollPane data_view = new JScrollPane( _pane );
- final JSplitPane split_pane = new JSplitPane( JSplitPane.VERTICAL_SPLIT );
- split_pane.setTopComponent( tree_view );
- // split_pane.setBottomComponent( data_view );
- data_view.setMinimumSize( AptxConstants.NODE_PANEL_SPLIT_MINIMUM_SIZE );
tree_view.setMinimumSize( AptxConstants.NODE_PANEL_SPLIT_MINIMUM_SIZE );
- // split_pane.setDividerLocation( 400 );
- split_pane.setPreferredSize( AptxConstants.NODE_PANEL_SIZE );
- add( split_pane );
+ tree_view.setPreferredSize( AptxConstants.NODE_PANEL_SIZE );
+
+ close_button.setAlignmentX( Component.CENTER_ALIGNMENT );
+ tree_view.setAlignmentX( Component.CENTER_ALIGNMENT );
+
+ final JPanel panel = new JPanel();
+ panel.setLayout( new BoxLayout( panel, BoxLayout.Y_AXIS ) );
+ panel.add( tree_view );
+ panel.add( close_button );
+ add( panel );
+
getJTree().getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION );
getJTree().addKeyListener( new KeyListener() {
getTreePanel().repaint();
}
} );
+
+
}
}
void writeAll() {
+ //TODO this does not do what it should do.
for( int i = 0; i < getJTree().getRowCount(); i++ ) {
final TreePath p = getJTree().getPathForRow( i );
writeBack( ( DefaultMutableTreeNode ) p.getLastPathComponent() );
setSize( AptxConstants.NODE_FRAME_SIZE );
_index = x;
final Container contentPane = getContentPane();
- final NodePanel nodepanel = new NodePanel( n );
- contentPane.add( nodepanel, BorderLayout.CENTER );
+ final NodePanel nodepanel = new NodePanel( n, this );
+ contentPane.add( nodepanel );
addWindowListener( new WindowAdapter() {
@Override
public void windowClosing( final WindowEvent e ) {
- remove(); // to release slot in array
- dispose();
+ close();
}
} );
- setResizable( false );
+ setResizable( true );
nodepanel.setVisible( true );
setVisible( true );
}
+
+ void close() {
+ remove(); // to release slot in array
+ dispose();
+ }
+
NodeFrame( final PhylogenyNode n, final Phylogeny tree, final TreePanel tp, final int x, final String dummy ) {
super( "Editable Node " + ( ForesterUtil.isEmpty( n.getName() ) ? n.getId() : n.getName() ) );
_reepanel = tp;
setSize( AptxConstants.NODE_FRAME_SIZE );
_index = x;
final Container contentPane = getContentPane();
- final NodeEditPanel nodepanel = new NodeEditPanel( n, tp );
+ final NodeEditPanel nodepanel = new NodeEditPanel( n, tp, this );
contentPane.add( nodepanel, BorderLayout.CENTER );
addWindowListener( new WindowAdapter() {
package org.forester.archaeopteryx;
+
import java.awt.Color;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.SortedSet;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
private final JEditorPane _pane;
private final JTree _tree;
- public NodePanel( final PhylogenyNode phylogeny_node ) {
+ public NodePanel( final PhylogenyNode phylogeny_node, final NodeFrame parent ) {
String node_name = "";
if ( !ForesterUtil.isEmpty( phylogeny_node.getName() ) ) {
node_name = phylogeny_node.getName() + " ";
expandPath( SEQUENCE );
expandPath( EVENTS );
final JScrollPane tree_view = new JScrollPane( getJTree() );
+
+ final JButton close_button = new JButton( "Close" );
+ close_button.setEnabled( true );
+
_pane = new JEditorPane();
_pane.setEditable( false );
+
final JScrollPane data_view = new JScrollPane( _pane );
final JSplitPane split_pane = new JSplitPane( JSplitPane.VERTICAL_SPLIT );
split_pane.setTopComponent( tree_view );
+ data_view.add( close_button );
split_pane.setBottomComponent( data_view );
data_view.setMinimumSize( AptxConstants.NODE_PANEL_SPLIT_MINIMUM_SIZE );
tree_view.setMinimumSize( AptxConstants.NODE_PANEL_SPLIT_MINIMUM_SIZE );
- split_pane.setDividerLocation( 400 );
+ split_pane.setDividerLocation( 300 );
split_pane.setPreferredSize( AptxConstants.NODE_PANEL_SIZE );
- add( split_pane );
+
+
+ close_button.addActionListener( new ActionListener() {
+ public void actionPerformed( final ActionEvent e ) {
+ parent.close();
+ }
+ } );
+
+
+ close_button.setAlignmentX( Component.CENTER_ALIGNMENT );
+ split_pane.setAlignmentX( Component.CENTER_ALIGNMENT );
+ final JPanel panel = new JPanel();
+ panel.setLayout( new BoxLayout( panel, BoxLayout.Y_AXIS ) );
+ panel.add( split_pane );
+ panel.add( close_button );
+ add( panel );
}
@Override