X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationPanel.java;h=2226e8bde2541b736d8165cb61205c476be9d185;hb=56b66650a5223dd79423bcebed626a8cb850fcc7;hp=487b83279cc05c959cf0ab2d64af9a0ef84c7a11;hpb=7c69a7becdaa610db196fac609d978b165a801f2;p=jalview.git diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index 487b832..2226e8b 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -42,7 +42,6 @@ public class AnnotationPanel final String COLOUR = "Colour"; final Color HELIX_COLOUR = Color.red.darker(); final Color SHEET_COLOUR = Color.green.darker().darker(); - /** DOCUMENT ME!! */ AlignViewport av; AlignmentPanel ap; @@ -71,10 +70,7 @@ public class AnnotationPanel public AnnotationPanel(AlignmentPanel ap) { - if (System.getProperty("os.name").startsWith("Mac")) - { - MAC = true; - } + MAC = new jalview.util.Platform().isAMac(); ToolTipManager.sharedInstance().registerComponent(this); ToolTipManager.sharedInstance().setInitialDelay(0); @@ -182,10 +178,9 @@ public class AnnotationPanel } else if (evt.getActionCommand().equals(LABEL)) { - String label = JOptionPane.showInputDialog(this, "Enter Label ", - "Enter label", - JOptionPane.QUESTION_MESSAGE); - + String exMesg = collectAnnotVals(anot, av.getColumnSelection(), LABEL); + String label = JOptionPane.showInputDialog(this,"Enter label",exMesg); + if (label == null) { return; @@ -205,10 +200,10 @@ public class AnnotationPanel if (anot[index] == null) { - anot[index] = new Annotation(label, "", ' ', 0); + anot[index] = new Annotation(label, "", ' ', 0); // TODO: verify that null exceptions aren't raised elsewhere. + } else { + anot[index].displayCharacter = label; } - - anot[index].displayCharacter = label; } } else if (evt.getActionCommand().equals(COLOUR)) @@ -289,6 +284,46 @@ public class AnnotationPanel return; } + private String collectAnnotVals(Annotation[] anot, ColumnSelection columnSelection, + String label2) + { + String collatedInput=""; + String last=""; + for (int i = 0; i < columnSelection.size(); i++) + { + int index = columnSelection.columnAt(i); + // always check for current display state - just in case + if(!av.colSel.isVisible(index)) + continue; + String tlabel=null; + if (anot[index] != null) + { + if (label2.equals(HELIX) || label2.equals(SHEET) || label2.equals(LABEL)) + { + tlabel = anot[index].description; + if (tlabel == null) + { + if (label2.equals(HELIX) || label2.equals(SHEET)) + { + tlabel = ""+anot[index].secondaryStructure; + } else { + tlabel = ""+anot[index].displayCharacter; + } + } + } + if (tlabel!=null && !tlabel.equals(last)) + { + if (last.length()>0) + { + collatedInput+=" "; + } + collatedInput+=tlabel; + } + } + } + return collatedInput; + } + /** * DOCUMENT ME! * @@ -548,7 +583,8 @@ public class AnnotationPanel } } imgWidth = (av.endRes - av.startRes + 1) * av.charWidth; - + if (imgWidth<1) + return; if (image == null || imgWidth != image.getWidth() || image.getHeight(this) != getHeight()) { @@ -571,14 +607,14 @@ public class AnnotationPanel drawComponent(gg, av.startRes, av.endRes + 1); g.drawImage(image, 0, 0, this); } - /** - * DOCUMENT ME! + * non-Thread safe repaint * - * @param horizontal DOCUMENT ME! + * @param horizontal repaint with horizontal shift in alignment */ public void fastPaint(int horizontal) { + if ( (horizontal == 0) || gg == null || av.alignment.getAlignmentAnnotation() == null @@ -589,7 +625,6 @@ public class AnnotationPanel repaint(); return; } - gg.copyArea(0, 0, imgWidth, getHeight(), -horizontal * av.charWidth, 0); int sr = av.startRes; @@ -613,7 +648,6 @@ public class AnnotationPanel gg.translate( -transX, 0); fastPaint = true; - repaint(); } @@ -827,10 +861,13 @@ public class AnnotationPanel && (row.annotations[column].displayCharacter.length() > 0)) { - int charOffset = (av.charWidth - - fm.charWidth(row.annotations[column]. - displayCharacter.charAt( - 0))) / 2; + int charOffset = (av.getCentreColumnLabels()) ? ((av.charWidth - + fm.charsWidth(row.annotations[column]. + displayCharacter.toCharArray(),0, + row.annotations[column]. + displayCharacter.length())) / 2) + : (av.charWidth - fm.charWidth(row.annotations[column]. + displayCharacter.charAt(0))) / 2; if (row.annotations[column].colour == null) g.setColor(Color.black);