X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAnnotationLabels.java;h=bc019fee0aafc17512d502687b6a1723ad1e5c44;hb=2cbc914afbdfd6ae335cc97869250bad5fee37e5;hp=62ed93c7e872e245ac56238e55ee77673da9a2d6;hpb=11cce1c1e065d4430400ad414460ae643b51fbfe;p=jalview.git 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); } } }