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);
38 // filter events if necessary
39 if (source instanceof AlignViewport)
42 && !_af.alignPanel.av.getSequenceSetId().equals(
43 ((AlignViewport) source).getSequenceSetId()))
47 jalview.appletgui.AlignmentPanel[] aps = jalview.appletgui.PaintRefresher
48 .getAssociatedPanels(setid = ((AlignViewport) source)
50 for (int a = 0; a < aps.length; a++)
52 System.out.println("Selection: testing source alignPanel : "
54 if (aps[a].av == source)
56 src = aps[a].alignFrame;
63 System.err.println("Unhandled selection source !");
66 String[] seqs = new String[]
68 String[] cols = new String[]
70 int strt = 0, end = (src == null) ? -1 : src.alignPanel.av
71 .getAlignment().getWidth();
72 if (seqsel != null && seqsel.getSize() > 0)
74 seqs = new String[seqsel.getSize()];
75 for (int i = 0; i < seqs.length; i++)
77 seqs[i] = seqsel.getSequenceAt(i).getName();
79 if (strt < seqsel.getStartRes())
81 strt = seqsel.getStartRes();
83 if (end==-1 || end > seqsel.getEndRes())
85 end = seqsel.getEndRes();
88 if (colsel != null && colsel.size() > 0)
92 end = colsel.getMax() + 1;
94 cols = new String[colsel.getSelected().size()];
96 for (int i = 0; i < cols.length; i++)
99 + (1 + ((Integer) colsel.getSelected().elementAt(i))
105 if (seqsel != null && seqsel.getSize() > 0)
107 // send a valid range, otherwise we send the empty selection
108 cols = new String[2];
109 cols[0] = "" + (1 + strt) + "-" + (1 + end);
114 System.err.println("Relaying selection to jsfunction:" + _listener);
115 executeJavascriptFunction( _listener,
117 { src, setid, jvlite.arrayToSeparatorList(seqs),
118 jvlite.arrayToSeparatorList(cols) });
119 } catch (Exception ex)
122 .println("Jalview Javascript exec error: Couldn't send selection message using function '"
124 ex.printStackTrace();
125 if (ex instanceof netscape.javascript.JSException)
127 System.err.println("Javascript Exception: "
128 + ((netscape.javascript.JSException) ex).getCause()
137 public AlignFrame getAlignFrame()
143 public String getListenerFunction()