/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
- * 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 = "";
- String viewid = "";
- 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.size() > 0)
- {
- 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());
- }
- }
- 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)
}
}
+
}
@Override