1 package jalview.javascript;
3 import java.util.ArrayList;
4 import java.util.Enumeration;
6 import jalview.appletgui.AlignFrame;
7 import jalview.appletgui.AlignViewport;
8 import jalview.bin.JalviewLite;
9 import jalview.datamodel.ColumnSelection;
10 import jalview.datamodel.SequenceGroup;
11 import jalview.structure.SelectionSource;
12 import netscape.javascript.JSObject;
14 public class JsSelectionSender implements
15 jalview.structure.SelectionListener, JsCallBack
23 public JsSelectionSender(JalviewLite jvlite, AlignFrame af,
32 public void selection(SequenceGroup seqsel, ColumnSelection colsel,
33 SelectionSource source)
35 // System.err.println("Testing selection event relay to jsfunction:"+_listener);
41 // filter events if necessary
42 if (source instanceof AlignViewport)
45 && !_af.alignPanel.av.getSequenceSetId().equals(
46 ((AlignViewport) source).getSequenceSetId()))
50 jalview.appletgui.AlignmentPanel[] aps = jalview.appletgui.PaintRefresher
51 .getAssociatedPanels(setid = ((AlignViewport) source)
53 for (int a = 0; a < aps.length; a++)
55 if (aps[a].av == source)
57 src = aps[a].alignFrame;
64 System.err.println("Unhandled selection source !");
67 JSObject jsoWindow = JSObject.getWindow(jvlite);
68 String[] seqs = new String[]
70 String[] cols = new String[]
72 int strt = 0, end = src.alignPanel.av.getAlignment().getWidth();
73 if (seqsel != null && seqsel.getSize() > 0)
75 seqs = new String[seqsel.getSize()];
76 for (int i = 0; i < seqs.length; i++)
78 seqs[i] = seqsel.getSequenceAt(i).getName();
80 if (strt < seqsel.getStartRes())
82 strt = seqsel.getStartRes();
84 if (end > seqsel.getEndRes())
86 end = seqsel.getEndRes();
89 if (colsel != null && colsel.size() > 0)
91 cols = new String[colsel.getSelected().size()];
93 for (int i = 0; i < cols.length; i++)
95 cols[i] = ""+(1+((Integer)colsel.getSelected().elementAt(i)).intValue());
100 if (seqsel != null && seqsel.getSize() > 0)
102 // send a valid range, otherwise we send the empty selection
103 cols = new String[2];
104 cols[0] = "" + (1 + strt) + "-" + (1 + end);
109 System.err.println("Relaying selection to jsfunction:" + _listener);
113 { src, setid, jvlite.arrayToSeparatorList(seqs),
114 jvlite.arrayToSeparatorList(cols) });
115 } catch (Exception ex)
118 .println("Jalview Javascript exec error: Couldn't send selection message using function '"
120 ex.printStackTrace();
125 public AlignFrame getAlignFrame()
131 public String getListenerFunction()