JAL-4134 display tree for columns - selecting an internal node selects column in...
[jalview.git] / src / jalview / gui / AnnotationLabels.java
index 804ab7b..c01a6f3 100755 (executable)
@@ -36,6 +36,7 @@ import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
 import java.awt.geom.AffineTransform;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
@@ -50,18 +51,23 @@ import javax.swing.ToolTipManager;
 
 import jalview.analysis.AlignSeq;
 import jalview.analysis.AlignmentUtils;
+import jalview.bin.Console;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.Annotation;
+import jalview.datamodel.ContactMatrixI;
 import jalview.datamodel.HiddenColumns;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
 import jalview.io.FileFormat;
 import jalview.io.FormatAdapter;
+import jalview.io.NewickFile;
 import jalview.util.Comparison;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
+import jalview.ws.datamodel.alphafold.PAEContactMatrix;
 
 /**
  * The panel that holds the labels for alignment annotations, providing
@@ -416,6 +422,31 @@ public class AnnotationLabels extends JPanel
         consclipbrd.addActionListener(this);
         pop.add(consclipbrd);
       }
+       if (aa[selectedRow].graph == AlignmentAnnotation.CONTACT_MAP
+              && PAEContactMatrix.PAEMATRIX
+                      .equals(aa[selectedRow].getCalcId()))
+      {
+        final PAEContactMatrix cm = (PAEContactMatrix) av
+                .getContactMatrix(aa[selectedRow]);
+        if (cm.getNewickString()!=null && cm.getNewickString().length()>0)
+        {
+          item = new JMenuItem("Show Matrix");
+          item.addActionListener(new ActionListener()
+          {
+
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+
+                ap.alignFrame.showContactMapTree(aa[selectedRow],cm);
+
+            }
+          });
+          pop.addSeparator();
+          pop.add(item);
+        }
+
+      }
     }
     pop.show(this, evt.getX(), evt.getY());
   }