Jalview-JS/JAL-3253-applet adds AlignFrameI empty interface to allow
[jalview.git] / src / jalview / javascript / JsSelectionSender.java
index c2a963e..56efe70 100644 (file)
@@ -20,8 +20,8 @@
  */
 package jalview.javascript;
 
+import jalview.api.JalviewApp;
 import jalview.appletgui.AlignFrame;
-import jalview.bin.JalviewLite;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.HiddenColumns;
 import jalview.datamodel.SequenceGroup;
@@ -35,10 +35,10 @@ public class JsSelectionSender extends JSFunctionExec
 
   String _listener;
 
-  public JsSelectionSender(JalviewLite jvlite, AlignFrame af,
-          String listener)
+  public JsSelectionSender(JalviewApp jvlite, AlignFrame af,
+          String listener, boolean debug)
   {
-    super(jvlite);
+    super(jvlite, debug);
     _af = af;
     _listener = listener;
   }
@@ -47,70 +47,13 @@ public class JsSelectionSender extends JSFunctionExec
   public void selection(SequenceGroup seqsel, ColumnSelection colsel,
           HiddenColumns hidden, SelectionSource source)
   {
-    // System.err.println("Testing selection event relay to
-    // jsfunction:"+_listener);
+    Object[] info = jvlite.getSelectionForListener(seqsel, colsel, hidden, source, _af);
     try
     {
-      String setid = "";
-      AlignFrame src = _af;
-      if (source != null)
-      {
-        if (source instanceof jalview.appletgui.AlignViewport
-                && ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame.viewport == source)
-        {
-          // should be valid if it just generated an event!
-          src = ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame;
 
-        }
-      }
-      String[] seqs = new String[] {};
-      String[] cols = new String[] {};
-      int strt = 0, end = (src == null) ? -1
-              : src.alignPanel.av.getAlignment().getWidth();
-      if (seqsel != null && seqsel.getSize() > 0)
-      {
-        seqs = new String[seqsel.getSize()];
-        for (int i = 0; i < seqs.length; i++)
-        {
-          seqs[i] = seqsel.getSequenceAt(i).getName();
-        }
-        if (strt < seqsel.getStartRes())
-        {
-          strt = seqsel.getStartRes();
-        }
-        if (end == -1 || end > seqsel.getEndRes())
-        {
-          end = seqsel.getEndRes();
-        }
-      }
-      if (colsel != null && !colsel.isEmpty())
-      {
-        if (end == -1)
-        {
-          end = colsel.getMax() + 1;
-        }
-        cols = new String[colsel.getSelected().size()];
-        for (int i = 0; i < cols.length; i++)
-        {
-          cols[i] = "" + (1 + colsel.getSelected().get(i).intValue());
-        }
-      }
-      else
-      {
-        if (seqsel != null && seqsel.getSize() > 0)
-        {
-          // send a valid range, otherwise we send the empty selection
-          cols = new String[2];
-          cols[0] = "" + (1 + strt) + "-" + (1 + end);
-        }
-        ;
-
-      }
       System.err.println("Relaying selection to jsfunction:" + _listener);
-      executeJavascriptFunction(_listener,
-              new Object[]
-              { src, setid, jvlite.arrayToSeparatorList(seqs),
-                  jvlite.arrayToSeparatorList(cols) });
+      executeJavascriptFunction(_listener, info);
+
     } catch (Exception ex)
     {
       System.err.println(
@@ -125,6 +68,7 @@ public class JsSelectionSender extends JSFunctionExec
       }
 
     }
+
   }
 
   @Override