From 2cbc914afbdfd6ae335cc97869250bad5fee37e5 Mon Sep 17 00:00:00 2001 From: jprocter Date: Fri, 4 Jun 2010 15:45:43 +0000 Subject: [PATCH] correct popup menu, ensure panel doesn't disappear when empty (patches for JAL-554 and JAL-570 and JAL-562) and first patch for annotation label redraw (JAL-563) --- src/jalview/appletgui/AnnotationLabels.java | 47 +++++++++++++++------------ 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/src/jalview/appletgui/AnnotationLabels.java b/src/jalview/appletgui/AnnotationLabels.java index 62ed93c..bc019fe 100755 --- a/src/jalview/appletgui/AnnotationLabels.java +++ b/src/jalview/appletgui/AnnotationLabels.java @@ -57,6 +57,8 @@ public class AnnotationLabels extends Panel implements ActionListener, Tooltip tooltip; + private boolean hasHiddenRows; + public AnnotationLabels(AlignmentPanel ap) { this.ap = ap; @@ -77,9 +79,14 @@ public class AnnotationLabels extends Panel implements ActionListener, repaint(); } + /** + * + * @param y + * @return -2 if no rows are visible at all, -1 if no visible rows were selected + */ int getSelectedRow(int y) { - int row = -1; + int row = -2; AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation(); if (aa == null) @@ -90,11 +97,11 @@ public class AnnotationLabels extends Panel implements ActionListener, int height = 0; for (int i = 0; i < aa.length; i++) { + row = -1; if (!aa[i].visible) { continue; } - height += aa[i].height; if (y < height) { @@ -248,9 +255,16 @@ public class AnnotationLabels extends Panel implements ActionListener, MenuItem item = new MenuItem(ADDNEW); item.addActionListener(this); popup.add(item); - if (aa == null) + if (selectedRow<0) { - + // this never happens at moment: - see comment on JAL-563 + if (hasHiddenRows) + { + item = new MenuItem(SHOWALL); + item.addActionListener(this); + popup.add(item); + } + this.add(popup); popup.show(this, evt.getX(), evt.getY()); return; } @@ -261,9 +275,11 @@ public class AnnotationLabels extends Panel implements ActionListener, item = new MenuItem(HIDE); item.addActionListener(this); popup.add(item); + if (hasHiddenRows) { item = new MenuItem(SHOWALL); item.addActionListener(this); popup.add(item); + } this.add(popup); item = new MenuItem(OUTPUT_TEXT); item.addActionListener(this); @@ -352,35 +368,26 @@ public class AnnotationLabels extends Panel implements ActionListener, g.setColor(Color.black); AlignmentAnnotation[] aa = av.alignment.getAlignmentAnnotation(); - int y = g.getFont().getSize(); - int x = 0; + int y = 0, fy=g.getFont().getSize(); + int x = 0, offset; if (aa != null) { + hasHiddenRows=false; for (int i = 0; i < aa.length; i++) { if (!aa[i].visible) { + hasHiddenRows=true; continue; } x = width - fm.stringWidth(aa[i].label) - 3; - if (aa[i].graph > 0) - { - y += (aa[i].height / 3); - } - - g.drawString(aa[i].label, x, y); + y += aa[i].height; + offset = -(aa[i].height-fy)/2; - if (aa[i].graph > 0) - { - y += (2 * aa[i].height / 3); - } - else - { - y += aa[i].height; - } + g.drawString(aa[i].label, x, y+offset); } } } -- 1.7.10.2