X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationLabels.java;h=bffa89a77912a96d3dd507de08e0fdd39505c848;hb=52fd681e0f239e20df19fd7560d4b999104ba222;hp=7c8850df957c6486d1ce6a965a495e12136dd7f4;hpb=218ff56e061f1329f53b2fa4cb353b0348a87bc0;p=jalview.git diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index 7c8850d..bffa89a 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -44,11 +44,14 @@ public class AnnotationLabels extends JPanel implements MouseListener, boolean active = false; Image image; AlignmentPanel ap; + AlignViewport av; boolean resizing = false; int oldY; int mouseX; int selectedRow = 0; int scrollOffset = 0; + Font font = new Font("Arial", Font.PLAIN, 11); + /** * Creates a new AnnotationLabels object. @@ -58,6 +61,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, public AnnotationLabels(AlignmentPanel ap) { this.ap = ap; + av = ap.av; java.net.URL url = getClass().getResource("/images/idwidth.gif"); Image temp = null; @@ -88,6 +92,11 @@ public class AnnotationLabels extends JPanel implements MouseListener, addMouseMotionListener(this); } + public AnnotationLabels(AlignViewport av) + { + this.av = av; + } + /** * DOCUMENT ME! * @@ -119,10 +128,12 @@ public class AnnotationLabels extends JPanel implements MouseListener, label = ""; } - ap.av.alignment.addAnnotation(new AlignmentAnnotation(label, + AlignmentAnnotation newAnnotation = new AlignmentAnnotation(label, "New description", - new Annotation[ap.av.alignment.getWidth()])); + new Annotation[ap.av.alignment.getWidth()]); + ap.av.alignment.addAnnotation(newAnnotation); + ap.av.alignment.setAnnotationIndex(newAnnotation, 0); dif = aa[aa.length - 1].height; } else if (evt.getActionCommand().equals(HIDE)) @@ -173,15 +184,8 @@ public class AnnotationLabels extends JPanel implements MouseListener, ap.annotationPanel.adjustPanelHeight(); - - Dimension d = ap.annotationScroller.getPreferredSize(); - ap.annotationScroller.setPreferredSize(new Dimension(d.width, - d.height + dif)); - d = ap.annotationSpaceFillerHolder.getPreferredSize(); - ap.annotationSpaceFillerHolder.setPreferredSize(new Dimension(d.width, - d.height + dif)); - - ap.addNotify(); + ap.annotationScroller.validate(); + ap.repaint(); } /** @@ -346,13 +350,20 @@ public class AnnotationLabels extends JPanel implements MouseListener, * * @param g1 DOCUMENT ME! */ - public void paintComponent(Graphics g1) + public void paintComponent(Graphics g) { - Graphics2D g = (Graphics2D) g1; - g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + + int width = getWidth(); + if(width==0) + width = ap.calculateIdWidth().width + 4; + + Graphics2D g2 = (Graphics2D) g; + if(av.antiAlias) + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - drawComponent(g); + drawComponent(g2, width); + } /** @@ -360,8 +371,13 @@ public class AnnotationLabels extends JPanel implements MouseListener, * * @param g DOCUMENT ME! */ - public void drawComponent(Graphics2D g) + public void drawComponent(Graphics g, int width) { + if(av.getFont().getSize()<10) + g.setFont(new Font("Arial", Font.PLAIN, av.getFont().getSize()-1)); + else + g.setFont(font); + FontMetrics fm = g.getFontMetrics(g.getFont()); g.setColor(Color.white); g.fillRect(0, 0, getWidth(), getHeight()); @@ -369,12 +385,13 @@ public class AnnotationLabels extends JPanel implements MouseListener, g.translate(0, scrollOffset); g.setColor(Color.black); - AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation(); - int y = g.getFont().getSize(); + AlignmentAnnotation[] aa = av.alignment.getAlignmentAnnotation(); + int fontHeight = g.getFont().getSize(); + int y = fontHeight; int x = 0; - int width = getWidth(); - if(width==0) - width = ap.calculateIdWidth().width + 4; + int graphExtras = 0; + + if (aa != null) { @@ -387,15 +404,73 @@ public class AnnotationLabels extends JPanel implements MouseListener, x = width - fm.stringWidth(aa[i].label) - 3; - if (aa[i].isGraph) + if (aa[i].graph>0) { + graphExtras = y; + y += (aa[i].height / 3); + + if(aa[i].graphGroup<0) + graphExtras = y + fontHeight; } - g.drawString(aa[i].label, x, y); + if(aa[i].graphGroup>-1) + { + int groupSize = 0; + for (int gg = 0; gg < aa.length; gg++) + { + if (aa[gg].graphGroup == aa[i].graphGroup) + groupSize++; + } + + if(groupSize * (fontHeight+8) < aa[i].height) + graphExtras += (aa[i].height -( groupSize * (fontHeight+8)) )/2; + + for(int gg=0; gg0) { + /* if (aa[i].graphLines != null) + { + for (int gl = 0; gl < aa[i].graphLines.size(); gl++) + { + x = width - fm.stringWidth(aa[i].getGraphLine(gl).label) - 3; + g.drawString(aa[i].getGraphLine(gl).label, x, graphExtras); + g.setColor(aa[i].getGraphLine(gl).colour); + Graphics2D g2 = (Graphics2D) g; + g2.setStroke(new BasicStroke(1, + BasicStroke.CAP_SQUARE, + BasicStroke.JOIN_ROUND, 3f, + new float[] + {5f, 3f}, 0f)); + + graphExtras += 3; + + g.drawLine(x, graphExtras, + x+fm.stringWidth(aa[i].label), + graphExtras); + g2.setStroke(new BasicStroke()); + } + }*/ y += ((2 * aa[i].height) / 3); } else @@ -409,7 +484,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, { if (image != null) { - g.drawImage(image, 2, 0, this); + g.drawImage(image, 2, 0 - scrollOffset, this); } }