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;
AlignmentAnnotation[] aa = ap.av.getAlignment()
.getAlignmentAnnotation();
+ boolean fullRepaint = false;
if (evt.getActionCommand().equals(ADDNEW))
{
AlignmentAnnotation newAnnotation = new AlignmentAnnotation(null,
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))
{
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))
{
aa[i].visible = true;
}
}
+ fullRepaint = true;
}
else if (evt.getActionCommand().equals(OUTPUT_TEXT))
{
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
*/
boolean editLabelDescription(AlignmentAnnotation annotation)
{
+ // TODO i18n
EditNameDialog dialog = new EditNameDialog(annotation.label,
annotation.description, " Annotation Name ",
"Annotation Description ", "Edit Annotation Name/Description",
{
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();
// ann.visible = false;
// }
// }
- refresh();
+ ap.refresh(true);
}
});
pop.add(hideType);
{
ap.av.setIgnoreGapsConsensus(cbmi.getState(), ap);
}
+ ap.alignmentChanged();
}
});
pop.add(cbmi);
}
}
pop.show(this, evt.getX(), evt.getY());
-
}
/**
@Override
public void mouseReleased(MouseEvent evt)
{
+ if (evt.isPopupTrigger())
+ {
+ showPopupMenu(evt);
+ return;
+ }
+
int start = selectedRow;
getSelectedRow(evt.getY() - getScrollOffset());
int end = selectedRow;
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<int[]> 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(FileFormat.Fasta,
seqs, omitHidden, alignmentStartEnd);
.setContents(new StringSelection(output), Desktop.instance);
ArrayList<int[]> hiddenColumns = null;
+
if (av.hasHiddenColumns())
{
- hiddenColumns = new ArrayList<int[]>();
- 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