From: cmzmasek Date: Wed, 29 Jun 2016 23:13:25 +0000 (-0700) Subject: added a close button X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=a9e626aa67ff9cb1649c371f9d705eb04498cc33;p=jalview.git added a close button --- diff --git a/forester/java/src/org/forester/archaeopteryx/AptxConstants.java b/forester/java/src/org/forester/archaeopteryx/AptxConstants.java index 182c7fc..456dea4 100644 --- a/forester/java/src/org/forester/archaeopteryx/AptxConstants.java +++ b/forester/java/src/org/forester/archaeopteryx/AptxConstants.java @@ -61,7 +61,7 @@ public final class AptxConstants { 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"; diff --git a/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java b/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java index 972f0e9..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( 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() { @@ -215,6 +236,8 @@ class NodeEditPanel extends JPanel { getTreePanel().repaint(); } } ); + + } @@ -1118,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() ); diff --git a/forester/java/src/org/forester/archaeopteryx/NodeFrame.java b/forester/java/src/org/forester/archaeopteryx/NodeFrame.java index 4c82bfe..cf65155 100644 --- a/forester/java/src/org/forester/archaeopteryx/NodeFrame.java +++ b/forester/java/src/org/forester/archaeopteryx/NodeFrame.java @@ -49,28 +49,33 @@ final class NodeFrame extends javax.swing.JFrame { 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() { diff --git a/forester/java/src/org/forester/archaeopteryx/NodePanel.java b/forester/java/src/org/forester/archaeopteryx/NodePanel.java index e7427ca..0c1aa5b 100644 --- a/forester/java/src/org/forester/archaeopteryx/NodePanel.java +++ b/forester/java/src/org/forester/archaeopteryx/NodePanel.java @@ -25,12 +25,18 @@ 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; @@ -116,7 +122,7 @@ class NodePanel extends JPanel implements TreeSelectionListener { 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() + " "; @@ -131,17 +137,38 @@ class NodePanel extends JPanel implements TreeSelectionListener { 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