0c5d7fa910c0384dc9df9a434311b84f2c2aba7b
[jalview.git] / test / jalview / ext / rbvi / chimera / JalviewChimeraView.java
1 package jalview.ext.rbvi.chimera;
2
3 import static org.testng.AssertJUnit.assertTrue;
4
5 import jalview.api.structures.JalviewStructureDisplayI;
6 import jalview.datamodel.SequenceI;
7 import jalview.gui.AlignFrame;
8 import jalview.gui.StructureViewer;
9 import jalview.gui.StructureViewer.ViewerType;
10 import jalview.io.FormatAdapter;
11
12 import org.testng.annotations.AfterClass;
13 import org.testng.annotations.BeforeClass;
14 import org.testng.annotations.Test;
15
16 public class JalviewChimeraView
17 {
18
19   /**
20    * @throws java.lang.Exception
21    */
22   @BeforeClass(alwaysRun = true)
23   public static void setUpBeforeClass() throws Exception
24   {
25     jalview.bin.Jalview.main(new String[]
26     { "-noquestionnaire -nonews -props", "test/src/jalview/ext/rbvi/chimera/testProps.jvprops" });
27   }
28
29   /**
30    * @throws java.lang.Exception
31    */
32   @AfterClass
33   public static void tearDownAfterClass() throws Exception
34   {
35     try
36     {
37     jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
38     } catch (Exception e)
39     {
40       // ignore NullPointerException thrown by JMol
41     }
42
43   }
44
45   @Test(groups ={ "Functional" })
46   public void testSingleSeqViewJMol()
47   {
48     String inFile = "examples/1gaq.txt";
49     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
50             inFile, FormatAdapter.FILE);
51     assertTrue("Didn't read input file " + inFile, af != null);
52     for (SequenceI sq : af.getViewport().getAlignment().getSequences())
53     {
54       SequenceI dsq = sq.getDatasetSequence();
55       while (dsq.getDatasetSequence() != null)
56       {
57         dsq = dsq.getDatasetSequence();
58       }
59       if (dsq.getPDBId() != null && dsq.getPDBId().size() > 0)
60       {
61         for (int q = 0; q < dsq.getPDBId().size(); q++)
62         {
63           final StructureViewer structureViewer = new StructureViewer(af
64                   .getViewport().getStructureSelectionManager());
65           structureViewer.setViewerType(ViewerType.JMOL);
66           JalviewStructureDisplayI jmolViewer = structureViewer
67                   .viewStructures(dsq.getPDBId().elementAt(q),
68                           new SequenceI[]
69                   { sq }, af.getCurrentView().getAlignPanel());
70           /*
71            * Wait for viewer thread to start
72            */
73           try
74           {
75             Thread.sleep(1000);
76           } catch (InterruptedException e)
77           {
78           }
79
80           jmolViewer.closeViewer(true);
81           // todo: break here means only once through this loop?
82           break;
83         }
84         break;
85       }
86     }
87   }
88
89   @Test(groups ={ "Functional" })
90   public void testSingleSeqViewChimera()
91   {
92     String inFile = "examples/1gaq.txt";
93     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
94             inFile, FormatAdapter.FILE);
95     assertTrue("Didn't read input file " + inFile, af != null);
96     for (SequenceI sq : af.getViewport().getAlignment().getSequences())
97     {
98       SequenceI dsq = sq.getDatasetSequence();
99       while (dsq.getDatasetSequence() != null)
100       {
101         dsq = dsq.getDatasetSequence();
102       }
103       if (dsq.getPDBId() != null && dsq.getPDBId().size() > 0)
104       {
105         for (int q = 0; q < dsq.getPDBId().size(); q++)
106         {
107           final StructureViewer structureViewer = new StructureViewer(af
108                   .getViewport().getStructureSelectionManager());
109           structureViewer.setViewerType(ViewerType.CHIMERA);
110           JalviewStructureDisplayI chimeraViewer = structureViewer
111                   .viewStructures(dsq.getPDBId().elementAt(q),
112                           new SequenceI[]
113                           { sq }, af.getCurrentView().getAlignPanel());
114           /*
115            * Wait for viewer thread to start
116            */
117           try
118           {
119             Thread.sleep(1000);
120           } catch (InterruptedException e)
121           {
122           }
123           chimeraViewer.closeViewer(true);
124           // todo: break here means only once through this loop?
125           break;
126         }
127         break;
128       }
129     }
130   }
131 }