1 package jalview.javascript;
4 import jalview.appletgui.AlignFrame;
5 import jalview.appletgui.AlignViewport;
6 import jalview.bin.JalviewLite;
7 import jalview.datamodel.ColumnSelection;
8 import jalview.datamodel.SequenceGroup;
9 import jalview.structure.SelectionSource;
10 import netscape.javascript.JSObject;
12 public class JsSelectionSender extends JSFunctionExec implements
13 jalview.structure.SelectionListener, JsCallBack
20 public JsSelectionSender(JalviewLite jvlite, AlignFrame af,
29 public void selection(SequenceGroup seqsel, ColumnSelection colsel,
30 SelectionSource source)
32 // System.err.println("Testing selection event relay to jsfunction:"+_listener);
40 if (source instanceof jalview.appletgui.AlignViewport
41 && ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame.viewport == source)
43 // should be valid if it just generated an event!
44 src = ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame;
48 String[] seqs = new String[]
50 String[] cols = new String[]
52 int strt = 0, end = (src == null) ? -1 : src.alignPanel.av
53 .getAlignment().getWidth();
54 if (seqsel != null && seqsel.getSize() > 0)
56 seqs = new String[seqsel.getSize()];
57 for (int i = 0; i < seqs.length; i++)
59 seqs[i] = seqsel.getSequenceAt(i).getName();
61 if (strt < seqsel.getStartRes())
63 strt = seqsel.getStartRes();
65 if (end==-1 || end > seqsel.getEndRes())
67 end = seqsel.getEndRes();
70 if (colsel != null && colsel.size() > 0)
74 end = colsel.getMax() + 1;
76 cols = new String[colsel.getSelected().size()];
78 for (int i = 0; i < cols.length; i++)
81 + (1 + ((Integer) colsel.getSelected().elementAt(i))
87 if (seqsel != null && seqsel.getSize() > 0)
89 // send a valid range, otherwise we send the empty selection
91 cols[0] = "" + (1 + strt) + "-" + (1 + end);
96 System.err.println("Relaying selection to jsfunction:" + _listener);
97 executeJavascriptFunction( _listener,
99 { src, setid, jvlite.arrayToSeparatorList(seqs),
100 jvlite.arrayToSeparatorList(cols) });
101 } catch (Exception ex)
104 .println("Jalview Javascript exec error: Couldn't send selection message using function '"
106 ex.printStackTrace();
107 if (ex instanceof netscape.javascript.JSException)
109 System.err.println("Javascript Exception: "
110 + ((netscape.javascript.JSException) ex).getCause()
119 public AlignFrame getAlignFrame()
125 public String getListenerFunction()