Jalview-JS/JAL-3253-applet update for core_jalview
[jalview.git] / src / jalview / javascript / JsSelectionSender.java
index b025460..56efe70 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2)
- * Copyright (C) 2015 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 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;
 import jalview.structure.SelectionSource;
 
-public class JsSelectionSender extends JSFunctionExec implements
-        jalview.structure.SelectionListener, JsCallBack
+public class JsSelectionSender extends JSFunctionExec
+        implements jalview.structure.SelectionListener, JsCallBack
 {
 
   AlignFrame _af;
 
   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;
   }
 
   @Override
   public void selection(SequenceGroup seqsel, ColumnSelection colsel,
-          SelectionSource source)
+          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("Jalview Javascript exec error: Couldn't send selection message using function '"
+      System.err.println(
+              "Jalview Javascript exec error: Couldn't send selection message using function '"
                       + _listener + "'");
       ex.printStackTrace();
       if (ex instanceof netscape.javascript.JSException)
@@ -122,6 +68,7 @@ public class JsSelectionSender extends JSFunctionExec implements
       }
 
     }
+
   }
 
   @Override