X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationLabels.java;h=28065c38e54d1165217e66e34c380a6bfb998993;hb=eeed36339774143e579a97cdd8ba0763b020f3fd;hp=d781ebb30a4a997e256d4ef55f9580340dfe9d15;hpb=cc3341f9d1465b0226d184be4216d022a62e5cee;p=jalview.git diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index d781ebb..28065c3 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -36,7 +36,6 @@ 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; @@ -51,23 +50,20 @@ 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.GroupSet; 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 @@ -312,7 +308,6 @@ public class AnnotationLabels extends JPanel ap.av.getAlignment().setAnnotationIndex(annotation, 0); } ap.refresh(true); - return null; }); } @@ -422,33 +417,140 @@ public class AnnotationLabels extends JPanel consclipbrd.addActionListener(this); pop.add(consclipbrd); } - if (aa[selectedRow].graph == AlignmentAnnotation.CONTACT_MAP - && PAEContactMatrix.PAEMATRIX - .equals(aa[selectedRow].getCalcId())) + + addColourOrFilterByOptions(ap,aa[selectedRow],pop); + + if (aa[selectedRow].graph == AlignmentAnnotation.CONTACT_MAP) { - final PAEContactMatrix cm = (PAEContactMatrix) av - .getContactMatrix(aa[selectedRow]); - if (cm!=null && cm.hasTree()) + addContactMatrixOptions(ap,aa[selectedRow],pop); + // Set/adjust threshold for grouping ? + // colour alignment by this [type] + // select/hide columns by this row + + } + } + + pop.show(this, evt.getX(), evt.getY()); + } + + static void addColourOrFilterByOptions(final AlignmentPanel ap, + final AlignmentAnnotation alignmentAnnotation, final JPopupMenu pop) + { + JMenuItem item; + item = new JMenuItem(MessageManager.getString("label.colour_by_annotation")); + item.addActionListener(new ActionListener() + { + + @Override + public void actionPerformed(ActionEvent e) + { + AnnotationColourChooser.displayFor(ap.av, ap,alignmentAnnotation,false); + }; + }); + pop.add(item); + if (alignmentAnnotation.sequenceRef!=null) + { + item = new JMenuItem(MessageManager.getString("label.colour_by_annotation")+" ("+MessageManager.getString("label.per_seq")+")"); + item.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) { - item = new JMenuItem("Show Tree for Matrix"); - item.addActionListener(new ActionListener() - { + AnnotationColourChooser.displayFor(ap.av, ap,alignmentAnnotation,true); + }; + }); + pop.add(item); + } + item = new JMenuItem(MessageManager.getString("action.select_by_annotation")); + item.addActionListener(new ActionListener() + { + + @Override + public void actionPerformed(ActionEvent e) + { + AnnotationColumnChooser.displayFor(ap.av,ap,alignmentAnnotation); + }; + }); + pop.add(item); + } + static void addContactMatrixOptions(final AlignmentPanel ap, + final AlignmentAnnotation alignmentAnnotation, final JPopupMenu pop) + { + + final ContactMatrixI cm = ap.av.getContactMatrix(alignmentAnnotation); + JMenuItem item; + if (cm != null) + { + pop.addSeparator(); - @Override - public void actionPerformed(ActionEvent e) - { + if (cm.hasGroups()) + { + JCheckBoxMenuItem chitem = new JCheckBoxMenuItem(MessageManager.getString("action.show_groups_on_matrix")); + chitem.setToolTipText(MessageManager.getString("action.show_groups_on_matrix_tooltip")); + boolean showGroups = alignmentAnnotation.isShowGroupsForContactMatrix(); + final AlignmentAnnotation sel_row=alignmentAnnotation; + chitem.setState(showGroups); + chitem.addActionListener(new ActionListener() + { - ap.alignFrame.showContactMapTree(aa[selectedRow],cm); + @Override + public void actionPerformed(ActionEvent e) + { + sel_row.setShowGroupsForContactMatrix(chitem.getState()); + // so any annotation colour changes are propagated - though they + // probably won't be unless the annotation row colours are removed + // too! + ap.alignmentChanged(); + } + }); + pop.add(chitem); + } + if (cm.hasTree()) + { + item = new JMenuItem(MessageManager.getString("action.show_tree_for_matrix")); + item.setToolTipText(MessageManager.getString("action.show_tree_for_matrix_tooltip")); + item.addActionListener(new ActionListener() + { - } - }); - pop.addSeparator(); - pop.add(item); - } + @Override + public void actionPerformed(ActionEvent e) + { + ap.alignFrame.showContactMapTree(alignmentAnnotation, cm); + + } + }); + pop.add(item); + } + else + { + item = new JMenuItem(MessageManager.getString("action.cluster_matrix")); + item.setToolTipText(MessageManager.getString("action.cluster_matrix_tooltip")); + item.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + new Thread(new Runnable() + { + @Override + public void run() + { + final long progBar; + ap.alignFrame.setProgressBar(MessageManager.formatMessage("action.clustering_matrix_for",cm.getAnnotDescr(),5f), progBar = System.currentTimeMillis()); + cm.setGroupSet(GroupSet.makeGroups(cm, true)); + cm.randomlyReColourGroups(); + cm.transferGroupColorsTo(alignmentAnnotation); + ap.alignmentChanged(); + ap.alignFrame.showContactMapTree(alignmentAnnotation, cm); + ap.alignFrame.setProgressBar(null, progBar); + } + }).start(); + } + }); + pop.add(item); } } - pop.show(this, evt.getX(), evt.getY()); } /** @@ -1123,7 +1225,8 @@ public class AnnotationLabels extends JPanel } olY = y; // look ahead to next annotation - for (nexAA=i+1; nexAA