*/
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;
String _listener;
- public JsSelectionSender(JalviewApp jvlite, AlignFrame af,
- String listener, boolean debug)
+ public JsSelectionSender(JalviewLite jvlite, AlignFrame af,
+ String listener)
{
- super(jvlite, debug);
+ super(jvlite);
_af = af;
_listener = listener;
}
public void selection(SequenceGroup seqsel, ColumnSelection colsel,
HiddenColumns hidden, SelectionSource source)
{
- Object[] info = jvlite.getSelectionForListener(seqsel, colsel, hidden, source, _af);
+ // System.err.println("Testing selection event relay to
+ // jsfunction:"+_listener);
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;
- System.err.println("Relaying selection to jsfunction:" + _listener);
- executeJavascriptFunction(_listener, info);
+ }
+ }
+ 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) });
} catch (Exception ex)
{
System.err.println(
}
}
-
}
@Override