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";
}
}
+ else if (evt.getActionCommand().equals(TOGGLE_LABELSCALE))
+ {
+ aa[selectedRow].scaleColLabel = !aa[selectedRow].scaleColLabel;
+ }
ap.annotationPanel.adjustPanelHeight();
ap.annotationScroller.validate();
*/
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);
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
+ .isShowSequenceLogo());
+ 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.isShowSequenceLogo());
+ cprof.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ // TODO: pass on reference
+ // to ap
+ // so the
+ // view
+ // can be
+ // updated.
+ av.setShowSequenceLogo(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());
}