MouseMotionListener, ActionListener
{
static String ADDNEW = "Add New Row";
+ static String EDITNAME="Edit Label/Description";
static String HIDE = "Hide This Row";
static String DELETE = "Delete This Row";
static String SHOWALL = "Show All Hidden Rows";
if (evt.getActionCommand().equals(ADDNEW))
{
- String label = JOptionPane.showInputDialog(this,
- "Label for annotation");
-
- if (label == null)
- {
- label = "";
- }
-
- AlignmentAnnotation newAnnotation = new AlignmentAnnotation(label,
- "New description",
+ AlignmentAnnotation newAnnotation = new AlignmentAnnotation(null,
+ null,
new Annotation[ap.av.alignment.getWidth()]);
+ if(!editLabelDescription(newAnnotation))
+ return;
+
ap.av.alignment.addAnnotation(newAnnotation);
ap.av.alignment.setAnnotationIndex(newAnnotation, 0);
if (aa != null)
dif = aa[aa.length - 1].height;
}
+ else if(evt.getActionCommand().equals(EDITNAME))
+ {
+ editLabelDescription(aa[selectedRow]);
+ repaint();
+ }
else if (evt.getActionCommand().equals(HIDE))
{
aa[selectedRow].visible = false;
ap.repaint();
}
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param e DOCUMENT ME!
+ */
+ boolean editLabelDescription(AlignmentAnnotation annotation)
+ {
+ JLabel idlabel = new JLabel( " Annotation Label ");
+ JLabel desclabel = new JLabel("Annotation Description ");
+ idlabel.setFont(new Font("Courier", Font.PLAIN, 12));
+ desclabel.setFont(new Font("Courier", Font.PLAIN, 12));
+ JTextField id = new JTextField(annotation.label, 40);
+ JTextField description = new JTextField(annotation.description, 40);
+ JPanel panel = new JPanel(new BorderLayout());
+ JPanel panel2 = new JPanel(new BorderLayout());
+ panel2.add(idlabel, BorderLayout.WEST);
+ panel2.add(id, BorderLayout.CENTER);
+ panel.add(panel2, BorderLayout.NORTH);
+ panel2 = new JPanel(new BorderLayout());
+ panel2.add(desclabel, BorderLayout.WEST);
+ panel2.add(description, BorderLayout.CENTER);
+ panel.add(panel2, BorderLayout.SOUTH);
+
+
+ int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ panel, "Edit Annotation Name/Description",
+ JOptionPane.OK_CANCEL_OPTION );
+
+
+ if (reply != JOptionPane.OK_OPTION )
+ {
+ return false;
+ }
+
+
+ annotation.label = id.getText().trim();
+
+ String text = description.getText().trim();
+ if(text.length()==0)
+ text = null;
+ annotation.description = text;
+
+ return true;
+ }
+
/**
* DOCUMENT ME!
*
if(selectedRow>-1)
{
- setToolTipText(ap.av.alignment.
- getAlignmentAnnotation()[selectedRow].description);
+ String desc = ap.av.alignment.
+ getAlignmentAnnotation()[selectedRow].description;
+
+ if (desc != null && !desc.equals("New Description"))
+ setToolTipText(ap.av.alignment.
+ getAlignmentAnnotation()[selectedRow].description);
}
repaint();
JMenuItem item = new JMenuItem(ADDNEW);
item.addActionListener(this);
pop.add(item);
+ item = new JMenuItem(EDITNAME);
+ item.addActionListener(this);
+ pop.add(item);
item = new JMenuItem(HIDE);
item.addActionListener(this);
pop.add(item);
item.addActionListener(this);
pop.add(item);
// annotation object should be typed
- if (aa[selectedRow].label.equals("Consensus"))
+ if (aa[selectedRow]==ap.av.consensus)
{
pop.addSeparator();
final JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem(