X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationLabels.java;h=e16867a4c0d9389ee6614cc6ec625068a1a235dd;hb=cfa90577b4ddcb2e163a9bac0b2786d45de57933;hp=33b7131a39d0d03c3d37f7ff03af90e1872c2fcc;hpb=8362048fd2b42db205e6c9865e585e6d8d8f503c;p=jalview.git diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index 33b7131..e16867a 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -27,6 +27,7 @@ import jalview.datamodel.Annotation; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; +import jalview.io.FileFormat; import jalview.io.FormatAdapter; import jalview.util.MessageManager; @@ -51,7 +52,6 @@ import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.List; import java.util.regex.Pattern; import javax.swing.JCheckBoxMenuItem; @@ -219,6 +219,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, AlignmentAnnotation[] aa = ap.av.getAlignment() .getAlignmentAnnotation(); + boolean fullRepaint = false; if (evt.getActionCommand().equals(ADDNEW)) { AlignmentAnnotation newAnnotation = new AlignmentAnnotation(null, @@ -231,11 +232,16 @@ public class AnnotationLabels extends JPanel implements MouseListener, ap.av.getAlignment().addAnnotation(newAnnotation); ap.av.getAlignment().setAnnotationIndex(newAnnotation, 0); + fullRepaint = true; } else if (evt.getActionCommand().equals(EDITNAME)) { + String name = aa[selectedRow].label; editLabelDescription(aa[selectedRow]); - repaint(); + if (!name.equalsIgnoreCase(aa[selectedRow].label)) + { + fullRepaint = true; + } } else if (evt.getActionCommand().equals(HIDE)) { @@ -244,6 +250,8 @@ public class AnnotationLabels extends JPanel implements MouseListener, else if (evt.getActionCommand().equals(DELETE)) { ap.av.getAlignment().deleteAnnotation(aa[selectedRow]); + ap.av.getCalcManager().removeWorkerForAnnotation(aa[selectedRow]); + fullRepaint = true; } else if (evt.getActionCommand().equals(SHOWALL)) { @@ -254,6 +262,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, aa[i].visible = true; } } + fullRepaint = true; } else if (evt.getActionCommand().equals(OUTPUT_TEXT)) { @@ -282,21 +291,11 @@ public class AnnotationLabels extends JPanel implements MouseListener, aa[selectedRow].scaleColLabel = !aa[selectedRow].scaleColLabel; } - refresh(); + ap.refresh(fullRepaint); } /** - * Redraw sensibly. - */ - protected void refresh() - { - ap.validateAnnotationDimensions(false); - ap.addNotify(); - ap.repaint(); - } - - /** * DOCUMENT ME! * * @param e @@ -304,6 +303,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, */ boolean editLabelDescription(AlignmentAnnotation annotation) { + // TODO i18n EditNameDialog dialog = new EditNameDialog(annotation.label, annotation.description, " Annotation Name ", "Annotation Description ", "Edit Annotation Name/Description", @@ -331,12 +331,20 @@ public class AnnotationLabels extends JPanel implements MouseListener, { getSelectedRow(evt.getY() - getScrollOffset()); oldY = evt.getY(); - if (!evt.isPopupTrigger()) + if (evt.isPopupTrigger()) { - return; + showPopupMenu(evt); } + } + + /** + * Build and show the Pop-up menu at the right-click mouse position + * + * @param evt + */ + void showPopupMenu(MouseEvent evt) + { evt.consume(); - // handle popup menu event final AlignmentAnnotation[] aa = ap.av.getAlignment() .getAlignmentAnnotation(); @@ -389,7 +397,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, // ann.visible = false; // } // } - refresh(); + ap.refresh(true); } }); pop.add(hideType); @@ -451,6 +459,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, { ap.av.setIgnoreGapsConsensus(cbmi.getState(), ap); } + ap.alignmentChanged(); } }); pop.add(cbmi); @@ -594,7 +603,6 @@ public class AnnotationLabels extends JPanel implements MouseListener, } } pop.show(this, evt.getX(), evt.getY()); - } /** @@ -606,6 +614,12 @@ public class AnnotationLabels extends JPanel implements MouseListener, @Override public void mouseReleased(MouseEvent evt) { + if (evt.isPopupTrigger()) + { + showPopupMenu(evt); + return; + } + int start = selectedRow; getSelectedRow(evt.getY() - getScrollOffset()); int end = selectedRow; @@ -899,9 +913,9 @@ public class AnnotationLabels extends JPanel implements MouseListener, sg.addSequence(aa[selectedRow].sequenceRef, false); } ap.av.setSelectionGroup(sg); - ap.av.sendSelection(); ap.paintAlignment(false); PaintRefresher.Refresh(ap, ap.av.getSequenceSetId()); + ap.av.sendSelection(); } } @@ -932,31 +946,30 @@ public class AnnotationLabels extends JPanel implements MouseListener, Alignment ds = new Alignment(dseqs); if (av.hasHiddenColumns()) { - omitHidden = av.getColumnSelection().getVisibleSequenceStrings(0, + omitHidden = av.getAlignment().getHiddenColumns() + .getVisibleSequenceStrings(0, sq.getLength(), seqs); } int[] alignmentStartEnd = new int[] { 0, ds.getWidth() - 1 }; - List hiddenCols = av.getColumnSelection().getHiddenColumns(); - if (hiddenCols != null) + if (av.hasHiddenColumns()) { - alignmentStartEnd = av.getAlignment().getVisibleStartAndEndIndex( - hiddenCols); + alignmentStartEnd = av.getAlignment().getHiddenColumns() + .getVisibleStartAndEndIndex(av.getAlignment().getWidth()); } - String output = new FormatAdapter().formatSequences("Fasta", seqs, - omitHidden, alignmentStartEnd); + + String output = new FormatAdapter().formatSequences(FileFormat.Fasta, + seqs, omitHidden, alignmentStartEnd); Toolkit.getDefaultToolkit().getSystemClipboard() .setContents(new StringSelection(output), Desktop.instance); ArrayList hiddenColumns = null; + if (av.hasHiddenColumns()) { - hiddenColumns = new ArrayList(); - for (int[] region : av.getColumnSelection().getHiddenColumns()) - { - hiddenColumns.add(new int[] { region[0], region[1] }); - } + hiddenColumns = av.getAlignment().getHiddenColumns() + .getHiddenColumnsCopy(); } Desktop.jalviewClipboard = new Object[] { seqs, ds, // what is the dataset