import jalview.io.AppletFormatAdapter;
import jalview.util.MessageManager;
+import java.awt.Component;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import javax.swing.JMenu;
import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+import javax.swing.JSeparator;
import org.junit.Before;
import org.junit.Test;
public void testConfigureReferenceAnnotationsMenu()
{
JMenuItem menu = new JMenuItem();
- List<SequenceI> seqs = new ArrayList<SequenceI>();
-
- seqs = parentPanel.getAlignment().getSequences();
+ List<SequenceI> seqs = parentPanel.getAlignment().getSequences();
// make up new annotations and add to dataset sequences
// PDB.secondary structure on Sequence0
String expected = "<html><table width=350 border=0><tr><td>Add annotations for<br/>JMOL/secondary structure<br/>PBD/Temp</td></tr></table></html>";
assertEquals(expected, menu.getToolTipText());
}
+
+ /**
+ * Test for building menu options including 'show' and 'hide' annotation
+ * types.
+ */
+ @Test
+ public void testBuildAnnotationTypesMenus()
+ {
+ JMenu showMenu = new JMenu();
+ JMenu hideMenu = new JMenu();
+ List<SequenceI> 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", "", 0);
+ 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", "", 0);
+ annotation.setCalcId("JMOL");
+ annotation.visible = false;
+ seqs.get(0).addAlignmentAnnotation(annotation);
+ parentPanel.getAlignment().addAnnotation(annotation);
+
+ // Jpred.SSP on Sequence0 - hidden
+ annotation = new AlignmentAnnotation("SSP", "", 0);
+ annotation.setCalcId("JPred");
+ annotation.visible = false;
+ seqs.get(0).addAlignmentAnnotation(annotation);
+ parentPanel.getAlignment().addAnnotation(annotation);
+
+ // PDB.Temp on Sequence1
+ annotation = new AlignmentAnnotation("Temp", "", 0);
+ 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
+ public void testBuildAnnotationTypesMenus_showDisabled()
+ {
+ JMenu showMenu = new JMenu();
+ JMenu hideMenu = new JMenu();
+ List<SequenceI> 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", "", 0);
+ annotation.setCalcId("PDB");
+ annotation.visible = true;
+ seqs.get(0).addAlignmentAnnotation(annotation);
+ parentPanel.getAlignment().addAnnotation(annotation);
+
+ // PDB.Temp on Sequence1
+ annotation = new AlignmentAnnotation("Temp", "", 0);
+ 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
+ public void testBuildAnnotationTypesMenus_hideDisabled()
+ {
+ JMenu showMenu = new JMenu();
+ JMenu hideMenu = new JMenu();
+ List<SequenceI> 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", "", 0);
+ annotation.setCalcId("PDB");
+ annotation.visible = false;
+ seqs.get(0).addAlignmentAnnotation(annotation);
+ parentPanel.getAlignment().addAnnotation(annotation);
+
+ // PDB.Temp on Sequence1
+ annotation = new AlignmentAnnotation("Temp", "", 0);
+ 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());
+ }
}