X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAnnotationLabels.java;h=61b9c31a3d3643f1094395f49a09cf2f3f2f4d4c;hb=2763845dada91cdfe266200cf852146c70392ad7;hp=0e766c4df8faf4676b9cb32f69edd84befdf89ef;hpb=330cd6b44c7c4c84c81dca69e8c8050118fb1bdd;p=jalview.git diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index 0e766c4..61b9c31 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -38,6 +38,8 @@ import jalview.io.*; public class AnnotationLabels extends JPanel implements MouseListener, MouseMotionListener, ActionListener { + static String TOGGLE_LABELSCALE = "Scale Label to Column"; + static String ADDNEW = "Add New Row"; static String EDITNAME = "Edit Label/Description"; @@ -227,6 +229,10 @@ public class AnnotationLabels extends JPanel implements MouseListener, } } + else if (evt.getActionCommand().equals(TOGGLE_LABELSCALE)) + { + aa[selectedRow].scaleColLabel = !aa[selectedRow].scaleColLabel; + } ap.annotationPanel.adjustPanelHeight(); ap.annotationScroller.validate(); @@ -419,12 +425,50 @@ public class AnnotationLabels extends JPanel implements MouseListener, */ public void mouseClicked(MouseEvent evt) { + AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation(); + if (SwingUtilities.isLeftMouseButton(evt)) + { + if (selectedRow < aa.length) + { + if (aa[selectedRow].groupRef!=null) + { + if (evt.getClickCount()>=2) + { + // todo: make the ap scroll to the selection + ap.seqPanel.ap.idPanel.highlightSearchResults(null); + ap.av.setSelectionGroup(//new SequenceGroup( + aa[selectedRow].groupRef); // ); + ap.paintAlignment(false); + } else { + ap.seqPanel.ap.idPanel.highlightSearchResults(aa[selectedRow].groupRef.getSequences(null)); + } + return; + } else + if (aa[selectedRow].sequenceRef!=null){ + Vector sr = new Vector(); + sr.addElement(aa[selectedRow].sequenceRef); + if (evt.getClickCount()==1) + { + ap.seqPanel.ap.idPanel.highlightSearchResults(sr); + } else + if (evt.getClickCount()>=2) + { + ap.seqPanel.ap.idPanel.highlightSearchResults(null); + SequenceGroup sg = new SequenceGroup(); + sg.addSequence(aa[selectedRow].sequenceRef,false); + ap.av.setSelectionGroup(sg); + ap.paintAlignment(false); + PaintRefresher.Refresh(ap, ap.av.getSequenceSetId()); + } + + } + } + } if (!SwingUtilities.isRightMouseButton(evt)) { return; } - AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation(); JPopupMenu pop = new JPopupMenu("Annotations"); JMenuItem item = new JMenuItem(ADDNEW); @@ -456,30 +500,131 @@ public class AnnotationLabels extends JPanel implements MouseListener, item.addActionListener(this); pop.add(item); // TODO: annotation object should be typed for autocalculated/derived property methods - if (selectedRow < aa.length && aa[selectedRow].autoCalculated && aa[selectedRow].label.indexOf("Consensus")>-1) - { - pop.addSeparator(); - // av and sequencegroup need to implement same interface for - final JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem( - "Ignore Gaps In Consensus", ap.av.getIgnoreGapsConsensus()); - final AlignmentAnnotation aaa = aa[selectedRow]; - cbmi.addActionListener(new ActionListener() + if (selectedRow < aa.length) + { + if (!aa[selectedRow].autoCalculated) { + if (aa[selectedRow].graph==AlignmentAnnotation.NO_GRAPH) + { + // display formatting settings for this row. + pop.addSeparator(); + // av and sequencegroup need to implement same interface for + item = new JCheckBoxMenuItem(TOGGLE_LABELSCALE, + aa[selectedRow].scaleColLabel); + item.addActionListener(this); + pop.add(item); + } + } + else if (aa[selectedRow].label.indexOf("Consensus") > -1) { - public void actionPerformed(ActionEvent e) + pop.addSeparator(); + // av and sequencegroup need to implement same interface for + final JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem( + "Ignore Gaps In Consensus", + (aa[selectedRow].groupRef != null) ? aa[selectedRow].groupRef + .getIgnoreGapsConsensus() + : ap.av.getIgnoreGapsConsensus()); + final AlignmentAnnotation aaa = aa[selectedRow]; + cbmi.addActionListener(new ActionListener() { - if (aaa.groupRef!=null) + public void actionPerformed(ActionEvent e) { - aaa.groupRef.setIgnoreGapsConsensus(cbmi.getState()); + if (aaa.groupRef != null) + { + // TODO: pass on reference to ap so the view can be updated. + aaa.groupRef.setIgnoreGapsConsensus(cbmi.getState()); + ap.annotationPanel.paint(ap.annotationPanel.getGraphics()); + } + else + { + ap.av.setIgnoreGapsConsensus(cbmi.getState(), ap); + } } - ap.av.setIgnoreGapsConsensus(cbmi.getState(), ap); + }); + pop.add(cbmi); + // av and sequencegroup need to implement same interface for + if (aaa.groupRef != null) + { + final JCheckBoxMenuItem chist = new JCheckBoxMenuItem( + "Show Group Histogram", aa[selectedRow].groupRef + .isShowConsensusHistogram()); + chist.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + // TODO: pass on reference + // to ap + // so the + // view + // can be + // updated. + aaa.groupRef.setShowConsensusHistogram(chist.getState()); + ap.repaint(); + // ap.annotationPanel.paint(ap.annotationPanel.getGraphics()); + } + }); + pop.add(chist); + final JCheckBoxMenuItem cprof = new JCheckBoxMenuItem( + "Show Group Logo", aa[selectedRow].groupRef + .isIncludeAllConsSymbols()); + cprof.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + // TODO: pass on reference + // to ap + // so the + // view + // can be + // updated. + aaa.groupRef.setIncludeAllConsSymbols(cprof.getState()); + ap.repaint(); + // ap.annotationPanel.paint(ap.annotationPanel.getGraphics()); + } + }); + pop.add(cprof); + } else { + final JCheckBoxMenuItem chist = new JCheckBoxMenuItem( + "Show Histogram", av.isShowConsensusHistogram()); + chist.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + // TODO: pass on reference + // to ap + // so the + // view + // can be + // updated. + av.setShowConsensusHistogram(chist.getState()); + ap.repaint(); + // ap.annotationPanel.paint(ap.annotationPanel.getGraphics()); + } + }); + pop.add(chist); + final JCheckBoxMenuItem cprof = new JCheckBoxMenuItem( + "Show Logo", av.isShowConsensusProfile()); + cprof.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + // TODO: pass on reference + // to ap + // so the + // view + // can be + // updated. + av.setShowConsensusProfile(cprof.getState()); + ap.repaint(); + // ap.annotationPanel.paint(ap.annotationPanel.getGraphics()); + } + }); + pop.add(cprof); } - }); - pop.add(cbmi); - final JMenuItem consclipbrd = new JMenuItem(COPYCONS_SEQ); - consclipbrd.addActionListener(this); - pop.add(consclipbrd); + final JMenuItem consclipbrd = new JMenuItem(COPYCONS_SEQ); + consclipbrd.addActionListener(this); + pop.add(consclipbrd); + } } - pop.show(this, evt.getX(), evt.getY()); }