X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationPanel.java;h=77d6b512564d3801cdc973b0fe4d1a29e2e90ad5;hb=0611a46a5652c852426da0d024bb43e0756501c7;hp=73be63e3bab8d8a73c81ff4ce254f1c38ab3f561;hpb=7ab5d6b0ba5fec1ea4a4239e79c476d841622485;p=jalview.git diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index 73be63e..77d6b51 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,17 +20,43 @@ */ package jalview.gui; -import java.awt.*; -import java.awt.event.*; -import java.awt.image.*; - -import javax.swing.*; - -import jalview.datamodel.*; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.Annotation; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.SequenceI; import jalview.renderer.AnnotationRenderer; import jalview.renderer.AwtRenderPanelI; import jalview.util.MessageManager; +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Rectangle; +import java.awt.RenderingHints; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.AdjustmentEvent; +import java.awt.event.AdjustmentListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; +import java.awt.image.BufferedImage; + +import javax.swing.JColorChooser; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.Scrollable; +import javax.swing.SwingUtilities; +import javax.swing.ToolTipManager; + /** * AnnotationPanel displays visible portion of annotation rows below unwrapped * alignment @@ -42,20 +68,20 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, MouseListener, MouseWheelListener, MouseMotionListener, ActionListener, AdjustmentListener, Scrollable { - final String HELIX = "Helix"; + String HELIX = MessageManager.getString("label.helix"); - final String SHEET = "Sheet"; + String SHEET = MessageManager.getString("label.sheet"); /** * For RNA secondary structure "stems" aka helices */ - final String STEM = "RNA Helix"; + String STEM = MessageManager.getString("label.rna_helix"); - final String LABEL = "Label"; + String LABEL = MessageManager.getString("label.label"); - final String REMOVE = "Remove Annotation"; + String REMOVE = MessageManager.getString("label.remove_annotation"); - final String COLOUR = "Colour"; + String COLOUR = MessageManager.getString("action.colour"); public final Color HELIX_COLOUR = Color.red.darker(); @@ -113,7 +139,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, public AnnotationPanel(AlignmentPanel ap) { - MAC = new jalview.util.Platform().isAMac(); + MAC = jalview.util.Platform.isAMac(); ToolTipManager.sharedInstance().registerComponent(this); ToolTipManager.sharedInstance().setInitialDelay(0); @@ -215,7 +241,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, public void adjustmentValueChanged(AdjustmentEvent evt) { // update annotation label display - ap.alabels.setScrollOffset(-evt.getValue()); + ap.getAlabels().setScrollOffset(-evt.getValue()); } /** @@ -289,7 +315,9 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, int index = av.getColumnSelection().columnAt(i); if (!av.getColumnSelection().isVisible(index)) + { continue; + } if (anot[index] == null) { @@ -307,14 +335,17 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, else if (evt.getActionCommand().equals(COLOUR)) { Color col = JColorChooser.showDialog(this, - "Choose foreground colour", Color.black); + MessageManager.getString("label.select_foreground_colour"), + Color.black); for (int i = 0; i < av.getColumnSelection().size(); i++) { int index = av.getColumnSelection().columnAt(i); if (!av.getColumnSelection().isVisible(index)) + { continue; + } if (anot[index] == null) { @@ -373,14 +404,17 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, int index = av.getColumnSelection().columnAt(i); if (!av.getColumnSelection().isVisible(index)) + { continue; + } if (anot[index] == null) { anot[index] = new Annotation(label, "", type, 0); } - anot[index].secondaryStructure = type; + anot[index].secondaryStructure = type != 'S' ? type : label + .length() == 0 ? ' ' : label.charAt(0); anot[index].displayCharacter = label; } @@ -406,7 +440,9 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, int index = columnSelection.columnAt(i); // always check for current display state - just in case if (!viscols.isVisible(index)) + { continue; + } String tlabel = null; if (anot[index] != null) { // LML added stem code @@ -530,7 +566,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, return; } - ap.scalePanel.mousePressed(evt); + ap.getScalePanel().mousePressed(evt); } @@ -546,7 +582,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, graphStretch = -1; graphStretchY = -1; mouseDragging = false; - ap.scalePanel.mouseReleased(evt); + ap.getScalePanel().mouseReleased(evt); } /** @@ -558,7 +594,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, @Override public void mouseEntered(MouseEvent evt) { - ap.scalePanel.mouseEntered(evt); + ap.getScalePanel().mouseEntered(evt); } /** @@ -570,7 +606,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, @Override public void mouseExited(MouseEvent evt) { - ap.scalePanel.mouseExited(evt); + ap.getScalePanel().mouseExited(evt); } /** @@ -596,7 +632,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } else { - ap.scalePanel.mouseDragged(evt); + ap.getScalePanel().mouseDragged(evt); } } @@ -673,10 +709,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, && aa[row].annotations[res].description != null && aa[row].annotations[res].description.length() > 0) { - this.setToolTipText("" - + JvSwingUtils - .wrapTooltip(aa[row].annotations[res].description) - + ""); + this.setToolTipText(JvSwingUtils.wrapTooltip(true, + aa[row].annotations[res].description)); } else { @@ -723,10 +757,10 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, public void drawCursor(Graphics graphics, SequenceI seq, int res, int x1, int y1) { - int pady = av.charHeight / 5; + int pady = av.getCharHeight() / 5; int charOffset = 0; graphics.setColor(Color.black); - graphics.fillRect(x1, y1, av.charWidth, av.charHeight); + graphics.fillRect(x1, y1, av.getCharWidth(), av.getCharHeight()); if (av.validCharWidth) { @@ -734,9 +768,9 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, char s = seq.getCharAt(res); - charOffset = (av.charWidth - fm.charWidth(s)) / 2; + charOffset = (av.getCharWidth() - fm.charWidth(s)) / 2; graphics.drawString(String.valueOf(s), charOffset + x1, - (y1 + av.charHeight) - pady); + (y1 + av.getCharHeight()) - pady); } } @@ -765,16 +799,18 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, return; } } - imgWidth = (av.endRes - av.startRes + 1) * av.charWidth; + imgWidth = (av.endRes - av.startRes + 1) * av.getCharWidth(); if (imgWidth < 1) + { return; + } if (image == null || imgWidth != image.getWidth(this) || image.getHeight(this) != getHeight()) { try { - image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(), - BufferedImage.TYPE_INT_RGB); + image = new BufferedImage(imgWidth, ap.getAnnotationPanel() + .getHeight(), BufferedImage.TYPE_INT_RGB); } catch (OutOfMemoryError oom) { try @@ -831,7 +867,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, return; } long stime = System.currentTimeMillis(); - gg.copyArea(0, 0, imgWidth, getHeight(), -horizontal * av.charWidth, 0); + gg.copyArea(0, 0, imgWidth, getHeight(), + -horizontal * av.getCharWidth(), 0); long mtime = System.currentTimeMillis(); int sr = av.startRes; int er = av.endRes + 1; @@ -839,7 +876,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, if (horizontal > 0) // scrollbar pulled right, image to the left { - transX = (er - sr - horizontal) * av.charWidth; + transX = (er - sr - horizontal) * av.getCharWidth(); sr = er - horizontal; } else if (horizontal < 0) @@ -924,7 +961,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } g.setColor(Color.white); - g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight()); + g.fillRect(0, 0, (endRes - startRes) * av.getCharWidth(), getHeight()); g.setFont(av.getFont()); if (fm == null) @@ -977,15 +1014,17 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, @Override public int[] getVisibleVRange() { - if (ap != null && ap.alabels != null) + if (ap != null && ap.getAlabels() != null) { - int sOffset = -ap.alabels.scrollOffset; + int sOffset = -ap.getAlabels().getScrollOffset(); int visHeight = sOffset + ap.annotationSpaceFillerHolder.getHeight(); bounds[0] = sOffset; bounds[1] = visHeight; return bounds; } else + { return null; + } } }