/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.ws.gui;
import jalview.bin.Cache;
import jalview.gui.WsJobParameters;
import jalview.util.MessageManager;
import jalview.ws.jabaws.JalviewJabawsTestUtils;
import jalview.ws.jws2.JabaPreset;
import jalview.ws.jws2.Jws2Discoverer;
import jalview.ws.jws2.jabaws2.Jws2Instance;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import compbio.metadata.Preset;
import compbio.metadata.PresetManager;
public class Jws2ParamView
{
/**
* which services to test
*/
public static List serviceTests = new ArrayList();
/**
* which presets to test for services
*/
public static List presetTests = new ArrayList();
static
{
serviceTests.add("AAConWS".toLowerCase());
}
public static Jws2Discoverer disc = null;
@BeforeClass(alwaysRun = true)
public static void setUpBeforeClass() throws Exception
{
Cache.initLogger();
disc = JalviewJabawsTestUtils.getJabawsDiscoverer();
}
/**
* This test marked Interactive as it appears to need user action to complete
* rather than hang
*/
@Test(groups = { "Interactive" }, enabled = true)
public void testJws2Gui()
{
Iterator presetEnum = presetTests.iterator();
for (Jws2Instance service : disc.getServices())
{
if (serviceTests.size() == 0
|| serviceTests.contains(service.serviceType.toLowerCase()))
{
List prl = null;
Preset pr = null;
if (presetEnum.hasNext())
{
PresetManager prman = service.getPresets();
if (prman != null)
{
pr = prman.getPresetByName(presetEnum.next());
if (pr == null)
{
// just grab the last preset.
prl = prman.getPresets();
}
}
}
else
{
PresetManager prman = service.getPresets();
if (prman != null)
{
prl = prman.getPresets();
}
}
Iterator en = (prl == null) ? null : prl.iterator();
while (en != null && en.hasNext())
{
if (en != null)
{
if (!en.hasNext())
{
en = prl.iterator();
}
pr = en.next();
}
WsJobParameters pgui = new WsJobParameters(service,
new JabaPreset(service, pr));
JFrame jf = new JFrame(MessageManager.formatMessage(
"label.ws_parameters_for",
new String[] { service.getActionText() }));
jf.setSize(700, 800);
JPanel cont = new JPanel(new BorderLayout());
pgui.validate();
cont.setPreferredSize(pgui.getPreferredSize());
cont.add(pgui, BorderLayout.CENTER);
jf.setLayout(new BorderLayout());
jf.add(cont, BorderLayout.CENTER);
jf.validate();
final Thread thr = Thread.currentThread();
/*
* This seems to need a user to manually inspect / test / close the
* GUI for each service tested. Not standalone JUnit.
*/
jf.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
thr.interrupt();
}
});
jf.setVisible(true);
boolean inter = false;
while (!inter)
{
try
{
Thread.sleep(10 * 1000);
} catch (InterruptedException e)
{
inter = true;
}
}
jf.dispose();
}
}
}
}
}