X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationLabels.java;h=783c9050df294fc8e704c9aea61500f62ad777f2;hb=9961a60fb0e1ab87e60dc301485b00d058abf9e5;hp=e297335d55dcc3ff8e8e544d77daad9b6366eeeb;hpb=a1146b0c16d1bf25d0174031a4812e4ea6021c22;p=jalview.git diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index e297335..783c905 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -40,6 +40,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, 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"; @@ -151,23 +152,23 @@ public class AnnotationLabels extends JPanel implements MouseListener, 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; @@ -200,7 +201,8 @@ public class AnnotationLabels extends JPanel implements MouseListener, new AnnotationExporter().exportAnnotations( ap, new AlignmentAnnotation[] - {aa[selectedRow]} + {aa[selectedRow]}, + null ); } else if (evt.getActionCommand().equals(COPYCONS_SEQ)) @@ -216,6 +218,35 @@ public class AnnotationLabels extends JPanel implements MouseListener, ap.repaint(); } + + /** + * DOCUMENT ME! + * + * @param e DOCUMENT ME! + */ + boolean editLabelDescription(AlignmentAnnotation annotation) + { + EditNameDialog dialog = new EditNameDialog(annotation.label, + annotation.description, + " Annotation Name ", + "Annotation Description ", + "Edit Annotation Name/Description"); + + if (!dialog.accept) + { + return false; + } + + annotation.label = dialog.getName(); + + String text = dialog.getDescription(); + if(text.length()==0) + text = null; + annotation.description = text; + + return true; + } + /** * DOCUMENT ME! * @@ -325,12 +356,17 @@ public class AnnotationLabels extends JPanel implements MouseListener, { resizePanel = evt.getY()<10; - getSelectedRow(evt.getY()); + getSelectedRow(evt.getY() - scrollOffset); - if(selectedRow>-1) + if(selectedRow>-1 + && ap.av.alignment.getAlignmentAnnotation().length>selectedRow) { - 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(); @@ -364,6 +400,9 @@ public class AnnotationLabels extends JPanel implements MouseListener, 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); @@ -377,7 +416,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, 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(