in progress...
[jalview.git] / forester / java / src / org / forester / archaeopteryx / NodePanel.java
index 90c7010..b3df423 100644 (file)
 
 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;
@@ -53,7 +60,7 @@ import org.forester.phylogeny.data.Event;
 import org.forester.phylogeny.data.PhylogenyData;
 import org.forester.phylogeny.data.PhylogenyDataUtil;
 import org.forester.phylogeny.data.Point;
-import org.forester.phylogeny.data.PropertiesMap;
+import org.forester.phylogeny.data.PropertiesList;
 import org.forester.phylogeny.data.Property;
 import org.forester.phylogeny.data.Reference;
 import org.forester.phylogeny.data.Sequence;
@@ -63,59 +70,59 @@ import org.forester.util.ForesterUtil;
 
 class NodePanel extends JPanel implements TreeSelectionListener {
 
-    static final String         BASIC                    = "Basic";
-    static final String         BINARY_CHARACTERS        = "Binary characters";
-    static final String         CONFIDENCE               = "Confidence";
-    static final String         CONFIDENCE_TYPE          = "type";
-    static final String         DATE                     = "Date";
-    static final String         DATE_DESCRIPTION         = "Description";
-    static final String         DATE_MAX                 = "Max";
-    static final String         DATE_MIN                 = "Min";
-    static final String         DATE_UNIT                = "Unit";
-    static final String         DATE_VALUE               = "Value";
-    static final String         DIST_ALT_UNIT            = "Altitude unit";
-    static final String         DIST_ALTITUDE            = "Altitude";
-    static final String         DIST_DESCRIPTION         = "Description";
-    static final String         DIST_GEODETIC_DATUM      = "Geodetic datum";
-    static final String         DIST_LATITUDE            = "Latitude";
-    static final String         DIST_LONGITUDE           = "Longitude";
-    static final String         DISTRIBUTION             = "Distribution";
-    static final String         EVENTS                   = "Events";
-    static final String         EVENTS_DUPLICATIONS      = "Duplications";
-    static final String         EVENTS_GENE_LOSSES       = "Gene losses";
-    static final String         EVENTS_SPECIATIONS       = "Speciations";
-    static final String         LIT_REFERENCE            = "Reference";
-    static final String         LIT_REFERENCE_DESC       = "Description";
-    static final String         LIT_REFERENCE_DOI        = "DOI";
-    static final String         NODE_BRANCH_COLOR        = "Branch color";
-    static final String         NODE_BRANCH_LENGTH       = "Branch length";
-    static final String         NODE_BRANCH_WIDTH        = "Branch width";
-    static final String         NODE_NAME                = "Name";
-    static final String         PROP                     = "Properties";
-    static final String         REFERENCE                = "Reference";
-    static final String         SEQ_ACCESSION            = "Accession";
-    static final String         SEQ_LOCATION             = "Location";
-    static final String         SEQ_MOL_SEQ              = "Mol seq";
-    static final String         SEQ_NAME                 = "Name";
-    static final String         SEQ_SYMBOL               = "Symbol";
-    static final String         SEQ_TYPE                 = "Type";
-    static final String         SEQ_URI                  = "URI";
-    static final String         SEQUENCE                 = "Sequence";
-    static final String         TAXONOMY                 = "Taxonomy";
-    static final String         TAXONOMY_AUTHORITY       = "Authority";
-    static final String         TAXONOMY_CODE            = "Code";
-    static final String         TAXONOMY_COMMON_NAME     = "Common name";
-    static final String         TAXONOMY_IDENTIFIER      = "Identifier";
-    static final String         TAXONOMY_RANK            = "Rank";
-    static final String         TAXONOMY_SCIENTIFIC_NAME = "Scientific name";
-    static final String         TAXONOMY_SYNONYM         = "Synonym";
-    static final String         TAXONOMY_URI             = "URI";
-    private static final String SEQ_GENE_NAME            = "Gene name";
-    private static final long   serialVersionUID         = 5120159904388100771L;
-    private final JEditorPane   _pane;
-    private final JTree         _tree;
+    static final String       BASIC                    = "Basic";
+    static final String       BINARY_CHARACTERS        = "Binary characters";
+    static final String       CONFIDENCE               = "Confidence";
+    static final String       CONFIDENCE_TYPE          = "type";
+    static final String       DATE                     = "Date";
+    static final String       DATE_DESCRIPTION         = "Description";
+    static final String       DATE_MAX                 = "Max";
+    static final String       DATE_MIN                 = "Min";
+    static final String       DATE_UNIT                = "Unit";
+    static final String       DATE_VALUE               = "Value";
+    static final String       DIST_ALT_UNIT            = "Altitude unit";
+    static final String       DIST_ALTITUDE            = "Altitude";
+    static final String       DIST_DESCRIPTION         = "Description";
+    static final String       DIST_GEODETIC_DATUM      = "Geodetic datum";
+    static final String       DIST_LATITUDE            = "Latitude";
+    static final String       DIST_LONGITUDE           = "Longitude";
+    static final String       DISTRIBUTION             = "Distribution";
+    static final String       EVENTS                   = "Events";
+    static final String       EVENTS_DUPLICATIONS      = "Duplications";
+    static final String       EVENTS_GENE_LOSSES       = "Gene losses";
+    static final String       EVENTS_SPECIATIONS       = "Speciations";
+    static final String       LIT_REFERENCE            = "Reference";
+    static final String       LIT_REFERENCE_DESC       = "Description";
+    static final String       LIT_REFERENCE_DOI        = "DOI";
+    static final String       NODE_BRANCH_COLOR        = "Branch color";
+    static final String       NODE_BRANCH_LENGTH       = "Branch length";
+    static final String       NODE_BRANCH_WIDTH        = "Branch width";
+    static final String       NODE_NAME                = "Name";
+    static final String       PROP                     = "Properties";
+    static final String       REFERENCE                = "Reference";
+    static final String       SEQ_ACCESSION            = "Accession";
+    static final String       SEQ_LOCATION             = "Location";
+    static final String       SEQ_MOL_SEQ              = "Mol seq";
+    static final String       SEQ_NAME                 = "Name";
+    static final String       SEQ_SYMBOL               = "Symbol";
+    static final String       SEQ_GENE_NAME            = "Gene name";
+    static final String       SEQ_TYPE                 = "Type";
+    static final String       SEQ_URI                  = "URI";
+    static final String       SEQUENCE                 = "Sequence";
+    static final String       TAXONOMY                 = "Taxonomy";
+    static final String       TAXONOMY_AUTHORITY       = "Authority";
+    static final String       TAXONOMY_CODE            = "Code";
+    static final String       TAXONOMY_COMMON_NAME     = "Common name";
+    static final String       TAXONOMY_IDENTIFIER      = "Identifier";
+    static final String       TAXONOMY_RANK            = "Rank";
+    static final String       TAXONOMY_SCIENTIFIC_NAME = "Scientific name";
+    static final String       TAXONOMY_SYNONYM         = "Synonym";
+    static final String       TAXONOMY_URI             = "URI";
+    private static final long serialVersionUID         = 5120159904388100771L;
+    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() + " ";
@@ -130,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( 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 );
+        data_view.setMinimumSize( AptxConstants.NODE_PANEL_SPLIT_MINIMUM_SIZE );
+        tree_view.setMinimumSize( AptxConstants.NODE_PANEL_SPLIT_MINIMUM_SIZE );
+        split_pane.setDividerLocation( 300 );
+        split_pane.setPreferredSize( AptxConstants.NODE_PANEL_SIZE );
+       
+        
+        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
@@ -207,8 +235,7 @@ class NodePanel extends JPanel implements TreeSelectionListener {
             addSubelement( category,
                            "External children",
                            String.valueOf( phylogeny_node.getAllExternalDescendants().size() ) );
-            final SortedMap<Taxonomy, Integer> distinct_tax = PhylogenyMethods
-                    .obtainDistinctTaxonomyCounts( phylogeny_node );
+            final Map<Taxonomy, Integer> distinct_tax = PhylogenyMethods.obtainDistinctTaxonomyCounts( phylogeny_node );
             if ( distinct_tax != null ) {
                 final int no_tax = PhylogenyMethods.calculateNumberOfExternalNodesWithoutTaxonomy( phylogeny_node );
                 final int tax_count = distinct_tax.size();
@@ -343,13 +370,13 @@ class NodePanel extends JPanel implements TreeSelectionListener {
     }
 
     private static void addProperties( final DefaultMutableTreeNode top,
-                                       final PropertiesMap properties,
+                                       final PropertiesList properties,
                                        final String string ) {
-        final SortedMap<String, Property> properties_map = properties.getProperties();
+        final List<Property> properties_map = properties.getProperties();
         final DefaultMutableTreeNode category = new DefaultMutableTreeNode( "Properties " );
         top.add( category );
-        for( final String key : properties_map.keySet() ) {
-            final Property prop = properties_map.get( key );
+        for( final Property prop : properties_map ) {
+          
             category.add( new DefaultMutableTreeNode( prop.getRef() + "=" + prop.getValue() + " " + prop.getUnit()
                     + " [" + prop.getAppliesTo().toString() + "]" ) );
         }