/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
*
* This file is part of Jalview.
*
* 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 <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.ws.jws2;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
import jalview.gui.JvSwingUtils;
+import jalview.util.MessageManager;
import jalview.ws.jws2.dm.AAConSettings;
import jalview.ws.jws2.jabaws2.Jws2Instance;
import jalview.ws.params.WsParamSetI;
+import jalview.ws.uimodel.AlignAnalysisUIText;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
*/
public class SequenceAnnotationWSClient extends Jws2Client
{
-
- public static final String AAConCalcId = "jabaws2.AACon";
-
/**
* initialise a client so its attachWSMenuEntry method can be called.
*/
initSequenceAnnotationWSClient(sh, alignFrame, preset, editParams);
}
+ // dan think. Do I need to change this method to run RNAalifold through the GUI
+
public void initSequenceAnnotationWSClient(final Jws2Instance sh,
AlignFrame alignFrame, WsParamSetI preset, boolean editParams)
{
- if (alignFrame.getViewport().getAlignment().isNucleotide())
- {
- JOptionPane.showMessageDialog(Desktop.desktop, sh.serviceType
- + " can only be used\nfor amino acid alignments.",
- "Wrong type of sequences!", JOptionPane.WARNING_MESSAGE);
- return;
-
- }
- if (sh.action.toLowerCase().contains("conservation"))
+ // dan changed! dan test. comment out if conditional
+// if (alignFrame.getViewport().getAlignment().isNucleotide())
+// {
+// JOptionPane.showMessageDialog(Desktop.desktop, sh.serviceType
+// + " can only be used\nfor amino acid alignments.",
+// "Wrong type of sequences!", JOptionPane.WARNING_MESSAGE);
+// return;
+//
+// }
+ AlignAnalysisUIText aaui = sh.getAlignAnalysisUI();
+ if (aaui!=null)
{
+ Class clientClass = aaui.getClient();
+
// Build an AACon style client - take alignment, return annotation for
// columns
List<AlignCalcWorkerI> clnts = alignFrame.getViewport()
.getCalcManager()
- .getRegisteredWorkersOfClass(AAConClient.class);
+ .getRegisteredWorkersOfClass(clientClass);
+ JabawsAlignCalcWorker worker;
if (clnts == null || clnts.size() == 0)
{
if (!processParams(sh, editParams))
{
return;
}
- AAConClient worker;
+ try {
+ worker = (JabawsAlignCalcWorker) (clientClass.getConstructor(
+ new Class[] { Jws2Instance.class,
+ AlignFrame.class, WsParamSetI.class,
+ List.class }).newInstance(new Object[] { sh, alignFrame, this.preset, paramset}));
+ } catch (Exception x)
+ {
+ x.printStackTrace();
+ throw new Error("Implementation error",x);
+ }
alignFrame
.getViewport()
.getCalcManager()
.registerWorker(
- worker = new AAConClient(sh, alignFrame,
- this.preset, paramset));
+ worker);
alignFrame.getViewport().getCalcManager().startWorker(worker);
}
else
{
- AAConClient worker = (AAConClient) clnts.get(0);
+ worker = (JabawsAlignCalcWorker) clnts.get(0);
if (editParams)
{
paramset = worker.getArguments();
// invalid parameters)
alignFrame.getViewport().getCalcManager().workerMayRun(worker);
worker.updateParameters(this.preset, paramset);
-
}
}
if (sh.action.toLowerCase().contains("disorder"))
.startWorker(
new AADisorderClient(sh, alignFrame, preset, paramset));
}
-
}
public SequenceAnnotationWSClient(AAConSettings fave,
public void attachWSMenuEntry(JMenu wsmenu, final Jws2Instance service,
final AlignFrame alignFrame)
{
- if (service.serviceType.equals(compbio.ws.client.Services.AAConWS
- .toString()))
- {
- registerAAConWSInstance(wsmenu, service, alignFrame);
+ if (registerAAConWSInstance(wsmenu, service, alignFrame)) {
+ // Alignment dependent analysis calculation WS gui
return;
}
boolean hasparams = service.hasParameters();
String calcName = service.serviceType.substring(0,
service.serviceType.length() - 2);
- JMenuItem annotservice = new JMenuItem(calcName + " Defaults");
+ JMenuItem annotservice = new JMenuItem(MessageManager.formatMessage("label.calcname_with_default_settings", new String[]{calcName}));
annotservice.addActionListener(new ActionListener()
{
{
// only add these menu options if the service has user-modifiable
// arguments
- annotservice = new JMenuItem("Edit settings and run ...");
+ annotservice = new JMenuItem(MessageManager.getString("label.edit_settings_and_run"));
annotservice
- .setToolTipText("View and change parameters before running calculation");
+ .setToolTipText(MessageManager.getString("label.view_and_change_parameters_before_running_calculation"));
annotservice.addActionListener(new ActionListener()
{
}
else
{
- annotservice = new JMenuItem("View documentation");
+ annotservice = new JMenuItem(MessageManager.getString("label.view_documentation"));
if (service.docUrl != null)
{
annotservice.addActionListener(new ActionListener()
}
}
- private final String AAconToggle = "AACon Calculations",
- AAconToggleTooltip = "When checked, AACon calculations are updated automatically.",
- AAeditSettings = "Change AACon Settings...",
- AAeditSettingsTooltip = "Modify settings for AACon calculations.";
-
- private void registerAAConWSInstance(final JMenu wsmenu,
+
+ private boolean registerAAConWSInstance(final JMenu wsmenu,
final Jws2Instance service, final AlignFrame alignFrame)
{
- // register this in the AACon settings set
+ final AlignAnalysisUIText aaui = service.getAlignAnalysisUI(); // null ; // AlignAnalysisUIText.aaConGUI.get(service.serviceType.toString());
+ if (aaui==null)
+ {
+ // not an instantaneous calculation GUI type service
+ return false;
+ }
+ // create the instaneous calculation GUI bits and update state if existing GUI elements already present
+
JCheckBoxMenuItem _aaConEnabled = null;
for (int i = 0; i < wsmenu.getItemCount(); i++)
{
JMenuItem item = wsmenu.getItem(i);
if (item instanceof JCheckBoxMenuItem
- && item.getText().equals(AAconToggle))
+ && item.getText().equals(aaui.getAAconToggle()))
{
_aaConEnabled = (JCheckBoxMenuItem) item;
}
{
List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
.getCalcManager()
- .getRegisteredWorkersOfClass(AAConClient.class);
+ .getRegisteredWorkersOfClass(aaui.getClient());
if (aaconClient != null && aaconClient.size() > 0)
{
- AAConClient worker = (AAConClient) aaconClient.get(0);
+ JabawsAlignCalcWorker worker = (JabawsAlignCalcWorker) aaconClient.get(0);
if (!worker.service.hosturl.equals(service.hosturl))
{
// javax.swing.SwingUtilities.invokeLater(new Runnable()
// @Override
// public void run()
{
- removeCurrentAAConWorkerFor(alignFrame);
- buildCurrentAAConWorkerFor(alignFrame, service);
+ removeCurrentAAConWorkerFor(aaui, alignFrame);
+ buildCurrentAAConWorkerFor(aaui, alignFrame, service);
}
}// );
}
if (_aaConEnabled == null)
{
final JCheckBoxMenuItem aaConEnabled = new JCheckBoxMenuItem(
- AAconToggle);
- wsmenu.addMenuListener(new MenuListener()
- {
+ aaui.getAAconToggle());
+ aaConEnabled.setToolTipText("<html><p>"
+ + JvSwingUtils.wrapTooltip(aaui.getAAconToggleTooltip() + "</p>")
+ + "</html>");
+ aaConEnabled.addActionListener(new ActionListener()
+ {
@Override
- public void menuSelected(MenuEvent arg0)
+ public void actionPerformed(ActionEvent arg0)
{
- wsmenu.setEnabled(!alignFrame.getViewport().getAlignment()
- .isNucleotide());
List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
.getCalcManager()
- .getRegisteredWorkersOfClass(AAConClient.class);
+ .getRegisteredWorkersOfClass(aaui.getClient());
if (aaconClient != null && aaconClient.size() > 0)
{
- aaConEnabled.setSelected(true);
+ removeCurrentAAConWorkerFor(aaui, alignFrame);
}
else
{
- aaConEnabled.setSelected(false);
+ buildCurrentAAConWorkerFor(aaui, alignFrame);
+
}
}
- @Override
- public void menuDeselected(MenuEvent arg0)
- {
- // TODO Auto-generated method stub
-
- }
+ });
+ wsmenu.add(aaConEnabled);
+ final JMenuItem modifyParams = new JMenuItem(aaui.getAAeditSettings());
+ modifyParams.setToolTipText("<html><p>"
+ + JvSwingUtils.wrapTooltip(aaui.getAAeditSettingsTooltip() + "</p>")
+ + "</html>");
+ modifyParams.addActionListener(new ActionListener()
+ {
@Override
- public void menuCanceled(MenuEvent arg0)
+ public void actionPerformed(ActionEvent arg0)
{
- // TODO Auto-generated method stub
-
+ showAAConAnnotationSettingsFor(aaui, alignFrame);
}
});
- aaConEnabled.setToolTipText("<html><p>"
- + JvSwingUtils.wrapTooltip(AAconToggleTooltip + "</p>")
- + "</html>");
- aaConEnabled.addActionListener(new ActionListener()
+ wsmenu.add(modifyParams);
+ wsmenu.addMenuListener(new MenuListener()
{
+
@Override
- public void actionPerformed(ActionEvent arg0)
+ public void menuSelected(MenuEvent arg0)
{
+ // TODO: refactor to the implementing class.
+ if (alignFrame.getViewport().getAlignment()
+ .isNucleotide() ? aaui.isNa() : aaui.isPr()) {
+ aaConEnabled.setEnabled(true);
+ modifyParams.setEnabled(true);
+ }
+ else {
+ aaConEnabled.setEnabled(false);
+ modifyParams.setEnabled(false);
+ }
List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
.getCalcManager()
- .getRegisteredWorkersOfClass(AAConClient.class);
+ .getRegisteredWorkersOfClass(aaui.getClient());
if (aaconClient != null && aaconClient.size() > 0)
{
- removeCurrentAAConWorkerFor(alignFrame);
+ aaConEnabled.setSelected(true);
}
else
{
- buildCurrentAAConWorkerFor(alignFrame);
-
+ aaConEnabled.setSelected(false);
}
}
- });
- wsmenu.add(aaConEnabled);
- JMenuItem modifyParams = new JMenuItem(AAeditSettings);
- modifyParams.setToolTipText("<html><p>"
- + JvSwingUtils.wrapTooltip(AAeditSettingsTooltip + "</p>")
- + "</html>");
- modifyParams.addActionListener(new ActionListener()
- {
+ @Override
+ public void menuDeselected(MenuEvent arg0)
+ {
+ // TODO Auto-generated method stub
+
+ }
@Override
- public void actionPerformed(ActionEvent arg0)
+ public void menuCanceled(MenuEvent arg0)
{
- showAAConAnnotationSettingsFor(alignFrame);
+ // TODO Auto-generated method stub
+
}
});
- wsmenu.add(modifyParams);
}
+ return true;
}
- private static void showAAConAnnotationSettingsFor(AlignFrame alignFrame)
+ private static void showAAConAnnotationSettingsFor(final AlignAnalysisUIText aaui, AlignFrame alignFrame)
{
/*
* preferred settings Whether AACon is automatically recalculated Which
*/
// could actually do a class search for this too
AAConSettings fave = (AAConSettings) alignFrame.getViewport()
- .getCalcIdSettingsFor(AAConCalcId);
+ .getCalcIdSettingsFor(aaui.getCalcId());
if (fave == null)
{
- fave = createDefaultAAConSettings();
+ fave = createDefaultAAConSettings(aaui);
}
new SequenceAnnotationWSClient(fave, alignFrame, true);
}
- private static void buildCurrentAAConWorkerFor(AlignFrame alignFrame)
+ private static void buildCurrentAAConWorkerFor(final AlignAnalysisUIText aaui, AlignFrame alignFrame)
{
- buildCurrentAAConWorkerFor(alignFrame, null);
+ buildCurrentAAConWorkerFor(aaui, alignFrame, null);
}
- private static void buildCurrentAAConWorkerFor(AlignFrame alignFrame,
+ private static void buildCurrentAAConWorkerFor(final AlignAnalysisUIText aaui, AlignFrame alignFrame,
Jws2Instance service)
{
/*
* AACon server to use What parameters to use
*/
AAConSettings fave = (AAConSettings) alignFrame.getViewport()
- .getCalcIdSettingsFor(AAConCalcId);
+ .getCalcIdSettingsFor(aaui.getCalcId());
if (fave == null)
{
- fave = createDefaultAAConSettings(service);
+ fave = createDefaultAAConSettings(aaui, service);
}
else
{
new SequenceAnnotationWSClient(fave, alignFrame, false);
}
- private static AAConSettings createDefaultAAConSettings()
+ private static AAConSettings createDefaultAAConSettings(AlignAnalysisUIText aaui)
{
- return createDefaultAAConSettings(null);
+ return createDefaultAAConSettings(aaui, null);
}
- private static AAConSettings createDefaultAAConSettings(
+ private static AAConSettings createDefaultAAConSettings(AlignAnalysisUIText aaui,
Jws2Instance service)
{
if (service != null)
{
// get the default service for AACon
service = Jws2Discoverer.getDiscoverer().getPreferredServiceFor(null,
- compbio.ws.client.Services.AAConWS.toString());
+ aaui.getServiceType());
}
if (service == null)
{
return new AAConSettings(true, service, null, null);
}
- private static void removeCurrentAAConWorkerFor(AlignFrame alignFrame)
+ private static void removeCurrentAAConWorkerFor(AlignAnalysisUIText aaui, AlignFrame alignFrame)
{
alignFrame.getViewport().getCalcManager()
- .removeRegisteredWorkersOfClass(AAConClient.class);
+ .removeRegisteredWorkersOfClass(aaui.getClient());
}
}