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;
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);
}
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;
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))
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!
*
}
}
imgWidth = (av.endRes - av.startRes + 1) * av.charWidth;
-
+ if (imgWidth<1)
+ return;
if (image == null || imgWidth != image.getWidth()
|| image.getHeight(this) != getHeight())
{
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
repaint();
return;
}
-
gg.copyArea(0, 0, imgWidth, getHeight(), -horizontal * av.charWidth, 0);
int sr = av.startRes;
gg.translate( -transX, 0);
fastPaint = true;
-
repaint();
}
int lastSSX;
int iconOffset = 0;
boolean validRes = false;
-
+ boolean validEnd = false;
boolean[] graphGroupDrawn = new boolean[aa.length];
//\u03B2 \u03B1
&& (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);
if (column >= row.annotations.length)
{
column = row.annotations.length - 1;
+ validEnd = false;
+ } else {
+ validEnd = true;
}
// x ++;
case 'E':
g.setColor(SHEET_COLOUR);
- if (row.annotations[endRes] == null
+ if (!validEnd || row.annotations[endRes] == null
|| row.annotations[endRes].secondaryStructure != 'E')
{
g.fillRect(lastSSX, y + 4 + iconOffset,