JAL-2446 merged to spike branch
[jalview.git] / src / jalview / javascript / JsSelectionSender.java
index d948363..fdf8b58 100644 (file)
@@ -1,13 +1,31 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * 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.javascript;
 
-import java.net.URL;
 import jalview.appletgui.AlignFrame;
-import jalview.appletgui.AlignViewport;
 import jalview.bin.JalviewLite;
 import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.HiddenColumns;
 import jalview.datamodel.SequenceGroup;
 import jalview.structure.SelectionSource;
-import netscape.javascript.JSObject;
 
 public class JsSelectionSender extends JSFunctionExec implements
         jalview.structure.SelectionListener, JsCallBack
@@ -27,46 +45,25 @@ public class JsSelectionSender extends JSFunctionExec implements
 
   @Override
   public void selection(SequenceGroup seqsel, ColumnSelection colsel,
-          SelectionSource source)
+          HiddenColumns hidden, SelectionSource source)
   {
     // System.err.println("Testing selection event relay to jsfunction:"+_listener);
     try
     {
       String setid = "";
-      String viewid = "";
       AlignFrame src = _af;
-      // filter events if necessary
-      if (source instanceof AlignViewport)
+      if (source != null)
       {
-        if (_af != null
-                && !_af.alignPanel.av.getSequenceSetId().equals(
-                        ((AlignViewport) source).getSequenceSetId()))
+        if (source instanceof jalview.appletgui.AlignViewport
+                && ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame.viewport == source)
         {
-          return;
-        }
-        jalview.appletgui.AlignmentPanel[] aps = jalview.appletgui.PaintRefresher
-                .getAssociatedPanels(setid = ((AlignViewport) source)
-                        .getSequenceSetId());
-        for (int a = 0; a < aps.length; a++)
-        {
-          System.out.println("Selection: testing source alignPanel : "
-                  + aps[a].getName());
-          if (aps[a].av == source)
-          {
-            src = aps[a].alignFrame;
-          }
+          // should be valid if it just generated an event!
+          src = ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame;
+
         }
       }
-      else
-      {
-        // unhandled!
-        System.err.println("Unhandled selection source !");
-        return;
-      }
-      String[] seqs = new String[]
-      {};
-      String[] cols = new String[]
-      {};
+      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)
@@ -80,24 +77,21 @@ public class JsSelectionSender extends JSFunctionExec implements
         {
           strt = seqsel.getStartRes();
         }
-        if (end==-1 || end > seqsel.getEndRes())
+        if (end == -1 || end > seqsel.getEndRes())
         {
           end = seqsel.getEndRes();
         }
       }
-      if (colsel != null && colsel.size() > 0)
+      if (colsel != null && !colsel.isEmpty())
       {
         if (end == -1)
         {
           end = colsel.getMax() + 1;
         }
         cols = new String[colsel.getSelected().size()];
-        int d = 0, r = -1;
         for (int i = 0; i < cols.length; i++)
         {
-          cols[i] = ""
-                  + (1 + ((Integer) colsel.getSelected().elementAt(i))
-                          .intValue());
+          cols[i] = "" + (1 + colsel.getSelected().get(i).intValue());
         }
       }
       else
@@ -112,10 +106,9 @@ public class JsSelectionSender extends JSFunctionExec implements
 
       }
       System.err.println("Relaying selection to jsfunction:" + _listener);
-      executeJavascriptFunction( _listener,
-                new Object[]
-                { src, setid, jvlite.arrayToSeparatorList(seqs),
-                    jvlite.arrayToSeparatorList(cols) });
+      executeJavascriptFunction(_listener,
+              new Object[] { src, setid, jvlite.arrayToSeparatorList(seqs),
+                  jvlite.arrayToSeparatorList(cols) });
     } catch (Exception ex)
     {
       System.err
@@ -132,7 +125,6 @@ public class JsSelectionSender extends JSFunctionExec implements
     }
   }
 
-
   @Override
   public AlignFrame getAlignFrame()
   {