seqs = parentPanel.getAlignment().getSequences();
// make up new annotations and add to dataset sequences
attachReferenceAnnotations(seqs, false, false);
testee.configureReferenceAnnotationsMenu(menu, seqs);
assertTrue(menu.isEnabled());
String s = MessageManager.getString("label.add_annotations_for");
String expected = ""
+ s + "
Jmol/secondary structure
PDB/Temp
";
assertEquals(expected, menu.getToolTipText());
}
/**
* Test building the 'add reference annotations' menu for the case where
* several reference annotations are on the dataset and the sequences but not
* on the alignment. The menu item should be enabled, and acquire a tooltip
* which lists the annotation sources (calcIds) and type (labels).
*/
@Test(groups = { "Functional" })
public void testConfigureReferenceAnnotationsMenu_notOnAlignment()
{
JMenuItem menu = new JMenuItem();
List seqs = parentPanel.getAlignment().getSequences();
// make up new annotations and add to dataset sequences and sequences
attachReferenceAnnotations(seqs, true, false);
testee.configureReferenceAnnotationsMenu(menu, seqs);
assertTrue(menu.isEnabled());
String s = MessageManager.getString("label.add_annotations_for");
String expected = ""
+ s + "
Jmol/secondary structure
PDB/Temp
";
assertEquals(expected, menu.getToolTipText());
}
/**
* Generate annotations and add to dataset sequences and (optionally)
* sequences and/or alignment
*
* @param seqs
* @param addToSequence
* @param addToAlignment
*/
private void attachReferenceAnnotations(List seqs,
boolean addToSequence, boolean addToAlignment)
{
// PDB.secondary structure on Sequence0
AlignmentAnnotation annotation = new AlignmentAnnotation(
"secondary structure", "", 0);
annotation.setCalcId("PDB");
seqs.get(0).getDatasetSequence().addAlignmentAnnotation(annotation);
if (addToSequence)
{
seqs.get(0).addAlignmentAnnotation(annotation);
}
if (addToAlignment)
{
this.alignment.addAnnotation(annotation);
}
// PDB.Temp on Sequence1
annotation = new AlignmentAnnotation("Temp", "", 0);
annotation.setCalcId("PDB");
seqs.get(1).getDatasetSequence().addAlignmentAnnotation(annotation);
if (addToSequence)
{
seqs.get(1).addAlignmentAnnotation(annotation);
}
if (addToAlignment)
{
this.alignment.addAnnotation(annotation);
}
// JMOL.secondary structure on Sequence0
annotation = new AlignmentAnnotation("secondary structure", "", 0);
annotation.setCalcId("Jmol");
seqs.get(0).getDatasetSequence().addAlignmentAnnotation(annotation);
if (addToSequence)
{
seqs.get(0).addAlignmentAnnotation(annotation);
}
if (addToAlignment)
{
this.alignment.addAnnotation(annotation);
}
}
/**
* Test building the 'add reference annotations' menu for the case where there
* are two alignment views:
*
* - in one view, reference annotations have been added (are on the
* datasets, sequences and alignment)
* - in the current view, reference annotations are on the dataset and
* sequence, but not the alignment
*
* The menu item should be enabled, and acquire a tooltip which lists the
* annotation sources (calcIds) and type (labels).
*/
@Test(groups = { "Functional" })
public void testConfigureReferenceAnnotationsMenu_twoViews()
{
}
/**
* Test for building menu options including 'show' and 'hide' annotation
* types.
*/
@Test(groups = { "Functional" })
public void testBuildAnnotationTypesMenus()
{
JMenu showMenu = new JMenu();
JMenu hideMenu = new JMenu();
List seqs = parentPanel.getAlignment().getSequences();
// make up new annotations and add to sequences and to the alignment
// PDB.secondary structure on Sequence0
AlignmentAnnotation annotation = new AlignmentAnnotation(
"secondary structure", "", new Annotation[] {});
annotation.setCalcId("PDB");
annotation.visible = true;
seqs.get(0).addAlignmentAnnotation(annotation);
parentPanel.getAlignment().addAnnotation(annotation);
// JMOL.secondary structure on Sequence0 - hidden
annotation = new AlignmentAnnotation("secondary structure", "",
new Annotation[] {});
annotation.setCalcId("JMOL");
annotation.visible = false;
seqs.get(0).addAlignmentAnnotation(annotation);
parentPanel.getAlignment().addAnnotation(annotation);
// Jpred.SSP on Sequence0 - hidden
annotation = new AlignmentAnnotation("SSP", "", new Annotation[] {});
annotation.setCalcId("JPred");
annotation.visible = false;
seqs.get(0).addAlignmentAnnotation(annotation);
parentPanel.getAlignment().addAnnotation(annotation);
// PDB.Temp on Sequence1
annotation = new AlignmentAnnotation("Temp", "", new Annotation[] {});
annotation.setCalcId("PDB");
annotation.visible = true;
seqs.get(1).addAlignmentAnnotation(annotation);
parentPanel.getAlignment().addAnnotation(annotation);
/*
* Expect menu options to show "secondary structure" and "SSP", and to hide
* "secondary structure" and "Temp". Tooltip should be calcId.
*/
testee.buildAnnotationTypesMenus(showMenu, hideMenu, seqs);
assertTrue(showMenu.isEnabled());
assertTrue(hideMenu.isEnabled());
Component[] showOptions = showMenu.getMenuComponents();
Component[] hideOptions = hideMenu.getMenuComponents();
assertEquals(4, showOptions.length); // includes 'All' and separator
assertEquals(4, hideOptions.length);
assertEquals("All", ((JMenuItem) showOptions[0]).getText());
assertTrue(showOptions[1] instanceof JPopupMenu.Separator);
assertEquals(JSeparator.HORIZONTAL,
((JSeparator) showOptions[1]).getOrientation());
assertEquals("secondary structure",
((JMenuItem) showOptions[2]).getText());
assertEquals("JMOL", ((JMenuItem) showOptions[2]).getToolTipText());
assertEquals("SSP", ((JMenuItem) showOptions[3]).getText());
assertEquals("JPred", ((JMenuItem) showOptions[3]).getToolTipText());
assertEquals("All", ((JMenuItem) hideOptions[0]).getText());
assertTrue(hideOptions[1] instanceof JPopupMenu.Separator);
assertEquals(JSeparator.HORIZONTAL,
((JSeparator) hideOptions[1]).getOrientation());
assertEquals("secondary structure",
((JMenuItem) hideOptions[2]).getText());
assertEquals("PDB", ((JMenuItem) hideOptions[2]).getToolTipText());
assertEquals("Temp", ((JMenuItem) hideOptions[3]).getText());
assertEquals("PDB", ((JMenuItem) hideOptions[3]).getToolTipText());
}
/**
* Test for building menu options with only 'hide' annotation types enabled.
*/
@Test(groups = { "Functional" })
public void testBuildAnnotationTypesMenus_showDisabled()
{
JMenu showMenu = new JMenu();
JMenu hideMenu = new JMenu();
List seqs = parentPanel.getAlignment().getSequences();
// make up new annotations and add to sequences and to the alignment
// PDB.secondary structure on Sequence0
AlignmentAnnotation annotation = new AlignmentAnnotation(
"secondary structure", "", new Annotation[] {});
annotation.setCalcId("PDB");
annotation.visible = true;
seqs.get(0).addAlignmentAnnotation(annotation);
parentPanel.getAlignment().addAnnotation(annotation);
// PDB.Temp on Sequence1
annotation = new AlignmentAnnotation("Temp", "", new Annotation[] {});
annotation.setCalcId("PDB");
annotation.visible = true;
seqs.get(1).addAlignmentAnnotation(annotation);
parentPanel.getAlignment().addAnnotation(annotation);
/*
* Expect menu options to hide "secondary structure" and "Temp". Tooltip
* should be calcId. 'Show' menu should be disabled.
*/
testee.buildAnnotationTypesMenus(showMenu, hideMenu, seqs);
assertFalse(showMenu.isEnabled());
assertTrue(hideMenu.isEnabled());
Component[] showOptions = showMenu.getMenuComponents();
Component[] hideOptions = hideMenu.getMenuComponents();
assertEquals(2, showOptions.length); // includes 'All' and separator
assertEquals(4, hideOptions.length);
assertEquals("All", ((JMenuItem) showOptions[0]).getText());
assertTrue(showOptions[1] instanceof JPopupMenu.Separator);
assertEquals(JSeparator.HORIZONTAL,
((JSeparator) showOptions[1]).getOrientation());
assertEquals("All", ((JMenuItem) hideOptions[0]).getText());
assertTrue(hideOptions[1] instanceof JPopupMenu.Separator);
assertEquals(JSeparator.HORIZONTAL,
((JSeparator) hideOptions[1]).getOrientation());
assertEquals("secondary structure",
((JMenuItem) hideOptions[2]).getText());
assertEquals("PDB", ((JMenuItem) hideOptions[2]).getToolTipText());
assertEquals("Temp", ((JMenuItem) hideOptions[3]).getText());
assertEquals("PDB", ((JMenuItem) hideOptions[3]).getToolTipText());
}
/**
* Test for building menu options with only 'show' annotation types enabled.
*/
@Test(groups = { "Functional" })
public void testBuildAnnotationTypesMenus_hideDisabled()
{
JMenu showMenu = new JMenu();
JMenu hideMenu = new JMenu();
List seqs = parentPanel.getAlignment().getSequences();
// make up new annotations and add to sequences and to the alignment
// PDB.secondary structure on Sequence0
AlignmentAnnotation annotation = new AlignmentAnnotation(
"secondary structure", "", new Annotation[] {});
annotation.setCalcId("PDB");
annotation.visible = false;
seqs.get(0).addAlignmentAnnotation(annotation);
parentPanel.getAlignment().addAnnotation(annotation);
// PDB.Temp on Sequence1
annotation = new AlignmentAnnotation("Temp", "", new Annotation[] {});
annotation.setCalcId("PDB2");
annotation.visible = false;
seqs.get(1).addAlignmentAnnotation(annotation);
parentPanel.getAlignment().addAnnotation(annotation);
/*
* Expect menu options to show "secondary structure" and "Temp". Tooltip
* should be calcId. 'hide' menu should be disabled.
*/
testee.buildAnnotationTypesMenus(showMenu, hideMenu, seqs);
assertTrue(showMenu.isEnabled());
assertFalse(hideMenu.isEnabled());
Component[] showOptions = showMenu.getMenuComponents();
Component[] hideOptions = hideMenu.getMenuComponents();
assertEquals(4, showOptions.length); // includes 'All' and separator
assertEquals(2, hideOptions.length);
assertEquals("All", ((JMenuItem) showOptions[0]).getText());
assertTrue(showOptions[1] instanceof JPopupMenu.Separator);
assertEquals(JSeparator.HORIZONTAL,
((JSeparator) showOptions[1]).getOrientation());
assertEquals("secondary structure",
((JMenuItem) showOptions[2]).getText());
assertEquals("PDB", ((JMenuItem) showOptions[2]).getToolTipText());
assertEquals("Temp", ((JMenuItem) showOptions[3]).getText());
assertEquals("PDB2", ((JMenuItem) showOptions[3]).getToolTipText());
assertEquals("All", ((JMenuItem) hideOptions[0]).getText());
assertTrue(hideOptions[1] instanceof JPopupMenu.Separator);
assertEquals(JSeparator.HORIZONTAL,
((JSeparator) hideOptions[1]).getOrientation());
}
}