*/
package jalview.gui;
+import java.util.Locale;
+
import jalview.analysis.AlignSeq;
import jalview.analysis.AlignmentUtils;
import jalview.datamodel.Alignment;
*/
public AnnotationLabels(AlignmentPanel ap)
{
+
this.ap = ap;
av = ap.av;
ToolTipManager.sharedInstance().registerComponent(this);
AlignmentAnnotation[] aa = ap.av.getAlignment()
.getAlignmentAnnotation();
- boolean fullRepaint = false;
- if (evt.getActionCommand().equals(ADDNEW))
+ String action = evt.getActionCommand();
+ if (ADDNEW.equals(action))
{
+ /*
+ * non-returning dialog
+ */
AlignmentAnnotation newAnnotation = new AlignmentAnnotation(null,
null, new Annotation[ap.av.getAlignment().getWidth()]);
-
- if (!editLabelDescription(newAnnotation))
- {
- return;
- }
-
- ap.av.getAlignment().addAnnotation(newAnnotation);
- ap.av.getAlignment().setAnnotationIndex(newAnnotation, 0);
- fullRepaint = true;
+ editLabelDescription(newAnnotation, true);
}
- else if (evt.getActionCommand().equals(EDITNAME))
+ else if (EDITNAME.equals(action))
{
- String name = aa[selectedRow].label;
- editLabelDescription(aa[selectedRow]);
- if (!name.equalsIgnoreCase(aa[selectedRow].label))
- {
- fullRepaint = true;
- }
+ /*
+ * non-returning dialog
+ */
+ editLabelDescription(aa[selectedRow], false);
}
- else if (evt.getActionCommand().equals(HIDE))
+ else if (HIDE.equals(action))
{
aa[selectedRow].visible = false;
}
- else if (evt.getActionCommand().equals(DELETE))
+ else if (DELETE.equals(action))
{
ap.av.getAlignment().deleteAnnotation(aa[selectedRow]);
ap.av.getCalcManager().removeWorkerForAnnotation(aa[selectedRow]);
- fullRepaint = true;
}
- else if (evt.getActionCommand().equals(SHOWALL))
+ else if (SHOWALL.equals(action))
{
for (int i = 0; i < aa.length; i++)
{
aa[i].visible = true;
}
}
- fullRepaint = true;
}
- else if (evt.getActionCommand().equals(OUTPUT_TEXT))
+ else if (OUTPUT_TEXT.equals(action))
{
new AnnotationExporter(ap).exportAnnotation(aa[selectedRow]);
}
- else if (evt.getActionCommand().equals(COPYCONS_SEQ))
+ else if (COPYCONS_SEQ.equals(action))
{
SequenceI cons = null;
if (aa[selectedRow].groupRef != null)
{
copy_annotseqtoclipboard(cons);
}
-
}
- else if (evt.getActionCommand().equals(TOGGLE_LABELSCALE))
+ else if (TOGGLE_LABELSCALE.equals(action))
{
aa[selectedRow].scaleColLabel = !aa[selectedRow].scaleColLabel;
}
- ap.refresh(fullRepaint);
-
+ ap.refresh(true);
}
/**
- * DOCUMENT ME!
+ * Shows a dialog where the annotation name and description may be edited. If
+ * parameter addNew is true, then on confirmation, a new AlignmentAnnotation
+ * is added, else an existing annotation is updated.
*
- * @param e
- * DOCUMENT ME!
+ * @param annotation
+ * @param addNew
*/
- boolean editLabelDescription(AlignmentAnnotation annotation)
+ void editLabelDescription(AlignmentAnnotation annotation, boolean addNew)
{
- // TODO i18n
+ String name = MessageManager.getString("label.annotation_name");
+ String description = MessageManager
+ .getString("label.annotation_description");
+ String title = MessageManager
+ .getString("label.edit_annotation_name_description");
EditNameDialog dialog = new EditNameDialog(annotation.label,
- annotation.description, " Annotation Name ",
- "Annotation Description ", "Edit Annotation Name/Description",
- ap.alignFrame);
+ annotation.description, name, description);
- if (!dialog.accept)
+ dialog.showDialog(ap.alignFrame, title, new Runnable()
{
- return false;
- }
-
- annotation.label = dialog.getName();
-
- String text = dialog.getDescription();
- if (text != null && text.length() == 0)
- {
- text = null;
- }
- annotation.description = text;
-
- return true;
+ @Override
+ public void run()
+ {
+ annotation.label = dialog.getName();
+ String text = dialog.getDescription();
+ if (text != null && text.length() == 0)
+ {
+ text = null;
+ }
+ annotation.description = text;
+ if (addNew)
+ {
+ ap.av.getAlignment().addAnnotation(annotation);
+ ap.av.getAlignment().setAnnotationIndex(annotation, 0);
+ }
+ ap.refresh(true);
+ }
+ });
}
@Override
* @param pop
*/
static void addConsensusMenuOptions(AlignmentPanel ap,
- AlignmentAnnotation ann,
- JPopupMenu pop)
+ AlignmentAnnotation ann, JPopupMenu pop)
{
pop.addSeparator();
if (selectedRow > -1 && ap.av.getAlignment()
.getAlignmentAnnotation().length > selectedRow)
{
- AlignmentAnnotation aa = ap.av.getAlignment()
- .getAlignmentAnnotation()[selectedRow];
+ AlignmentAnnotation[] anns = ap.av.getAlignment()
+ .getAlignmentAnnotation();
+ AlignmentAnnotation aa = anns[selectedRow];
String desc = getTooltip(aa);
this.setToolTipText(desc);
+ String msg = getStatusMessage(aa, anns);
+ ap.alignFrame.setStatus(msg);
+ }
+ }
+
+ /**
+ * Constructs suitable text to show in the status bar when over an annotation
+ * label, containing the associated sequence name (if any), and the annotation
+ * labels (or all labels for a graph group annotation)
+ *
+ * @param aa
+ * @param anns
+ * @return
+ */
+ static String getStatusMessage(AlignmentAnnotation aa,
+ AlignmentAnnotation[] anns)
+ {
+ if (aa == null)
+ {
+ return null;
+ }
+
+ StringBuilder msg = new StringBuilder(32);
+ if (aa.sequenceRef != null)
+ {
+ msg.append(aa.sequenceRef.getName()).append(" : ");
+ }
+
+ if (aa.graphGroup == -1)
+ {
+ msg.append(aa.label);
+ }
+ else if (anns != null)
+ {
+ boolean first = true;
+ for (int i = anns.length - 1; i >= 0; i--)
+ {
+ if (anns[i].graphGroup == aa.graphGroup)
+ {
+ if (!first)
+ {
+ msg.append(", ");
+ }
+ msg.append(anns[i].label);
+ first = false;
+ }
+ }
}
+
+ return msg.toString();
}
/**
// jalview.gui.SeqPanel.mouseMoved(..) that formats sequence feature
// tooltips
String desc = aa.getDescription(true).trim();
- if (!desc.toLowerCase().startsWith(HTML_START_TAG))
+ if (!desc.toLowerCase(Locale.ROOT).startsWith(HTML_START_TAG))
{
tooltip.append(HTML_START_TAG);
desc = desc.replace("<", "<");
}
- else if (desc.toLowerCase().endsWith(HTML_END_TAG))
+ else if (desc.toLowerCase(Locale.ROOT).endsWith(HTML_END_TAG))
{
desc = desc.substring(0, desc.length() - HTML_END_TAG.length());
}
protected void showOrHideAdjuster(MouseEvent evt)
{
boolean was = resizePanel;
- resizePanel = evt.getY() < HEIGHT_ADJUSTER_HEIGHT && evt.getX() < HEIGHT_ADJUSTER_WIDTH;
+ resizePanel = evt.getY() < HEIGHT_ADJUSTER_HEIGHT
+ && evt.getX() < HEIGHT_ADJUSTER_WIDTH;
if (resizePanel != was)
{
- setCursor(Cursor.getPredefinedCursor(
- resizePanel ? Cursor.S_RESIZE_CURSOR
+ setCursor(Cursor
+ .getPredefinedCursor(resizePanel ? Cursor.S_RESIZE_CURSOR
: Cursor.DEFAULT_CURSOR));
repaint();
}
int width = getWidth();
if (width == 0)
{
- width = ap.calculateIdWidth().width + 4;
+ width = ap.calculateIdWidth().width;
}
Graphics2D g2 = (Graphics2D) g;