*/
package jalview.ws.jws2;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentView;
+import jalview.datamodel.SequenceI;
+import jalview.gui.AlignFrame;
+import jalview.gui.Desktop;
+import jalview.gui.JvSwingUtils;
+import jalview.util.MessageManager;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.WsParamSetI;
+
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
import java.util.List;
-import javax.swing.*;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.ToolTipManager;
-import jalview.datamodel.*;
-import jalview.gui.*;
import compbio.data.msa.MsaWS;
import compbio.metadata.Argument;
-import jalview.util.MessageManager;
-import jalview.ws.jws2.jabaws2.Jws2Instance;
-import jalview.ws.params.WsParamSetI;
/**
* DOCUMENT ME!
if (!(sh.service instanceof MsaWS))
{
// redundant at mo - but may change
- JOptionPane
- .showMessageDialog(
- Desktop.desktop,
- MessageManager.formatMessage("label.service_called_is_not_msa_service", new String[]{sh.serviceType}),
- MessageManager.getString("label.internal_jalview_error"), JOptionPane.WARNING_MESSAGE);
+ JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ .formatMessage("label.service_called_is_not_msa_service",
+ new String[]
+ { sh.serviceType }), MessageManager
+ .getString("label.internal_jalview_error"),
+ JOptionPane.WARNING_MESSAGE);
return;
}
server = (MsaWS) sh.service;
if ((wsInfo = setWebService(sh, false)) == null)
{
- JOptionPane.showMessageDialog(Desktop.desktop,
- MessageManager.formatMessage("label.msa_service_is_unknown", new String[]{sh.serviceType}),
- MessageManager.getString("label.internal_jalview_error"), JOptionPane.WARNING_MESSAGE);
+ JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ .formatMessage("label.msa_service_is_unknown", new String[]
+ { sh.serviceType }), MessageManager
+ .getString("label.internal_jalview_error"),
+ JOptionPane.WARNING_MESSAGE);
return;
}
+
startMsaWSClient(altitle, msa, submitGaps, preserveOrder, seqdataset);
+
}
public MsaWSClient()
WsURL, wsInfo, alignFrame, WebServiceName, jobtitle, msa,
submitGaps, preserveOrder, seqdataset);
wsInfo.setthisService(msathread);
+
msathread.start();
+
+ }
+
+ private boolean isValidAlignment(AlignmentView av)
+ {
+ int validSeqCount = 0;
+ List<SequenceI> seqs = av.getVisibleAlignment('c').getSequences(); // .getSequences();
+ if (seqs.size() < 2)
+ {
+ JOptionPane
+ .showMessageDialog(
+ alignFrame,
+ "A minimum of two sequences is required to perform this operation",
+ "Invalid selection", JOptionPane.INFORMATION_MESSAGE);
+
+ return false;
+ }
+
+ for (SequenceI seq : seqs)
+ {
+
+ if (seq.getSequenceAsString().matches("(-*[a-zA-Z]-*){3}[a-zA-Z-]*"))
+ {
+ ++validSeqCount;
+ }
+ if (validSeqCount > 1)
+ {
+ return true;
+ }
+ }
+
+ JOptionPane
+ .showMessageDialog(
+ alignFrame,
+ "All selected sequence for this job must have a minimum of \nthree non-gap character to perform this operation",
+ "Invalid selection", JOptionPane.INFORMATION_MESSAGE);
+
+ return false;
}
+ public static void main(String[] args)
+ {
+ System.out.println("A".matches("(-*[a-zA-Z]-*){1}[a-zA-Z-]*"));
+ }
+
+
+
protected String getServiceActionKey()
{
return "MsaWS";
public void actionPerformed(ActionEvent e)
{
AlignmentView msa = alignFrame.gatherSequencesForAlignment();
+
+ if (msa != null && isValidAlignment(msa))
+ {
new MsaWSClient(service, alignFrame.getTitle(), msa, withGaps,
true, alignFrame.getViewport().getAlignment()
.getDataset(), alignFrame);
+ }
}
});
public void actionPerformed(ActionEvent e)
{
AlignmentView msa = alignFrame.gatherSequencesForAlignment();
+
+ if (msa != null && isValidAlignment(msa))
+ {
new MsaWSClient(service, null, null, true, alignFrame
.getTitle(), msa, withGaps, true, alignFrame
.getViewport().getAlignment().getDataset(), alignFrame);
+ }
}
});
"label.run_with_preset_params", new String[]
{ calcName }));
+ final int showToolTipFor = ToolTipManager.sharedInstance()
+ .getDismissDelay();
for (final WsParamSetI preset : presets)
{
final JMenuItem methodR = new JMenuItem(preset.getName());
- methodR.setToolTipText("<html><p>"
- + JvSwingUtils.wrapTooltip("<strong>"
- + (preset.isModifiable() ? MessageManager.getString("label.user_preset")
- : MessageManager.getString("label.service_preset")) + "</strong><br/>"
- + preset.getDescription() + "</p>") + "</html>");
+ final int QUICK_TOOLTIP = 1500;
+ // JAL-1582 shorten tooltip display time in these menu items as
+ // they can obscure other options
+ methodR.addMouseListener(new MouseAdapter()
+ {
+ @Override
+ public void mouseEntered(MouseEvent e)
+ {
+ ToolTipManager.sharedInstance().setDismissDelay(
+ QUICK_TOOLTIP);
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e)
+ {
+ ToolTipManager.sharedInstance().setDismissDelay(showToolTipFor);
+ }
+
+ });
+ methodR.setToolTipText(JvSwingUtils.wrapTooltip(
+ true,
+ "<p><strong>"
+ + (preset.isModifiable() ? MessageManager
+ .getString("label.user_preset")
+ : MessageManager
+ .getString("label.service_preset"))
+ + "</strong><br/>" + preset.getDescription()
+ + "</p>"));
methodR.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
AlignmentView msa = alignFrame
.gatherSequencesForAlignment();
+
+ if (msa != null && isValidAlignment(msa))
+ {
new MsaWSClient(service, preset, alignFrame.getTitle(),
msa, false, true, alignFrame.getViewport()
.getAlignment().getDataset(), alignFrame);
+ }
}