X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FNodeEditPanel.java;h=21aaea9ca54b747ba402173223c87da30df032d4;hb=693353f5ea85d3e50a77f9b1cd9d87711d23412b;hp=31189dd58521931d8dd556e56c9c08623ded4c9e;hpb=54d8e3a926c3cf3477199c8b85aca478230e223c;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java b/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java index 31189dd..21aaea9 100644 --- a/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java +++ b/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java @@ -25,6 +25,9 @@ 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; @@ -35,11 +38,12 @@ import java.util.HashMap; 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; @@ -143,7 +147,9 @@ class NodeEditPanel extends JPanel { private final TreePanel _tree_panel; private final Map _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(); _my_node = phylogeny_node; _tree_panel = tree_panel; @@ -159,17 +165,32 @@ class NodeEditPanel extends JPanel { 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( Constants.NODE_PANEL_SPLIT_MINIMUM_SIZE ); - tree_view.setMinimumSize( Constants.NODE_PANEL_SPLIT_MINIMUM_SIZE ); - // split_pane.setDividerLocation( 400 ); - split_pane.setPreferredSize( Constants.NODE_PANEL_SIZE ); - add( split_pane ); + tree_view.setMinimumSize( AptxConstants.NODE_PANEL_SPLIT_MINIMUM_SIZE ); + 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() { @@ -210,8 +231,14 @@ class NodeEditPanel extends JPanel { if ( old_path != null ) { writeBack( ( DefaultMutableTreeNode ) old_path.getLastPathComponent() ); } + AptxUtil.lookAtRealBranchLengthsForAptxControlSettings( tree_panel.getPhylogeny(), + tree_panel.getControlPanel() ); + getTreePanel().repaint(); } } ); + + + } private void addBasics( final DefaultMutableTreeNode top, final PhylogenyNode phylogeny_node, final String name ) { @@ -355,12 +382,12 @@ class NodeEditPanel extends JPanel { NodePanel.EVENTS_DUPLICATIONS, String.valueOf( events.getNumberOfDuplications() >= 0 ? events.getNumberOfDuplications() : 0 ), - PHYLOXML_TAG.EVENTS_DUPLICATIONS ); + PHYLOXML_TAG.EVENTS_DUPLICATIONS ); addSubelementEditable( category, NodePanel.EVENTS_SPECIATIONS, String.valueOf( events.getNumberOfSpeciations() >= 0 ? events.getNumberOfSpeciations() : 0 ), - PHYLOXML_TAG.EVENTS_SPECIATIONS ); + PHYLOXML_TAG.EVENTS_SPECIATIONS ); addSubelementEditable( category, NodePanel.EVENTS_GENE_LOSSES, String.valueOf( events.getNumberOfGeneLosses() >= 0 ? events.getNumberOfGeneLosses() : 0 ), @@ -418,7 +445,7 @@ class NodeEditPanel extends JPanel { for( final Uri uri : seq.getUris() ) { if ( uri != null ) { addSubelementEditable( category, NodePanel.SEQ_URI + " [" + uri_counter + "]", uri.getValue() - .toString(), PHYLOXML_TAG.SEQ_URI, uri_counter++ ); + .toString(), PHYLOXML_TAG.SEQ_URI, uri_counter++ ); } } } @@ -545,7 +572,7 @@ class NodeEditPanel extends JPanel { for( final Uri uri : tax.getUris() ) { if ( uri != null ) { addSubelementEditable( category, NodePanel.TAXONOMY_URI + " [" + uri_counter + "]", uri.getValue() - .toString(), PHYLOXML_TAG.TAXONOMY_URI, uri_counter++ ); + .toString(), PHYLOXML_TAG.TAXONOMY_URI, uri_counter++ ); } } } @@ -1103,6 +1130,7 @@ class NodeEditPanel extends JPanel { default: throw new IllegalArgumentException( "unknown: " + tag ); } + getJTree().repaint(); getTreePanel().setEdited( true ); getTreePanel().repaint(); @@ -1113,6 +1141,7 @@ class NodeEditPanel extends JPanel { } 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() );