merge commit
authorCharles Ofoegbu <tcnofoegbu@dundee.ac.uk>
Wed, 19 Nov 2014 12:20:50 +0000 (12:20 +0000)
committerCharles Ofoegbu <tcnofoegbu@dundee.ac.uk>
Wed, 19 Nov 2014 12:20:50 +0000 (12:20 +0000)
1  2 
src/jalview/ws/jws2/MsaWSClient.java

@@@ -21,9 -21,7 +21,9 @@@
  package jalview.ws.jws2;
  
  import jalview.datamodel.Alignment;
 +import jalview.datamodel.AlignmentI;
  import jalview.datamodel.AlignmentView;
 +import jalview.datamodel.SequenceI;
  import jalview.gui.AlignFrame;
  import jalview.gui.Desktop;
  import jalview.gui.JvSwingUtils;
@@@ -33,11 -31,14 +33,14 @@@ 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.JMenu;
  import javax.swing.JMenuItem;
  import javax.swing.JOptionPane;
+ import javax.swing.ToolTipManager;
  
  import compbio.data.msa.MsaWS;
  import compbio.metadata.Argument;
@@@ -106,20 -107,23 +109,23 @@@ public class MsaWSClient extends Jws2Cl
      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;
      }
              WsURL, wsInfo, alignFrame, WebServiceName, jobtitle, msa,
              submitGaps, preserveOrder, seqdataset);
      wsInfo.setthisService(msathread);
 +    if (isValidAlignment(alignFrame.getCurrentView().getAlignment()))
 +    {
 +
      msathread.start();
 +    }
 +  }
 +
 +  private boolean isValidAlignment(AlignmentI seqdataset)
 +  {
 +    String header = wsInfo.getInfoText()
 +            + "\nValidating submited Alignment...";
 +    wsInfo.setInfoText(header);
 +    int validSeqCount = 0;
 +    List<SequenceI> seqs = seqdataset.getSequences();
 +    if (seqs.size() < 2)
 +    {
 +      wsInfo.setInfoText(header
 +              + "\nA minimum of two sequences is required to perform this operation");
 +      return false;
 +    }
 +
 +    for (SequenceI seq : seqs)
 +    {
 +
 +      if (seq.getSequenceAsString().matches(
 +              "([(a-zA-Z?)(-?)(.?)]+)?[a-zA-Z]([(a-zA-Z?)(-?)(.?)]+)?"))
 +      {
 +        ++validSeqCount;
 +      }
 +      if (validSeqCount > 1)
 +      {
 +        wsInfo.setInfoText(header
 +                + "\nAlignment sequences was successfully validated");
 +        return true;
 +      }
 +    }
 +
 +    wsInfo.setInfoText(header
 +            + "\nA minimum of two sequences with at least one non-gap character in each sequence is required to perform this operation");
 +    return false;
    }
  
 +  public static void main(String[] args)
 +  {
 +    System.out
 +            .println("A"
 +                    .matches("([(a-zA-Z?)(-?)(.?)]+)?[a-zA-Z]([(a-zA-Z?)(-?)(.?)]+)?"));
 +  }
 +
 +
 +
    protected String getServiceActionKey()
    {
      return "MsaWS";
                    "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(JvSwingUtils.wrapTooltip(true, "<p><strong>"
-                             + (preset.isModifiable() ? MessageManager.getString("label.user_preset")
-                                     : MessageManager.getString("label.service_preset")) + "</strong><br/>"
-                             + preset.getDescription() + "</p>"));
+             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)